事件驅動架構已成為現代微服務設計的關鍵模式,藉由事件的非同步通訊來解耦服務,提升系統彈性和可擴充套件性。Amazon EventBridge 作為全託管的事件匯流排服務,簡化了事件的產生、處理和路由,並與 AWS 生態系緊密整合,成為建構事件驅動架構的利器。理解 EventBridge 的核心概念,如事件匯流排、規則、篩選模式及與 Lambda、SNS、SQS 等服務的整合方式,是構建高效穩定的分散式系統的關鍵。

事件驅動架構與反應式服務

在設計微服務時,事件驅動架構是一種重要的設計模式。它使用事件來實作微服務之間的非同步通訊,從而實作微服務之間的解耦。事件驅動計算是事件驅動架構的實作,它使得系統可以根據事件的發生而進行反應。

事件驅動架構的核心概念

  • 事件:事件是事件驅動架構中的核心概念。它代表了一個發生在系統中的事情,例如使用者訂閱了一個頻道。
  • 事件攜帶者:事件攜帶者是一種服務,它負責接收事件並將其傳送給其他服務。
  • 事件生產者:事件生產者是一種服務,它負責產生事件並將其傳送給事件攜帶者。
  • 事件消費者:事件消費者是一種服務,它負責接收事件並對其進行反應。

反應式服務

反應式服務是一種設計模式,它強調服務之間的解耦和非同步通訊。反應式服務的特點包括:

  • 解耦:反應式服務之間是解耦的,這意味著它們不需要直接相互通訊。
  • 非同步通訊:反應式服務之間使用非同步通訊,這意味著它們不需要等待對方的回應。
  • 可擴充套件性:反應式服務可以根據需要進行擴充套件。
  • 容錯性:反應式服務可以自動還原故障。

Amazon EventBridge

Amazon EventBridge是一種完全託管的事件匯流排服務,它可以幫助您建立事件驅動架構。它提供了一種簡單的方式來產生、處理和路由事件,並且可以與其他AWS服務整合。

Amazon EventBridge的核心概念

  • 事件:Amazon EventBridge支援多種型別的事件,包括AWS服務事件、自定義應用程式事件和第三方SaaS應用程式事件。
  • 事件匯流排:Amazon EventBridge提供了一種中央化的事件匯流排,可以幫助您管理和路由事件。
  • 事件目標:Amazon EventBridge支援多種型別的事件目標,包括AWS Lambda函式、Amazon SNS主題和Amazon SQS佇列。

使用Amazon EventBridge建立事件驅動架構

要使用Amazon EventBridge建立事件驅動架構,您需要:

  1. 建立一個Amazon EventBridge事件匯流排。
  2. 定義您的事件模式和結構。
  3. 產生和傳送事件到Amazon EventBridge。
  4. 組態Amazon EventBridge來路由事件到您的目標服務。

透過使用Amazon EventBridge,您可以建立一個可擴充套件、可靠和安全的事件驅動架構,以支援您的微服務應用程式。

事件驅動架構中的 Amazon EventBridge

Amazon EventBridge 是一個完全受管理的無伺服器事件匯流排,允許您從多個事件生產者傳送事件,應用事件篩選來檢測事件,根據需要執行資料轉換,並將事件路由到一個或多個目標應用程式或服務。它是 AWS 中的一項核心完全受管理和無伺服器服務,在架構和建構事件驅動應用程式中扮演著關鍵角色。

事件匯流排的組成部分

事件匯流排的技術生態系統可以分為兩個主要類別。第一個類別包括其主要功能,例如:

  • 從各種來源(應用程式和服務)接收事件的介面
  • 將事件傳遞給組態的目標應用程式或服務(消費者)的介面
  • 支援多個自訂事件匯流排作為事件運輸通道
  • 組態規則以識別事件並將其路由到一個或多個目標的能力

第二個類別包括輔助功能(但仍然重要),例如:

  • 支援歸檔和重播事件
  • 事件結構體登入
  • EventBridge Scheduler 用於安排一次性或定期任務
  • EventBridge Pipes 用於一對一事件運輸需求

事件匯流排中的事件

每個傳送到 EventBridge 的事件都與一個事件匯流排相關聯。如果您將 EventBridge 視為整體事件路由器生態系統,那麼事件匯流排就是個別的事件流通道。事件生產者選擇將事件傳送到哪個匯流排,並且您可以在每個匯流排上組態事件路由。

EventBridge 服務在每個 AWS 帳戶中都有一個預設事件匯流排。AWS 使用預設匯流排來處理其服務的所有事件。您還可以為自己的需求建立一個或多個自訂事件匯流排。此外,為了從 AWS EventBridge 合作夥伴接收事件,您可以組態合作夥伴事件源並將事件傳送到合作夥伴事件匯流排。

事件路由規則

您在 EventBridge 中建立的規則是與事件匯流排相關聯的事件篩選和路由邏輯。這些規則基本上是您應用程式邏輯的一部分,需要被設計、檔案化、佈署和測試。一個規則由三個部分組成:事件篩選模式、事件資料轉換和目標(或多個目標)。

範例:事件篩選模式

{
  "detail": {
    "metadata": {
      "domain": ["ecommerce"],
      "service": ["service-payments"],
      "type": ["payment_received"]
    }
  }
}

此 範例 篩選模式將匹配具有指定域、服務、型別和付款型別屬性值的事件。

圖表翻譯:

  flowchart TD
    A[事件生產者] --> B[EventBridge]
    B --> C[事件篩選]
    C --> D[事件路由]
    D --> E[目標應用程式]

此圖表顯示了 EventBridge 中的事件流程,從事件生產者到目標應用程式。

事件驅動架構與 AWS EventBridge

在軟體架構中,事件驅動架構是一種設計模式,允許應用程式根據發生的事件做出反應。AWS EventBridge 是一種完全受管的事件匯流排服務,能夠接收和處理來自各種來源的事件,包括 AWS 服務、軟體即服務 (SaaS) 應用程式和自訂應用程式。

事件架構

每個事件都有一個結構,定義了事件的內容和格式。AWS EventBridge 提供了一個預設的事件架構,包括以下欄位:

  • version:事件版本
  • id:事件 ID
  • detail-type:事件型別
  • source:事件來源
  • account:AWS 帳戶 ID
  • time:事件發生時間
  • region:AWS 區域
  • resources:相關資源的 ARN
  • detail:事件詳細內容

事件橋接 (EventBridge)

EventBridge 提供了一個中央化的事件匯流排,允許您接收和處理來自各種來源的事件。您可以使用 EventBridge 來:

  • 接收和處理來自 AWS 服務的事件
  • 接收和處理來自 SaaS 應用程式的事件
  • 接收和處理來自自訂應用程式的事件
  • 將事件路由到多個目標
  • 執行簡單的資料轉換

事件型別和類別

事件可以分為不同的型別和類別,例如:

  • 順序提交 (Order submission)
  • 使用者註冊 (User registration)
  • 資料更新 (Data update)

事件架構登入檔

EventBridge 提供了一個事件架構登入檔,允許您儲存和管理事件架構。您可以使用此登入檔來:

  • 儲存和管理事件架構
  • 驗證事件是否符合架構要求
  • 保護下游事件消費者免受破壞性變更的影響

事件橋接排程器 (EventBridge Scheduler)

EventBridge Scheduler 是一種完全受管的排程器服務,允許您組態任務以在指定時間執行。您可以使用此服務來:

  • 組態任務以在指定時間執行
  • 執行任務以呼叫 AWS 服務
  • 執行任務以呼叫自訂應用程式

事件橋接管道 (EventBridge Pipes)

EventBridge Pipes 是一種一對一整合管道,允許您在事件發布者和訂閱者之間建立連線。您可以使用此管道來:

  • 篩選事件
  • 轉換資料
  • 豐富資料

事件驅動架構正迅速成為現代分散式系統的根本,而 AWS EventBridge 作為其核心服務之一,有效降低了構建此類別架構的門檻。EventBridge 不僅提供事件匯流排、規則引擎等核心功能,更整合了 Schema Registry、Scheduler、Pipes 等輔助工具,形成一個完整的事件驅動生態系統。這使得開發者能更專注於業務邏輯的實作,而非底層基礎設施的管理。然而,EventBridge 的事件篩選和路由規則設計仍需謹慎考量,避免規則過於複雜或冗餘,造成維護和除錯的困難。同時,不同事件匯流排的規劃和管理也需要仔細設計,以確保系統的擴充套件性和穩定性。對於追求高彈性、鬆散耦合和即時反應的應用程式而言,EventBridge 提供了一個強大的解決方案,但技術團隊仍需深入理解其運作機制和最佳實務,才能充分發揮其潛力。玄貓認為,隨著 Serverless 技術的持續發展,EventBridge 將扮演更重要的角色,成為雲原生應用架構的關鍵組成部分。