网上商店DDD系统的配送微服务设计 - itnext


本文是SpringBoot + DDD + Apache Kafka实现最终一致性的教程与源码第三部分:
最后,Fulfillment配送服务负责履行订单。下面显示了实现服务的数据模型的局部视图。此领域对象群表示实现聚合:
Fulfillment配送服务的主要实体(Fulfillment类)保留在MongoDB中。该实体包含单个Order数据对象,以及客户的姓名,联系信息和送货地址。配送服务还使用Fulfillment实体存储最新的运输状态,例如“已发货”,“在途”和“已收货”。客户的姓名,联系信息和送货地址由“Customer”服务管理,复制到“order”服务,然后使用该FulfillmentRequestEvent实体通过Kafka传递到“Fulfillment配送”服务。
Fulfillment配送服务除了与主要Fulfillment实体一起,也有一个OrderStatusChangeEvent类。作为Kafka生产者,Fulfillment配送使用OrderStatusChangeEvent域事件对象来携带有关订单的履行状态的状态信息。该OrderStatusChangeEvent对象包含订单的UUID,时间戳,发货状态和可选的订单状态注释。

GitHub上提供了实现服务的源代码。使用2021-istio项目的最新分支。