基於阿里開源的COLA架構和DDD領域驅動設計構建貨物運輸系統

Rickie發表於2021-09-10
COLA 是 Clean Object-Oriented and Layered Architecture的縮寫,代表“整潔物件導向分層架構”,是來自阿里技術專家的開源專案。目前COLA已經發展到COLA 4.0。
COLA既是框架,也是架構。COLA架構融合了常見的DDD程式碼模型,可以幫助開發人員快速實踐並落地DDD領域建模的應用專案。
基於阿里開源的COLA架構和DDD領域驅動設計構建貨物運輸系統
貨物運輸系統(Cargo Tracker Application)是領域驅動設計(DDD)的經典示例。Eric Evans(DDD之父)在他的書中引入了貨物運輸系統為示例,Eric這樣描述該領域模型:
  • 一個Cargo(貨物)涉及多個Customer(客戶,如託運人、收貨人、付款人),每個Customer承擔不同的角色;
  • Cargo的運送目標已指定,即Cargo有一個運送目標;
  • 由一系列滿足Specification(規格)的Carrier Movement(運輸動作)來完成運輸目標;
上述這段描述完全以貨物為中心,把客戶看成是貨物在某個場景中可能會涉及到的關聯角色,如貨物會涉及到託運人、收貨人、付款人;貨物有一個確定的目標,貨物會經過一系列的運輸動作到達目的地;其實,以使用者為中心來思考領域模型的思維只是停留在需求的表面,而沒有挖掘出真正的需求的本質;我們在做領域建模時需要努力挖掘使用者需求的本質,這樣才能真正實現使用者需求。
 
下圖是貨物運輸系統的整體概覽圖,分為四個微服務:
  • 預訂微服務 bookingms:該服務負責與貨物委託預訂相關的所有操作,包括包裹預訂、查詢包裹明細、包裹行程制訂(Assign Route to Cargo)等等,還有釋出CargoBookedEvent和CargoRoutedEvent領域事件,以及訂閱CargoHandledEvent事件訊息等等。
  • 運輸微服務routingms:該服務負責與貨物路線相關的所有操作,包括獲取路線的行程、維護航線(Maintain Voyages)等等。
  • 跟蹤微服務trackingms:該服務負責與貨物跟蹤相關的所有操作,包括為貨物分配運單號(TrackingNumber)、跟蹤貨物路線,還有訂閱CargoRoutedEvent和CargoHandledEvent事件訊息。
  • 裝卸微服務handlingms:該服務負責與貨物裝卸相關的所有操作,包括註冊裝卸活動(Register Handling Activity)、查詢裝卸活動歷史記錄等等。基於阿里開源的COLA架構和DDD領域驅動設計構建貨物運輸系統
 
 
《COLA 4.x架構入門和專案實踐》技術專欄首先介紹了COLA框架的使用入門,以及與IDEA開發工具的整合等等;然後基於COLA架構,建立DDD經典示例專案-貨物運輸系統,詳細介紹了DDD領域建模、適配層、應用層、領域層和基礎設施層的程式碼開發、防腐層(ACL)設計與實現、領域事件(Domain Event)入門實踐、以及基於Kafka訊息中介軟體的訊息釋出和訂閱等等。內容由淺入深,從開發實戰出發,逐步掌握基於COLA架構和DDD領域建模思想構建複雜業務應用系統。

相關文章