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

COLA 是 Clean Object-Oriented and Layered Architecture的縮寫,代表“整潔面向對象分層架構”,是來自阿里技術專家的開源項目。目前COLA已經發展到COLA 4.0。
COLA既是框架,也是架構。COLA架構融合了常見的DDD代碼模型,可以幫助開發人員快速實踐並落地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 4.x架構入門和項目實踐》技術專欄首先介紹了COLA框架的使用入門,以及與IDEA開發工具的集成等等;然後基於COLA架構,創建DDD經典示例項目-貨物運輸系統,詳細介紹了DDD領域建模、適配層、應用層、領域層和基礎設施層的代碼開發、防腐層(ACL)設計與實現、領域事件(Domain Event)入門實踐、以及基於Kafka消息中間件的消息發佈和訂閱等等。內容由淺入深,從開發實戰出發,逐步掌握基於COLA架構和DDD領域建模思想構建複雜業務應用系統。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章