加载中...
CQRS是一种把系统的写操作与读操作分离到不同模型的架构模式。命令负责改变状态,查询负责返回数据,二者各自独立优化,常用于高并发或读写差异大的复杂业务系统。

| 中文名 | 命令查询职责分离 |
| 缩写 | CQRS |
| 思想来源 | 命令查询分离原则 |
| 核心做法 | 读写模型分离 |
| 常见搭配 | 事件溯源、DDD |
命令查询职责分离(Command Query Responsibility Segregation,CQRS)是一种把数据的修改与读取拆分为两套独立模型的架构模式。写入侧由命令模型处理会改变系统状态的操作,读取侧由查询模型专门服务于数据展示,两者可以采用不同的数据结构乃至不同的存储。
该模式源自贝特朗·迈耶提出的命令查询分离原则,即一个方法要么改变状态,要么返回数据,而不应两者兼有。CQRS将这一思想上升到架构层面:传统系统常用同一个模型既承担复杂的业务写入,又应对多样的查询需求,导致模型臃肿、难以兼顾;CQRS则让读写各行其道,分别为其目标优化。
CQRS适用于读写负载悬殊、查询形态多样或业务规则复杂的系统,如电商、金融和协作平台。当同一份数据既要支撑严格的写入校验,又要以多种维度快速展示时,分离读写能各自简化。它常与事件溯源、领域驱动设计结合,构建可扩展的复杂业务后端。
问:CQRS一定要配合事件溯源吗?答:不需要。CQRS只要求读写模型分离,可以共用一个数据库,也可以用不同存储;事件溯源是常见搭档,但二者相互独立。
问:什么情况下不该用CQRS?答:对于简单的增删改查系统,引入读写双模型只会增加复杂度和一致性负担,得不偿失,只有当读写需求确实冲突时才值得采用。

| 中文名 | 命令查询职责分离 |
| 缩写 | CQRS |
| 思想来源 | 命令查询分离原则 |
| 核心做法 | 读写模型分离 |
| 常见搭配 | 事件溯源、DDD |
登录 后参与讨论
暂无讨论,来发表第一条评论吧