上一题下一题

CQRS 适合读写模型差异明显场景的原因及其带来的复杂度

旗舰版
来源:alibaba初级工程师读写模型同步延迟读写模型分离最终一致性CQRS
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

CQRS,也就是 Command Query Responsibility Segregation,本质上是把“写操作”和“读操作”拆开建模、拆开处理。

它适合读写模型差异明显的场景,主要原因是读和写关注点本来就不一样。

写模型更关注业务规则、数据一致性、事务边界和领域约束,比如下单时要校验库存、价格、优惠、用户状态,这时候模型通常会比较复杂,强调状态变更的正确性。

读模型更关注查询效率和展示结构,比如订单列表页可能需要订单信息、用户信息、商品信息、物流状态、支付状态,如果直接用写模型去查,可能需要多表 join,性能和扩展性都不好。CQRS 可以为查询单独设计读模型,比如宽表、聚合表、ES 索引、缓存视图等,让查询更贴近页面或接口需要。

所以在读写差异明显的系统里,CQRS 的好处比较明显:

写侧可以保持领域模型清晰,专注业务规则和一致性; 读侧可以按查询场景优化,比如反范式、冗余字段、预聚合; 读写可以独立扩展,比如读流量大时只扩容查询服务; 可以降低复杂查询对核心写库的压力; 在配合事件驱动时,读模型可以通过领域事件异步构建。

举个例子,电商订单系

登录后查看完整内容