從單體到事件驅動架構:找到新架構中的接縫

本文要點

  • 單體應用程序並不總是單層的;分佈式單體看起來跟微服務架構很像,但它們的行爲卻是單體行爲;
  • 所謂的事件驅動架構,就是將事件作爲變化的單元;
  • 在CQRS中,命令(Command)和查詢(Query)之間的區別比分離(Separation)更爲重要;
  • 事件溯源將事件與狀態分離,爲系統的轉換狀態提供必要的抽象;
  • 當遺留元素被移除後將出現目標狀態架構,這就是過渡性架構中的接縫(Seam)。

爲什麼要進行遷移?

除了單層的單體架構之外,三層架構也是一種常見的架構模式,一般由表示層、業務層和數據層組成。但是,這些層之間的複雜性幾乎是不成比例的。在某些情況下,我們會在表示層或數據層的存儲過程中發現業務邏輯。而在其他情況下,應用程序層按照系統功能被分成很多個服務。有些人甚至稱之爲微服務,但如果分離不得當,它只是一個分佈式的單體。

圖1:一些架構模式的比較

當然,這些並非都是糟糕的架構風格,但每一種都存在風險。當做出變更的風險足夠大或者無法控制時,說明該向新架構遷移了。搞清楚進行架構遷移的原因與在遷移之前進行可行性驗證同樣重要。

事件是EDA的核心

事件驅動架構(EDA)並不是新鮮事物,但我們可能會發現,我們在實現時所採用的實踐經常與核心原則相背離,導致我們忽略了EDA實際上是關於將事件作爲系統變更單元的實事。我們在EDA中所採用的實踐(如消息傳遞和異步消息)可能會引入這種噪音。你也可以在一個單體系統中構建一個事件驅動的系統,就像在分佈式系統中所做的那樣,只要看看大多數操作系統內核(如Windows或Linux)就知道了。

原文鏈接:【https://www.infoq.cn/article/xHbgKHIIFj9eKszyjbai】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章