直接回答

CQRS(命令查询职责分离)是把系统的写操作(命令)和读操作(查询)拆成两套独立模型的架构模式:写侧负责业务校验和状态变更,读侧用专门为查询优化的数据视图响应读取,二者甚至可用不同的存储和部署单元。它与"命令查询分离原则"(CQS)不是一个层次:CQS 是 Bertrand Meyer 提出的方法级原则——一个方法要么改变状态、要么返回数据,不能兼有;CQRS 则把这条原则放大到整个系统架构层面。

展开解析

CQRS 的收益在于读写可独立优化和扩展:读多写少的系统可单独扩容查询侧,读模型可用宽表、搜索引擎、缓存等异构存储。但它常与 Event Sourcing 搭配,由此引入最终一致性——写入后读模型尚未更新,前端需容忍短暂滞后。易错点是当成默认模式到处套用:简单 CRUD 引入 CQRS 只会徒增复杂度,它适合读写负载悬殊、领域逻辑复杂、协作竞争激烈的核心域。追问:读写模型同步失败怎么处理、与 DDD 限界上下文的关系、是否必须两套数据库(可以同源不同模型,未必物理分离)。