网上商店DDD系统的客户微服务设计 - itnext


本文是SpringBoot + DDD + Apache Kafka实现最终一致性的教程与源码一部分:
客户Account服务负责管理基本的客户信息,例如姓名,联系信息,地址和购买的信用卡。客户服务的数据模型的部分视图如下所示。下面对象群代表“客户Account”一个聚合:
Customer是Account微服务的主要数据实体,持久化保存在MongoDB的Accounts数据库中,在下面,我们在MongoDB数据库集合中将Customer表示为BSON文档。
除主要Customer实体外,Account服务还包含一个CustomerChangeEvent类。作为Kafka生产者,Accounts服务使用CustomerChangeEvent 领域事件对象来携带有关在添加新客户或对现有客户进行更改时Accounts服务希望共享的客户的状态信息。CustomerChangeEvent对象不是Customer对象的精确副本,该CustomerChangeEvent对象不与其他消息使用者(CreditCard数据对象)共享敏感的信用卡信息。


由于CustomerChangeEvent域事件对象不会在MongoDB中保留,因此我们可以在Kafka中查看其JSON消息以检查其结构。请注意,MongoDB中的Customer文档和KafkaCustomerChangeEvent消息之间的数据结构(架构)有所不同。
为简单起见,我们将假定其他服务不会更改客户的姓名,联系信息或地址-这是客户服务的全部责任。
帐户服务的源代码可在GitHub上获得。使用2021-istio项目的最新分支。