企業越來越需要能立即回應各種觸發條件的系統,包括客戶互動和感應器讀數。傳統的請求/回應模型有其價值,但可能無法在這些動態環境中提供必要的靈活性或擴充性。事件導向架構 (EDA) 是建構反應靈敏、具韌性且可擴充應用程式的高效做法。這種軟體架構模式可提升事件產生、偵測、取用和回應的能力。
事件導向架構是一種軟體應用程式設計模式,當中的服務以鬆耦合方式運作,並透過產生和取用事件進行通訊。「事件」是指發生有意義的狀況或系統狀態變更,例如顧客下單、感應器偵測到溫度變化、新檔案上傳至儲存空間,或是資料庫記錄更新。
在傳統的請求導向模型中,服務會明確呼叫另一個服務並等待回應,但 EDA 允許服務以非同步方式運作。產生事件的服務 (「產生者」或「發布者」) 只會單純宣布事件發生,其他對這類事件感興趣的服務 (「取用者」或「訂閱者」) 可以自行擇時予以回應。
EDA 的關鍵元件通常包括:
事件導向架構的工作流程通常遵循一致的模式。
採用事件導向架構可帶來許多優勢,這項做法尤其適用於複雜的分散式系統。
提升擴充性
EDA 中的服務採用鬆耦合設計,且可獨立擴充。如果「訂單處理」服務負載過重,您可以單獨擴充該服務,而不會影響「使用者通知」等其他服務。
提升韌性和容錯能力
事件導向架構可隔離服務故障情形,有效提升應用程式的穩定性。這種分離式架構可確保某項消費者服務發生故障時,不會擴散並導致整個系統故障。
提高靈活度和彈性
開發人員可以新增、修改或移除服務,且幾乎不會影響系統的其他部分。新服務可以訂閱現有的事件串流,在不變更原始事件產生器的情況下新增功能。
即時回應
事件導向架構能顯著加快系統回應事件的速度。這項功能特別適合講求迅速回應的應用程式,例如詐欺偵測、即時分析和營運監控。
簡化整合程序
EDA 可做為彈性骨幹並整合分散的系統,包括舊版應用程式、新型微服務和第三方服務。每個系統都能發布及取用事件,不必與其他系統直接點對點整合。
擴充性
新增功能或以新方式回應現有事件時,通常只要部署新的取用者服務來訂閱相關事件串流。
EDA 是在微服務之間實現通訊和資料流通的常見做法。微服務可發布狀態變更事件,讓其他已訂閱該事件的微服務據此採取行動,而非直接同步呼叫 API,避免發生系統緊耦合。
對於需要高速處理資料串流的應用程式 (如 IoT 感應器資料、應用程式記錄、社群媒體動態消息或金融市場資料),EDA 可即時處理、分析及回應這些資訊。您可以透過 EDA 打造完善的資訊主頁、建立警告系統,或自動制定決策。
EDA 可協助管理線上零售業特有的非同步複雜工作流程,包括根據銷售情況管理庫存量、處理訂單的各個階段 (付款、出貨、運送) 和通知顧客等。即使付款處理服務速度緩慢,其他服務 (例如庫存保留) 仍可擷取並處理訂單事件。
許多業務程序本質上就是事件導向。舉例來說,保險理賠申請 (事件) 會觸發一系列後續活動:詐欺檢查、評估、客戶溝通,最後是付款處理。EDA 能有效建立這些工作流程的模型並自動化。
當多個系統或資料儲存庫的資料必須維持同步時,即可使用 EDA。當您發布資料庫變更 (事件) 後,其他資料庫或快取就能訂閱這些變更事件並更新自身的資料。
無伺服器函式 (如 Cloud Run functions) 通常屬於事件導向,會因應各種事件觸發條件執行,例如物件上傳至雲端儲存空間、訊息抵達佇列,或是收到 HTTP 要求。EDA 非常適合使用無伺服器元件建構應用程式。
即時詐欺偵測、股市監控和交易處理是重要的金融應用功能,可受惠於 EDA 的低延遲和高處理量特性。
Google Cloud 提供一套強大的服務,可協助客戶建構及部署功能強大的事件導向應用程式。平台本身採用事件導向原則,有助於提供可擴充且具韌性的服務。對於建構事件導向解決方案的客戶,Google Cloud 提供多項重要的代管服務: