使用 EventBridge 的事件導向樣式

在 AWS 上部署應用程式

Dunieski Otano

Amazon Web Services Solutions Architect

一筆訂單,四種反應

  • 一筆訂單須傳達至帳務、出貨、分析、電子郵件
  • 直接呼叫四個服務脆弱又緩慢
  • 一個事件可向外擴散到每個消費者

一個事件自中心主題向多個下游服務並行擴散

在 AWS 上部署應用程式

選對訊息服務

AWS 訊息服務 2x2:SQS 佇列的生產者-消費者流程、SNS 發佈/訂閱對多訂閱者擴散、EventBridge 事件匯流排依內容路由、Kinesis 有序分片與重播

  • SQS:單一佇列、單一消費者群組、至少一次投遞
  • SNS:發佈/訂閱,將訊息推送給多個訂閱者
  • EventBridge:依事件內容路由到多個目標
  • Kinesis Data Streams:有序、可重播的串流
在 AWS 上部署應用程式

擴散(fanout)樣式

  • 一個事件需同時抵達多個消費者
  • 發佈到一個 SNS topic
  • 每個 SQS queue 訂閱該 topic
  • 各消費者各取一份,彼此解耦

SNS 到 SQS 的擴散樣式:一個 SNS topic 發佈到多個 SQS 佇列,每個佇列獨立供應自己的消費者,各自節奏處理

在 AWS 上部署應用程式

過濾,讓消費者只拿所需

  • 無過濾時,每個訂閱者會收所有事件
  • SNS 訂閱過濾原則:依訊息屬性過濾
  • EventBridge 內容過濾:依事件欄位比對
  • 各消費者僅接收相關事件

SNS 訂閱過濾與 EventBridge 內容過濾:各消費者只接收符合其過濾規則的事件,減少不必要處理與成本

在 AWS 上部署應用程式

使用 EventBridge 路由

EventBridge 路由圖:事件匯流排接收多來源事件,規則比對事件樣式,符合者路由到 Lambda、SQS 與其他目標服務

  • Event bus:接收多來源的事件
  • Rule:比對特定事件的樣式
  • Target:符合事件的送達位置
  • 一個事件可路由到多個目標
在 AWS 上部署應用程式

使用 Kinesis Data Streams 串流

  • 連續、即時 的記錄串流
    • 分片內記錄有序
    • 可重播:消費者可自任一點重讀
    • 多個消費者可獨立讀取同一串流
    • 用於點擊流、遙測、高吞吐資料

Kinesis Data Streams 架構:生產者將有序記錄寫入編號分片,三個消費者在不同位置獨立讀取,帶有回捲箭頭顯示重播能力

在 AWS 上部署應用程式

Lambda 作為事件消費者

  • Lambda 可由 SQS、SNS、EventBridge、Kinesis 觸發
  • Event source mapping 代你輪詢 SQS 與 Kinesis
  • SNS 與 EventBridge 會推送事件到 Lambda
  • 近即時處理,無需管理伺服器

Lambda 由四種事件來源觸發:event source mapping 批次輪詢 SQS 與 Kinesis,而 SNS 與 EventBridge 直接推送事件到 Lambda

在 AWS 上部署應用程式

一起來練習吧!

在 AWS 上部署應用程式

Preparing Video For Download...