flex-height
text-black

進行線上購買的人員

什麼是事件導向架構?

事件驅動的架構整合模型會即時偵測重要的「事件」並採取行動。

default

{}

default

{}

primary

default

{}

secondary

事件驅動的架構定義及其重要性

事件驅動的架構是一種軟體設計方法,可讓組織立即回應任何有意義的狀態變更。試想一下,如果企業能即時回應重要事件,例如客戶進行線上購買、感應器偵測到即將發生故障、股價下降或安全警示火災。這些變化(稱為事件)會隨時發生在每個產業和每個組織中。成功便取決於企業如何快速回應事件。

這正是事件驅動的架構(EDA)能提供協助之處。事件驅動的架構可讓應用程式透過鬆散耦合的元件進行非同步通訊,而非等待排程更新或仰賴僵硬且緊密的連線系統。這意味著,系統的每一個環節都可以獨立行動—且不須知道其他人的內部工作—使其更容易擴展、調整和創新。

因此,使用事件驅動架構的現代系統可讓企業提供更快、更個人化的體驗、自動化作業,並在需求和資料量成長時仍保持靈活度。透過採用事件驅動的架構,組織從被動式轉向主動,取得所需的速度、靈活度和彈性,以便在動態的數位世界中蓬勃發展。

什麼是事件?

事件是影響企業的任何動作或狀態變更,例如當客戶刷卡、乘客報到航班、使用者重設密碼,或倉庫更新庫存時。可以這樣想:事件是一個簡短的訊息,表示「剛剛發生了某事」,讓系統其他部分能立即反應。

當公司能隨時在事件發生時擷取並回應事件,就會成為事件驅動公司。某些常見事件範例包含:

事件驅動架構的核心元件

為使結構保持一致,事件綱要會定義事件結構和格式,其中包含事件具有的欄位、資料類型和解釋規則。

在事件驅動的架構中,應用程式會做為事件產生者(生產或擷取事件)或事件取用者(處理並對事件採取行動)運作。製作者透過事件代理程式(訊息導向的中介軟體),即時將事件傳輸給取用者。接著,使用者可處理事件並驅動其他動作、工作流程或自己的事件。此設計可在資料串流時提供即時回應和更睿智的決策。

事件代理程式管理將生產者與取用者連線的事件通路、確保可靠的交付,且通常提供篩選、持續性和重播等功能。透過分離生產者和取用者,事件代理程式可讓系統更具彈性和可擴展性。

在非常簡單的架構中,當有單一產生者和單一取用者彼此直接通訊時,事件代理程式可以是選用。然而,在多數企業中,有多個來源向多個取用者傳送事件,因此需要代理程式,甚至是代理程式的網路(亦稱為「事件網格」)。當使用代理程式或事件網格時,這會建立「鬆散結合式」的應用程式。

同步與非同步通訊

透過事件驅動架構的同步通訊,事件產生者會等待接收者處理並回應,然後再繼續。例如,當 Web 用戶端傳送 HTTP 請求並等待伺服器回應時。同步通訊通常緊密結合,在繁重的負載下速度較慢,並且會「封鎖」生產者執行下一個工作細項,直到收到取用者的回應。

透過事件驅動架構中的非同步通訊,生產者不須等待立即回應,而是可繼續處理,讓事件取用者稍後再處理訊息。例如,當系統將事件發佈給事件代理程式時,取用者可獨立處理事件。非同步通訊為非封鎖性、鬆散結合且可擴充,使即時和分散式系統更臻完善。

事件驅動架構中請求驅動與事件驅動的模型

請求驅動的模型 中,互動會以事件取用者對伺服器的請求開始,隨後伺服器會回應。此模型是以拉式為基礎,意即取用者在需要時主動向伺服器請求資料或服務,而非接收自動更新,且可為同步或非同步。傳統網路應用程式和 API 中常見的請求驅動模型。

事件驅動模型 中,互動從事件(狀態變更或觸發處理的動作)開始,而元件會在事件發生時自動反應,例如發行/訂閱。此模型的特性以推送為基礎,表示系統會在發生事件時自動傳送(「推送」)事件或更新給取用者,而無須等待取用者請求。事件驅動的模型為非同步、獨立且適合即時回應。

思考模型之間的關鍵差異:在請求驅動模型中,使用者會在需要時請求資料;事件驅動模型則會在發生事件時自動反應。

常見事件驅動的架構模式

事件驅動的架構 模式 是常見的設計方法,用於定義事件驅動系統擷取、處理和使用事件的方式。模式會以可擴充且獨立的方式,提供處理通訊和狀態更改的可重複使用策略。組織在系統設計和建置期間套用事件驅動的架構模式,以解決常見挑戰。這些包含事件分配、資料一致性,以及非同步、鬆散結合環境的延展性。

事件驅動架構中有四種傳輸事件的主要模式:

事件處理樣式

事件處理樣式說明系統偵測、解譯和執行事件的方式。這些樣式定義系統理解事件之間的 邏輯、時間關係的複雜性。事件到達取用者時,有三種不同的處理方式:簡易事件處理、複雜事件處理以及事件流處理。

1. 簡易事件處理:取用者會在收到事件時處理各事件。範例:

2.複雜事件處理:取用者處理一系列事件,以偵測模式並根據結果執行動作。範例:

3.事件串流處理:取用者使用資料串流平台,即時處理和應對持續的資料流(即時資料)。範例:

企業可根據個別需求和使用案例,選擇即時事件處理的樣式。

事件驅動的架構如何運作

事件驅動的架構是一種整合模型,旨在即時發佈、擷取、回應分散式系統中的事件。當一個應用程式發生事件時,系統會自動傳送訊息給所有其他需要了解的應用程式,以便對方輪流採取動作。

下列說明事件驅動架構如何逐步運作:

  1. 事件發生:發生有意義的狀態更改,例如客戶下訂單、感應器偵測到溫度飆升,或付款失敗。
  2. 事件產生者發佈事件:事件發生的應用程式會作為產生者,並將事件發佈給事件代理程式。
  3. 事件代理程式傳送事件:事件代理程式可作為中介機構來管理事件通路,並將事件傳遞給所有感興趣的事件取用者,以協助確保可靠、可擴展且獨立的通訊。
  4. 事件取用者對事件做出反應:訂閱事件通路的應用程式或服務會處理事件並採取適當動作,例如更新存貨、傳送確認電子郵件或觸發警示。

以事件為基礎的架構為非同步且獨立,這表示應用程式不需要相互注意便可即時共用資訊和完成工作細項。事件資訊或訊息可在應用程式之間自由且自動地流動。因此,事件驅動的架構模型比傳統請求驅動和回應驅動的模型更快速、更具彈性,這些傳統模型中一個應用程式必須向另一個應用程式請求所需的特定資訊,等待回應後再繼續進行下一個工作。另外,由於事件驅動架構的分離式性質,因此被廣泛認為是微服務通訊的最佳實務。

使用案例和實際案例

事件驅動架構可強化從銀行、零售到製造和物流等產業的現代化數位體驗。透過啟用 AI 驅動的自動化、事件智慧和即時回應能力,事件驅動架構可協助組織現代化 IT、分離舊系統,並在多個雲端環境中無縫作業

下列範例說明事件驅動架構如何運作。

餐飲業

  1. 大學生透過食物外送應用程式訂購披薩。應用程式會擷取其基本資訊(姓名、地址、付款資訊和訂單)並發佈「披薩訂單」事件。
  2. 披薩餐廳訂閱事件、履行訂單,並將自己的「訂單就緒」事件發佈回食物外送服務。
  3. 接著,此服務會分配給送貨司機、排程送達時間,並通知客戶披薩正在送達途中。

電子商務

  1. 線上購物者在電子商務網站上輸入信用卡詳細資訊,該網站會發佈「已提交付款」事件。
  2. 付款系統訂閱事件、處理付款並發佈自己的「已處理付款」事件,表示成功或失敗,並將其傳送至網站 UI
  3. 使用者介面會向客戶顯示付款狀態,並提示後續步驟。

其他事件驅動的架構範例如下:

IoT 遙測

分析和事件智慧

自動化

財務交易

供應鏈

IT 現代化與舊式分離

通知

一般事件驅動的架構使用案例包括:

事件驅動架構的效益

組織可以將事件驅動架構的優勢應用於現代系統。事件驅動的首要架構效益包括:

  1. 即時回應和智慧工作流程:事件驅動的架構可讓系統在事件發生時立即回應事件,進而即時驅動自動化工作流程和決策。這在尖峰需求的時段尤其重要,例如在主要銷售事件或假日期間。公司可將此回應能力運用至日常營運,改善從供應鏈自動化、詐欺偵測到個人化客戶互動等所有功能。
  2. 使用非同步通訊的速度和效率:事件驅動架構中的應用程式使用非同步通訊,意即生產者發佈事件訊息但不需等待使用者接收。此非封鎖性方法可改善效能、降低延遲,並允許系統處理大量事件,避免處理瓶頸。
  3. 透過分離和鬆散結合達成彈性和延展性:事件驅動架構中的元件皆為分離或鬆散結合,因此不需依賴彼此的可用性或內部邏輯,即可獨立運作。如此便可在不中斷整個系統的情況下輕鬆更新、測試和部署服務。分離也可讓您視需要輕鬆新增額外的生產者和取用者,並隨著業務需求成長而實現無縫的規模擴充。
  4. 彈性和錯誤隔離:透過分離服務,單一元件中的故障不會串連至整個系統。每個服務都可獨立失敗,使架構比傳統的緊密結合模型更耐用、更容錯。
  5. 備戰未來整合:鬆散結合和非同步設計,讓事件驅動架構完美適合 IT 現代化、舊系統分離和多雲端作業。組織可以靈活地整合新技術,例如 AI 驅動的自動化和事件智慧,而無須重寫核心系統。

挑戰、限制和最佳實務

事件驅動的架構提供強大的優勢,但也帶來企業必須規劃因應的新設計和營運挑戰。建置事件驅動架構時,請考量下列事件驅動的架構挑戰、限制和最佳實務,以確保可擴充、具彈性且管理完善的事件驅動系統。

挑戰

事件網格為何適用

事件網格是一種架構功能,可連結不同大型平台供應商,以及私人、混合和多雲端環境中的多個事件代理程式。事件網格提供進階事件服務的完整用途集,包含事件串流、事件管理、監控、動態訊息傳送和精細篩選。透過將事件代理程式連接至分散式網格,組織可以:

作為現代系統的骨幹,事件網格是可擴充、即時事件驅動架構的基礎層面。其有助於確保即時回應能力,同時簡化整合、減少事件混亂,並強化分散式環境的疑難排解功能。

事件驅動的架構限制

事件驅動的架構最佳實務

事件驅動架構的特性

事件驅動的架構在核心仰賴數個定義特性,使其適合分散式、混合式和多雲端架構。

這些特性讓事件驅動的架構成為建立系統,真正有時間、彈性、可調整且準備成長的強大方法,無論您是在支援微服務、整合雲端架構,或啟用事件驅動的企業流程應用程式。

常見問題

事件驅動架構中的事件為何?
在事件驅動的架構中,事件是業務流程或系統的有意義變更,例如實體的建立、更新或完成。事件是應用程式在重要情況發生時發出的信號,因此其他系統可以即時收到通知,並在不需緊密結合的情況下作出反應。事件的範例包含客戶付款成功或失敗、出貨到達或離開倉庫,以及機器感應器偵測到溫度飆升。
事件驅動架構與請求驅動有何不同?

事件驅動與請求導向架構的主要差異在於系統如何溝通和回應變更。在請求驅動模型中,當使用者請求伺服器的資料或動作,且伺服器回應時,互動便會開始。此模型通常為同步,表示請求者須等待(封鎖)直到收到回應,且是以拉式為基礎,這表示應用程式只會在要求時收到更新。

在事件驅動模型中,互動始於發生事件(商業系統中有意義的狀態變更),且應用程式會自動反應。事件驅動的系統為非同步,因此生產者會發佈事件而不等待取用者回應。這種以推播為基礎、鬆散結合的模型,可讓應用程式跨分散式、混合式和多雲端環境,即時操作並處理事件。

事件驅動架構的主要元件為何?

事件驅動架構的主要元件為製作者、取用者、事件代理程式和事件通路。這些元件共同建立非同步且鬆散結合的事件流程,實現即時、分散式、混合式和多雲端環境的可擴展互動:

  • 製作者:產生或擷取事件的應用程式(例如訂單更新、付款和感應器讀數),並將其發佈至事件驅動系統
  • 取用者:透過驅動工作流程、更新資料、傳送通知或起始下游程序,訂閱、處理並回應事件
  • 事件代理程式:將事件從生產者傳送給取用者的訊息中介軟體,提供可靠的交付、篩選、動態傳送、持續性和重播等功能
  • 事件通路:事件代理程式管理連接生產者和取用者的方式:生產者將事件發佈到通路,而取用者訂閱與其相關的通路
何謂事件驅動的架構模式?

事件驅動的架構模式是可重複使用的設計方法,用於定義事件驅動系統中事件擷取、傳送、儲存和使用的方式。主要的事件驅動架構模式如下:

  • 發佈/訂閱(pub/sub):製作者將事件發佈至通路,而多位取用者訂閱並自動反應。
  • 事件串流:製作者向代理程式發佈連續的事件流,取用者可在串流的任何時間點讀取、重播或處理這些事件。
  • 命令查詢責任隔離(CQRS):將讀取和寫入作業分隔為不同模型,以非同步方式傳播更新。
  • 事件詢比議:系統會將狀態中的每個變更儲存為僅附加日誌中的不可變更事件,然後重播事件以重新建立目前狀態。
使用事件驅動架構有什麼效益?

使用事件驅動架構的主要效益包括:

  • 鬆散結合:應用程式獨立運作,而無須了解彼此內部,可更輕鬆地更新、整合和擴充。
  • 可擴展性:可流暢新增生產者和取用者,並在混合環境及多雲端環境中擴展工作負載。
  • 彈性:分離服務可將失敗隔離,因此若一個元件關閉,不會影響整個系統。
  • 速度和即時回應能力:非同步、非封鎖性的通訊可讓系統立即回應業務事件,並以低延遲處理大量事件。