网上商店DDD系统的订单Order微服务设计 - itnext


本文是SpringBoot + DDD + Apache Kafka实现最终一致性的教程与源码第二部分:
订单服务负责管理客户的过去和当前订单;它是客户订单历史记录的记录系统。订单服务的数据模型的部分视图如下所示。下面领域对象群集“客户订单聚合”:

CustomerOrders类订购订单服务的主数据实体,在MongoDB是持久保存,实体包含所有客户的订单(Order数据对象)历史记录,以及客户的姓名,联系信息和地址。在Orders MongoDB数据库中,CustomerOrders表示为BSON文档customer.orders
除主要CustomerOrders实体外,Orders服务还包含FulfillmentRequestEvent送货类。作为Kafka的生产者,订单服务使用FulfillmentRequestEvent域事件对象来携带有关已批准订单的状态信息,可以立即执行。它发送给Kafka,以供配送服务使用。该FulfillmentRequestEvent对象仅包含其需要共享的信息。我们的示例共享一个Order,以及客户的姓名,联系信息和送货地址。

由于FulfillmentRequestEvent域事件对象未在MongoDB中保留,因此我们可以在Kafka中查看其JSON消息有效负载。同样,请注意MongoDB中的CustomerOrders文档和FulfillmentRequestEventKafka中的消息有效负载之间的架构差异。
订单服务的源代码可在GitHub上获得。使用2021-istio项目的最新分支。