本文作者:bang

基于阿里开源COLA架构的货物运输系统简介

bang 2021-06-27 148
基于阿里开源COLA架构的货物运输系统简介摘要: COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前C...

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。

COLA既是框架,也是架构。COLA架构融合了常见的DDD代码模型,可以帮助开发人员快速实践并落地DDD领域建模的应用项目。

基于阿里开源COLA架构的货物运输系统简介


货物运输系统(Cargo Tracker Application)是领域驱动设计(DDD)的经典示例。Eric Evans(DDD之父)在他的书中引入了货物运输系统为示例,Eric这样描述该领域模型:

  • 一个Cargo(货物)涉及多个Customer(客户,如托运人、收货人、付款人),每个Customer承担不同的角色;
  • Cargo的运送目标已指定,即Cargo有一个运送目标;
  • 由一系列满足Specification(规格)的Carrier Movement(运输动作)来完成运输目标;

上述这段描述完全以货物为中心,把客户看成是货物在某个场景中可能会涉及到的关联角色,如货物会涉及到托运人、收货人、付款人;货物有一个确定的目标,货物会经过一系列的运输动作到达目的地;其实,以用户为中心来思考领域模型的思维只是停留在需求的表面,而没有挖掘出真正的需求的本质;我们在做领域建模时需要努力挖掘用户需求的本质,这样才能真正实现用户需求。

下图是货物运输系统的整体概览图,分为四个微服务:

1. 预订微服务 bookingms:该服务负责与货物委托预订相关的所有操作,包括包裹预订、查询包裹明细、包裹行程制订(Assign Route to Cargo)等等,还有发布CargoBooked、CargoRouted消息,以及订阅CargoHandled消息。

2. 运输微服务routingms:该服务负责与货物路线相关的所有操作,包括获取路线的行程、维护航线(Maintain Voyages)等等。

3. 跟踪微服务trackingms:该服务负责与货物跟踪相关的所有操作,包括为货物分配跟踪器、跟踪货物路线,还有订阅CargoRouted和CargoHandled消息。

4. 装卸微服务handlingms:该服务负责与货物装卸相关的所有操作,包括注册装卸活动(Register Handling Activity)、查询装卸活动历史记录等等。

基于阿里开源COLA架构的货物运输系统简介



图中有标识出Command(命令)、Query(查询)和Event(事件)等领域模型。

《COLA 4.x架构入门和项目实践》技术专栏详细讲解COLA框架的使用,领域驱动设计DDD中领域模型的开发,以及DDD经典示例项目-货物运输系统(Cargo Tracker Application)代码实现细节。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享