首页/开发/系统分析与架构设计速查/CQRS 命令查询职责分离
架构风格与模式58 条

CQRS 命令查询职责分离

把写模型(命令)与读模型(查询)分离,各自可采用不同结构与存储;读侧可针对查询优化,写侧专注于一致性与业务规则,代价是最终一致与复杂度。

对比

维度命令侧查询侧
职责校验、变更、发布事件按查询需求组织数据
模型领域模型,保证不变量面向视图的宽表或索引
一致性强一致通常最终一致
扩展写扩展相对困难读可多副本水平扩展
CQRS 并非默认选项:读写比例接近且模型简单时,分离带来的同步与运维成本可能得不偿失。

易错点

  • 读模型同步延迟未对业务说明,用户看到“刚提交却查不到”
  • 查询侧绕过领域规则直接改数据,不变量被破坏

数据来源与参考

  • Martin Fowler bliki《CQRS》
  • Greg Young CQRS 文献与演讲
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌