CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
集成模式入门/课时/CQRS 入门
RawBlame
课时目录12 节

集成模式入门

  1. 01集成模式是什么
  2. 02同步 vs 异步
  3. 03消息传递模式
  4. 04事件驱动架构
  5. 05Saga 与分布式事务
  6. 06API 组合
  7. 07BFF 模式
  8. 08熔断与降级
  9. 09幂等与去重
  10. 10CQRS 入门
  11. 11反模式
  12. 12综合练习

CQRS 入门

读写分离、投影;与 ES 搜索对照。

30 分钟

CQRS 入门

CQRS(Command Query Responsibility Segregation) 把 写(Command) 与 读(Query) 模型分开:写侧保业务不变式;读侧为查询 优化结构(投影、缓存、搜索引擎)。常与事件驱动、Kafka 消费链配合。

学习目标

  • 区分 Command 与 Query 的职责
  • 理解读模型投影与最终一致
  • 对照 ip-event-driven 与搜索场景

动机:读写需求分裂

写:创建订单 — 强一致、事务、规则复杂
读:订单列表 / 报表 / 全文搜索 — 多表 JOIN、高 QPS、可略滞后

同一 MySQL 表既服务写又服务复杂读,索引与锁竞争互相拖累。

CQRS 拓扑

         Commands                    Events
Client ─────────► [Write Model] ─────────► [Kafka]
              order-svc / MySQL              │
                                             ▼
                                    [Projection Workers]
                                             │
                         ┌───────────────────┼───────────────────┐
                         ▼                   ▼                   ▼
                   [Read DB: MySQL]    [Redis 缓存]         [Elasticsearch]
                         ▲
Client ─── Queries ──────┘
              (BFF / GraphQL / REST)

写路径仍 sb-transaction;读路径订阅 kafka-consumer 更新投影。

投影(Projection)直觉

OrderCreated 事件 → Worker 插入 order_list_view(冗余 userName、courseTitle,免 JOIN)。

读模型来源事件用途
用户订单列表OrderCreated, OrderPaidApp 列表页
销售报表OrderPaidAdmin BI
搜索索引CourseUpdatedES 全文

滞后通常 毫秒~秒;UI 可提示「处理中」或读写分离路由。

与 API 组合 / BFF

  • ip-api-composition 可改为 只查读模型,减少扇出
  • gql-nplus1 问题在 CQRS 读库上 Often 已扁平化

不必上 Event Sourcing(存全量事件为唯一真相);CQRS 可只用 MySQL 双表/双库。

何时不必 CQRS

  • 读写都简单、QPS 低 → 单体 MySQL 足够(CodeRoadMap 现状)
  • 团队无法维护投影一致性 → 先同步 ip-sync-async 评估

练习

  • 设计 CoursePublished 事件更新哪 2 个读模型
  • 说明读模型落后 2 秒时列表页如何 UX 处理
  • 画 Write → Kafka → Read 的数据流

小结

CQRS = 写保规则,读为性能定制;事件同步两侧。 下一课:反模式。

加载本节练习…
← 上一课幂等与去重下一课 →反模式