簡體   English   中英

如何設置AWS SNS和SQS以實現高可用性?

[英]How to setup AWS SNS and SQS for high availability?

SNS問題

我目前正在為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')

對SNS解決方案的思考

我在考慮檢查客戶的反應。 例如,以下是成功的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次,但是這種方法看起來真的很麻煩(因為它總是會嘗試嘗試首先關閉的區域,並且需要繼續切換到新的客戶端)。

SQS問題

如果以上是成功的(我們可以跨地區處理SNS),現在我需要讀取多個SQS隊列(再次使用看似循環通過不同區域的客戶端的hacky解決方案)。

Amazon SNS和SQS是區域服務。 它們沒有內置的多區域可用性方法。 如果某個區域出現故障且您無法訪問您的主題或隊列,則無法使用其他區域訪問這些相同的主題/隊列。

還沒有任何標准方法可以以多區域方式處理它們。 這實際上取決於您的應用程序的工作方式。

一種方法:

  • 寫作者 - 寫入一個區域,如果失敗,寫入另一個區域。
  • 讀者 - 從多個區域的多個隊列中讀取。

另一種方法:

  • 寫作者 - 寫入多個主題/隊列,確保消息到達某個地方。
  • 讀者 - 從多個隊列中讀取,平等對待所有人,您將需要管理郵件復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM