如何设置AWS SNS和SQS以实现高可用性? [英] How to setup AWS SNS and SQS for high availability?

查看:14
本文介绍了如何设置AWS SNS和SQS以实现高可用性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SNS问题

我目前正在为SNS使用pythonboto3库(例如,创建主题、订阅主题、发送SNS到主题)。当我使用ResourceClient时,我必须指定一个区域(例如‘us-west-2’、‘us-East-1’)。我没有看到任何用于处理区域故障转移的内置选项。我的问题是,您如何设置AWS SNS和SQS以实现高可用性/区域故障转移?

import boto3

client = boto3.client('sns', region_name='us-west-2')
response = client.create_topic(Name='my_new_topic')
client.subscribe(TopicArn='arn:aws:sns:us-west-2:123456789:some-topic', Protocol='HTTP', Endpoint='Some-HTTP-Endpoint')

关于SNS解决方案的思考

我想检查一下客户的反应。例如,下面是成功的client.create_topic()的响应。

{'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'adbb58ef-9047-5d44-834d-04a41599eb2b'}, u'TopicArn': 'arn:aws:sns:us-west-2:123456789:some-topic'}    

如果请求不成功,我可以重试X次,然后再尝试新的region_name,但此方法似乎非常麻烦(因为它总是尝试先尝试关闭的区域,并且需要不断切换到新客户端)。

SQS问题

如果上述操作成功(我们可以跨区域处理SNS),现在我将需要读取多个SQS队列(同样使用似乎是循环遍历不同区域的客户端的老套解决方案)。

推荐答案

Amazon SNS和SQS是地区性服务。它们没有内置的多地域可用性方法。如果某个区域出现故障,并且您无法访问您的主题或队列,则无法使用其他区域访问这些相同的主题/队列。

也没有任何以多区域方式处理它们的标准方法。这实际上取决于您的应用程序的工作方式。

一种方法:

  • 写入者-写入一个区域,如果失败,请写入另一个区域。
  • 读取器-从多个区域的多个队列读取。

另一种方法:

  • 写入者-写入多个主题/队列,确保邮件到达某个位置。
  • 读取器-从多个队列读取,平等对待所有队列,您将需要管理邮件重复。

这篇关于如何设置AWS SNS和SQS以实现高可用性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆