canna-cloud【十八】微服务复杂数据关联查询解决方案:CQRS(命令查询职责分离)+DDD(领域驱动模型)

1、前言 使用微服务时,难免会涉及到不同服务之间跨库的数据关联,对于简单的数据关联可以在业务代码中进行关联;但是对复杂的条件关联查询如何处理,这是一个复杂的问

1、前言

使用微服务时,难免会涉及到不同服务之间跨库的数据关联,对于简单的数据关联可以在业务代码中进行关联;但是对复杂的条件关联查询如何处理,这是一个复杂的问题。

2、以下为微服务中复杂数据关联的一种解决方式

CQRS:Command Query Responsibility Segregation,命令查询职责分离

DDD:Domain-Driven Design 领域驱动设计

通过CQRS将命令与查询进行分离,然后针对具体的领域进行数据的组装然后保存。

具体的流程可参考流程图,较为形象地说明以上的解决方案。

可简单的描述如下:

前端数据更新(增删改)请求=》后台更新数据到数据库=》同时发送数据到消息队列=》具体的相关领域模型订阅中间件消息=》收到消息后组装成所需的数据=》保存到相应的存储介质中=》前端根据所需内容进行相应的数据展示