Amazon SNS - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SNS

Amazon SNS 可讓您建立標準和 FIFO 主題。主題用於實作發佈/訂閱 (pub/sub) 架構。Amazon SNS 支援各種訂閱類型,包括電子郵件、SMS (假設您已設定起始身分,例如免付費電話號碼或 10 位數長碼)、HTTP(S) 端點和 SQS 佇列。訂閱者必須確認 SNS 主題的最終使用者訂閱,例如電子郵件訊息和簡訊。Amazon SNS 可讓服務廣泛散發,這表示單一訊息可以傳遞給可能大量的訂閱者。SNS 標準主題的預設限制為 1,250 萬個訂閱。

在微服務環境中,SNS 主題適用於從發佈者解耦訊息路由和交付邏輯。這可以透過使用主題篩選條件來實作。概念上,主題篩選條件與 Amazon EventBridge 規則略有相似,但它們是為每個訂閱者設定的,而不是從集中位置提供。例如,假設您有:

  • Order 服務,可處理訂單。

  • 履行服務,可處理訂單履行。

  • 忠誠度服務,可授予會員訂單的忠誠度點數。

當訂單已準備好履行時,它會發佈訊息到主題。Fulfillment 服務會訂閱主題,但不會套用篩選條件,因為它想要了解所有訂單。假設您有一個忠誠度服務,該服務負責在成員下訂單時將點數授予他們。不過,並非所有訂單都是由成員下單。忠誠度服務會訂閱主題,但會實作訂閱篩選條件來檢查屬性,指出訂單是針對成員還是訪客。

假設系統收到最終使用者的付款請求,如下圖所示。在這種情況下,多個下游系統需要知道已提出請求,才能採取各種動作。當您使用 Amazon SNS 時,付款會發佈至 SNS 主題,而 Lambda 函數會訂閱主題以更新客戶和銷售資料庫。此外,電子郵件訂閱 (必須由客戶確認) 會使用訂閱篩選條件傳送電子郵件確認給客戶。

在微服務中傳送訊息的 Amazon SNS 程序流程。

指引

本節中針對 Amazon SNS 所述的部分功能與事件匯流排所提供的功能重疊,例如 EventBridge。考慮在以下情況下使用 Amazon SNS:

  • 您將有大量訂閱者加入主題。

  • 您想要使用 EventBridge 原生不支援的訂閱類型 (例如電子郵件或簡訊)。

  • 訂閱者應該能夠判斷其訂閱篩選條件。

  • 您需要按順序交付給訂閱者 (每個訊息群組)。

如果您有許多主題,而且訂閱和篩選條件用於在微服務之間路由訊息,則 EventBridge 可能是更好的選擇。