用途:CQRS(Command Query Responsibility Segregation,命令查询职责分离)将写入操作与读取操作拆分为不同模型。资料强调它并非默认架构,而是当复杂度成本被证明合理时才启用的优化手段。
主要能力与适用场景:资料列出适用条件——领域业务复杂且不变量规则丰富;读写比大于 10 倍;需要审计或合规(天然适合事件溯源);读模型异构(移动端、分析、后台);读写需要差异化扩展(副本、缓存、搜索)。规则是:先用经典架构,当至少两个适用条件同时出现时再迁移到 CQRS。
架构:命令侧为规范化写入模型,聚焦业务不变量,只读取验证所需数据;查询侧为反规范化读模型,聚焦读取性能,不含业务逻辑;投影把事件转换为读模型,具最终一致性。
权衡:好处是读写独立扩展、按需定制读模型、便于接入事件溯源、天然审计轨迹;代价是最终一致性(典型约 50-500 毫秒延迟)、需维护两套模型的更多代码、事件流调试更复杂、后期迁移成本很高。
关联模式:事件溯源、Saga/Process Manager、Outbox 模式、物化视图。
反模式:无明确用例就用 CQRS;读模型执行业务规则;同步投影;无快照的事件溯源;命令返回完整数据。
限制:资料未提供具体收费、价格、平台支持或安装步骤信息。更多实现细节(Symfony、Laravel、.NET、EventStoreDB、渐进迁移示例与检查清单)指向 @.claude/skills/cqrs/REFERENCE.md。