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综合练习

熔断与降级

对照 sc-circuit-breaker、Resilience4j。

30 分钟

熔断与降级

下游服务超时或报错时,若调用方 无限重试,线程会被占满,故障 扩散 到全链路。断路器(Circuit Breaker) 在失败过多时 快速失败 或 走降级逻辑——集成模式里的 容错 支柱。

学习目标

  • 理解 Closed / Open / Half-Open 三状态
  • 区分熔断、重试、超时、降级的组合
  • 深入实践见 sc-circuit-breaker

三状态直觉

状态行为
Closed正常调用,统计失败率
Open直接拒绝或 fallback,不再打挂掉的下游
Half-Open试探少量请求,成功则关闭

像电路保险丝:连续短路就跳闸,保护整个系统。

在集成拓扑中的位置

[BFF / Composition API]
        │
        ├── Feign + CircuitBreaker ──► course-svc   ✓
        ├── Feign + CircuitBreaker ──► user-svc     ✗ OPEN → fallback
        └── Feign + CircuitBreaker ──► progress-svc ✓
                    │
              用户仍看到页面(缺头像用默认图)

ip-api-composition 扇出多服务时,每路独立熔断,避免一路拖死整页。

Spring Cloud 示例

@FeignClient(name = "course-service", fallback = CourseClientFallback.class)
public interface CourseClient {
    @GetMapping("/courses/{slug}")
    Course getBySlug(@PathVariable String slug);
}

Resilience4j 配置与完整 walkthrough 见 sc-circuit-breaker。Gateway 层也可配 sc-gateway 限流与超时。

与消息集成的关系

  • 同步链(Feign):熔断直接保护线程池
  • 异步链(kafka-consumer):Consumer 内调外部 API 失败时,靠 重试 + DLQ,不是同一套 Circuit Breaker,但 Bulkhead(舱壁隔离线程池)思想相通

RabbitMQ 消费慢时 prefetch 与队列堆积监控类似「背压」。

合理组合

有限次重试(瞬时抖动)→ 熔断(持续故障)→ fallback(用户体验)

不要:Open 状态下仍同步阻塞等满超时。

练习

  • 停掉一个下游,观察 BFF 组合接口是否部分降级
  • 对照 sc-circuit-breaker 调整 failureRateThreshold
  • 说明 Kafka Consumer 调第三方 HTTP 失败时的 2 种策略

小结

熔断防雪崩;fallback 保体验可降级。 下一课:幂等与去重。

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