分散式系統中的解耦模式:隔離事件層 - mathiasverraes
這是mathiasverraes領域事件系列文章最後一篇,其他可點選#領域事件 進入檢視!
使用可見性層明確分離不同有界上下文的事件,可以使用它們自己的語言。
問題
這個問題與顯式公共事件中描述的相同:有時將某些事件標記為公開是不夠的,您可能確實需要獨立演進內部的事件,同時以不同方式設計公共事件以適應外部客戶端。客戶端可能需要概要事件或胖事件,但您不希望在滿足所有這些消費者客戶端需求的情況下卻使得你自己的有界上下文內部變得變得混亂。
還有一個問題是,如果太多的消費者將他們的需求強加給生產者,並且所有消費者都依賴於相同的事件,那麼消費者在邏輯上會彼此耦合。
解決
保持所有內部事件嚴格保密,設定一個偵聽內部事件的介面卡,並針對不同客戶端消費者發出不同的公共事件的新流。我們也可以為每個消費者設定一個單獨的介面卡和流,以高度適應他們的不同需要。
新事件流實際上是一個位於我們所處的不同的有界上下文裡:這些事件流有自己的語言、事件型別和名稱。這樣就可以通過構建反腐敗層進行事件的隔離,這也是防腐層的一個實現模式。
有些名稱可能與原來的有界上下文中的名稱重疊或衝突,但這很好:擁有在本地定義概念而不嘗試全域性定義概念的自由,這正是我們使用有界上下文的原因。
案例
在私有層中,我們發出:
OrderWasInitiated {orderId} LineItemWasAdded {orderId, productId, quantity} OrderWasPlaced {orderId, customerId} StockWasReserved {orderId, stockId} TransportWasBooked {transportId, orderId} OrderWasPacked {orderId} OrderWasShipped {orderId} |
介面卡是一種監聽這些事件的Projector,併為公共消費發出新流:
OrderWasPlaced {orderId, customerName, lineItems} OrderWasConfirmed {orderId, customerName, lineItems} OrderWasShipped {orderId, customerName, lineItems} |
公共流明確為適合客戶而設計:OrderWasPlaced是一個概要事件,其他是胖事件,並且沒有完整性保證,因為stockId並且transportId不在該流中。
公共流是一個不同的有界上下文:公共流中的一些語言不存在於上述私有流中,如OrderWasConfirmed這個事件; 並且OrderWasPlaced與OrderWasShipped等事件與私有流中同名事件也略有不同。
我們可以通過為每個消費者(例如客戶通知系統,銷售部門,運輸公司等)製作單獨的介面卡,流和語言來進一步採用此示例。
相關文章
- 分散式系統中的解耦模式:概要事件 - mathiasverraes分散式解耦模式事件
- 分散式系統中的解耦模式:領域查詢 - mathiasverraes分散式解耦模式
- 分散式系統解耦模式:用事件代表時間觸發Cron計劃任務分散式解耦模式事件
- 高層次下的分散式系統分散式
- 分散式系統2:分散式系統中的時鐘分散式
- 分散式之系統底層原理分散式
- 事務系統的隔離級別
- 在Linux中,如何進行系統資源的隔離?Linux
- 分散式系統中ID的需求分散式
- 設計模式例項講解 - 介面隔離設計模式
- 分散式 - 分散式系統的特點分散式
- 分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路分散式
- 分散式事務中的一致性和隔離性你真的懂了嗎分散式
- 19種分散式系統設計模式 - Nishant分散式設計模式
- 事件驅動系統設計之將事件檢索與事件處理解耦事件解耦
- HarmonyOS 鴻蒙隔離層設計鴻蒙
- Blazor中的CSS隔離BlazorCSS
- 分散式系統中的領導選舉分散式
- 分散式系統中的事務問題分散式
- 分散式系統中的CAP、ACID、BASE概念分散式
- 分散式系統設計中的併發訪問解決方案分散式
- react 樣式隔離方案React
- 分散式系統的跟蹤系統分散式
- 分散式系統分散式
- 大資料分散式儲存的部署模式:分離式or超融合大資料分散式模式
- 分散式系統:系統模型分散式模型
- 分散式系統中的一些問題分散式
- 分散式系統中的自主自治計算 - pathelland分散式
- 分散式系統(三)——分散式事務分散式
- SaaS多租戶的3種隔離模式模式
- 分散式:分散式系統下的唯一序列分散式
- 設計模式:介面隔離原則設計模式
- 我理解的分散式系統分散式
- 分散式系統的問題分散式
- 大型分散式網站架構:快取在分散式系統中的應用分散式網站架構快取
- 分散式系統監視工具WGCLOUD - 監測docker容器的採集時間間隔分散式GCCloudDocker
- [分散式]分散式計算系統淺析分散式
- 什麼是分散式系統!以及分散式系統架構的優缺點!分散式架構