Skip to content
进阶

一句话答案

CQRS 将读写分离为不同模型/数据库,写端保证一致性,读端用 ES/Redis/宽表优化查询,适合读写负载差异大的场景。

核心要点

Command(写): 标准化数据库,保证一致性 Query(读): 可用 ES/Redis/宽表,优化查询性能

配合事件溯源(Event Sourcing): 写入事件流 → 异步构建读模型

追问与易错

追问方向:

  • 读写模型怎么同步?
  • 增加了什么复杂度?
  • 什么场景适合?

易错点:

  • ❌ 所有系统都该用 CQRS——简单 CRUD 没必要
  • ❌ CQRS 就是读写分离——CQRS 是模型分离

💡 记忆锚点

CQRS不是简单的数据库读写分离,而是"模型分离":写端用规范化模型保证数据正确(如标准MySQL表),读端用反范式化模型追求查询快(如ES全文检索、Redis缓存、宽表)。中间靠事件/消息异步同步。适合读写负载差异大的场景,简单CRUD别用。