外观
一句话答案
CQRS 将读写分离为不同模型/数据库,写端保证一致性,读端用 ES/Redis/宽表优化查询,适合读写负载差异大的场景。
核心要点
Command(写): 标准化数据库,保证一致性 Query(读): 可用 ES/Redis/宽表,优化查询性能
配合事件溯源(Event Sourcing): 写入事件流 → 异步构建读模型
追问与易错
追问方向:
- 读写模型怎么同步?
- 增加了什么复杂度?
- 什么场景适合?
易错点:
- ❌ 所有系统都该用 CQRS——简单 CRUD 没必要
- ❌ CQRS 就是读写分离——CQRS 是模型分离
💡 记忆锚点
CQRS不是简单的数据库读写分离,而是"模型分离":写端用规范化模型保证数据正确(如标准MySQL表),读端用反范式化模型追求查询快(如ES全文检索、Redis缓存、宽表)。中间靠事件/消息异步同步。适合读写负载差异大的场景,简单CRUD别用。