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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
集成模式入门/课时/综合练习
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综合练习

综合练习

订单-库存 Kafka 事件流设计。

40 分钟

综合练习

把本 track 模式串成 订单-库存 场景:用户下单、扣库存、通知、读模型更新。技术栈对照 kafka-spring、sc-feign、ip-saga。

学习目标

  • 设计端到端事件流与同步边界
  • 标注熔断、幂等、Outbox 插入点
  • 能向团队讲解架构权衡

业务需求

  1. 用户下单 → 必须立刻 知道是否成功(库存不足则失败)
  2. 成功后:发邮件、更新「我的订单」列表、写入搜索/统计
  3. 库存服务偶发慢,不能拖垮订单 API

推荐架构

┌──────────┐  POST /orders   ┌─────────────┐  Feign+熔断  ┌────────────────┐
│ Web/App  │ ──────────────► │ order-svc   │ ────────────► │ inventory-svc  │
└──────────┘                 │  + Outbox   │               └────────────────┘
                             └──────┬──────┘
                                    │ OrderCreated (Kafka)
                    ┌───────────────┼───────────────┐
                    ▼               ▼               ▼
              [notify-svc]   [read-model]    [analytics]
              RabbitMQ 可选   MySQL 投影      Kafka 消费
  • 同步:order → inventory 预留库存(ip-circuit fallback:库存服务不可用 → 503 + 重试提示)
  • 异步:OrderCreated → 通知(rmq-spring 任务队列亦可)、读模型(ip-cqrs)
  • Outbox:ip-event-driven 保证落库与发消息一致

失败路径(Saga 轻量版)

reserve 失败 → 订单标记 FAILED,不发 OrderCreated
reserve 成功、发消息失败 → Outbox Relay 重试
notify 重复消费 → messageId 去重([ip-idempotency](/tracks/integration-patterns-essentials/lessons/ip-idempotency))

不必上中心 Orchestrator;协同式事件 + 补偿 ReleaseInventory 即可 lab 规模。

BFF 层(可选)

GET /pages/orders ── Mobile BFF ── 只读 order_list_view(CQRS 投影)
                  └── 不调 4 个微服务([ip-bff](/tracks/integration-patterns-essentials/lessons/ip-bff))

Admin 复杂筛选可考虑 GraphQL(gql-spring);公开端 REST 足够。

Lab 任务清单

  • 定义 OrderCreated Avro/JSON schema 与 topic 名
  • 实现 inventory Feign + Resilience4j(对照 sc-circuit-breaker)
  • Consumer 用 processed_events 表做幂等
  • 用 kafka-monitor 看 lag

评审问题(自测)

  • 为何扣库存不用纯 Kafka 异步?
  • 若 inventory 与 order 合并部署,哪些模式可删掉?(ip-anti)

小结

同步保关键路径;Kafka 广播副作用;Outbox+幂等+熔断兜底。 本 track 完结——按需深入 Kafka、RabbitMQ、Spring Cloud 动手实验。

加载本节练习…
← 上一课反模式