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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

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

API 组合

聚合多个下游 API;BFF 前置。

30 分钟

API 组合

移动端一页「课程详情」可能需要 课程、作者、进度、评论 四个微服务的数据。API 组合(API Composition) 在 聚合层 并行调多个下游,拼成 一个响应 给客户端——避免浏览器 N 次往返。

学习目标

  • 理解聚合器 vs 客户端编排的分工
  • 识别并行调用与部分失败的降级策略
  • 对照 gql-rest 与 BFF 边界

客户端编排的问题

App ──GET /courses/1──► course-svc
App ──GET /users/42────► user-svc      (4 次 RTT + 4 套错误处理)
App ──GET /progress────► progress-svc
App ──GET /comments────► comment-svc

移动网络下延迟叠加;各服务 DTO 版本不一致时 App 负担重。

API 组合器拓扑

                    ┌──────────────────┐
  App ──GET /pages/course-detail──► │ Composition API  │
                    │  (或 Gateway 内)  │
                    └────────┬─────────┘
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
        course-svc     user-svc      progress-svc
              │              │              │
              └──────────────┴──────────────┘
                         并行 Feign / WebClient
                              │
                         合并 JSON 返回

实现常放在 独立聚合服务 或 sc-gateway 后的 BFF(下一课 ip-bff)。

Spring 侧直觉

public CourseDetailPage compose(String slug, Long userId) {
    CompletableFuture<Course> course = async(() -> courseClient.get(slug));
    CompletableFuture<User> author = async(() -> userClient.getByCourse(slug));
    CompletableFuture<Progress> prog = async(() -> progressClient.get(userId, slug));
    return merge(course.join(), author.join(), prog.join());
}

配合 sc-feign 与超时;单路失败走 ip-circuit fallback(缺进度则显示「未开始」)。

与 GraphQL 的关系

方式谁选字段谁调下游
REST 组合服务端固定 DTOComposition 服务
GraphQL客户端 QueryResolver 调下游()
gql-resolvers

GraphQL 可看作 通用组合层;REST 组合适合 页面级、缓存友好 的固定聚合。注意扇出过大、读投影时间差(ip-cqrs)与部分字段降级,避免整页 500。

练习

  • 设计 /pages/home 需调哪些服务、哪些可并行
  • 某下游超时,列出 2 种降级字段策略
  • 对比 GraphQL 单次 Query 与本模式的运维成本

小结

API 组合 = 服务端替客户端跑 N 个调用并拼结果。 下一课:BFF 模式。

加载本节练习…
← 上一课Saga 与分布式事务下一课 →BFF 模式