[英]How to setup AWS SNS and SQS for high availability?
我目前正在為SNS使用python boto3庫(例如,創建主題,訂閱主題,向主題發送SNS)。 當我使用資源或客戶端時 ,我必須指定一個區域(例如'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')
我在考慮檢查客戶的反應。 例如,以下是成功的client.create_topic()
的響應。
{'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'adbb58ef-9047-5d44-834d-04a41599eb2b'}, u'TopicArn': 'arn:aws:sns:us-west-2:123456789:some-topic'}
如果請求沒有成功,我可以在嘗試新的region_name
之前重試X次,但是這種方法看起來真的很麻煩(因為它總是會嘗試嘗試首先關閉的區域,並且需要繼續切換到新的客戶端)。
如果以上是成功的(我們可以跨地區處理SNS),現在我需要讀取多個SQS隊列(再次使用看似循環通過不同區域的客戶端的hacky解決方案)。
Amazon SNS和SQS是區域服務。 它們沒有內置的多區域可用性方法。 如果某個區域出現故障且您無法訪問您的主題或隊列,則無法使用其他區域訪問這些相同的主題/隊列。
還沒有任何標准方法可以以多區域方式處理它們。 這實際上取決於您的應用程序的工作方式。
一種方法:
另一種方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.