本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Pub/sub 模式
當平台成長時,不同的微服務可能很難在不建立相互依存性的情況下進行互動。發佈/訂閱 (pub/sub) 模式可在多個 AWS 服務之間提供非同步通訊,例如 Amazon SQS、Lambda 或 Amazon Simple Storage Service (Amazon S3),而無需建立相互依存性。在此模式中,微服務會將事件發佈為訂閱者可接聽的頻道中的訊息。例如,工廠可以使用 pub/sub 模式讓設備將問題或失敗發佈到頻道,然後訂閱者可以顯示和記錄這些設備問題。
如果出現下列情況,您應該考慮使用此模式:
-
您有事件驅動的架構。
-
您可以啟用鬆散耦合的架構。
-
在回應回呼叫系統之前,您不需要完成交易的所有操作部分 (某些操作可以是非同步的)。
-
您需要擴展到超出傳統資料中心功能的磁碟區。此可擴展性層級主要是由於平行操作、訊息快取、以樹為基礎的路由,以及建置在 pub/sub 模型中的其他功能。
使用此模式有幾個缺點。例如,pub/sub 模式通常不能保證將訊息交付給所有訂閱者類型,但 Amazon Simple Notification Service (Amazon SNS) 等特定服務可以提供確切一次交付給某些訂閱者子集。另一個缺點是,發佈者可以假設訂閱者正在接聽頻道,但事實上他們不是。
使用案例
在此使用案例中,SNS 主題用於將事件發佈至保險系統中的數個相依微服務。客戶每月付款後,必須在「客戶」或「銷售」等子系統中更新資訊,並且必須將電子郵件連同付款確認傳送給客戶。您可以使用 Amazon SNS 或 Amazon EventBridge 實作此模式。
EventBridge 會篩選多個訂閱者之間的事件。EventBridge 實作提供下列兩個選項:
-
傳送具有不同事件類型的三個事件。遠端目標會根據事件規則來挑選它們。
-
傳送一則訊息,其中有三個 事件規則會接聽相同的事件類型。在叫用特定目標之前,會篩選掉不必要的資料。
Amazon SNS 實作
下圖顯示如何使用 Amazon SNS 實作 pub/sub 模式。使用者付款後,「付款」Lambda 函數會將 SNS 訊息傳送至「付款」SNS 主題。此 SNS 主題有三個訂閱者,這些訂閱者會收到訊息的副本並進行處理。

Amazon EventBridge 實作
在下圖中,EventBridge 用於建置 pub/sub 模式的版本,其中使用事件規則定義訂閱者。使用者付款後,「付款」Lambda 函數會根據指向不同目標的三個不同規則的自訂結構描述,使用預設事件匯流排將訊息傳送至 EventBridge。每個微服務都會處理訊息並執行必要的動作。
