本文我们聊聊 CQRS 这种架构模式。
CQRS 是用来解决什么问题的?
我们先看一个场景。
系统中的数据模型是按照实体以及关系进行设计的是吧。
例如电商系统,包含订单、用户、商品等等数据。
数据的变更操作、查询操作,都是基于这一套数据模型的。
但是,实际场景下的查询需求是多种多样。
例如这3类人群:
-
商家
-
买家用户
-
电商运营人员
他们的数据视角是不同的,各自的关注角度不同,需要查询的数据就完全不同。
但数据模型是一套啊,怎么办?
是不是就需要做数据关联、构建临时数据集合等等复杂的操作啊。
基于一种数据模型,来实现 N 种视角的查询,既别扭又麻烦。
CQRS 是怎么解决的呢?
CQRS 的全称是:
Command Query Responsibility Segregation
意思是 命令查询职责隔离。
命令是指 插入、修改、删除,就是更改数据的动作。
隔离之后,结构就变成了这样: