事件溯源



問題陳述

微服務架構將應用程式構建為一組松耦合的微服務,每個服務都可以以敏捷的方式獨立開發,以實現持續交付/部署。如果我們使用了每個服務一個數據庫的設計模式,那麼如何實現跨越多個服務的交易呢?

解決方案

我們可以使用事件溯源模式進行服務間通訊。在這種型別的通訊中,每個服務都會將每個操作產生的事件持久化到事件儲存中。每個服務都可以訂閱這些事件,並相應地更新其交易狀態。例如,訂單服務與客戶服務。客戶服務可以訂閱訂單服務更新的事件,並相應地更新其狀態。

Event Sourcing Pattern

優勢

以下是使用事件溯源模式的優勢:

  • 非常適合事件驅動架構 - 此模式允許在狀態發生變化時可靠地釋出事件。

  • 持久化事件 - 由於事件而不是領域物件被持久化,因此不會發生物件關係不匹配。

  • 審計日誌 - 由於每次更改都會捕獲事件,因此審計日誌涵蓋了 100% 的更改。

  • 實體狀態識別 - 我們可以對事件資料庫建立時間查詢,以檢查實體在任意時間點的當前狀態。

  • 從單體架構到微服務架構的遷移變得更容易 - 使用事件溯源模式,我們可以建立透過事件進行通訊的松耦合微服務。因此,從單體到基於微服務的應用程式開發的遷移變得更容易。

廣告