2、熔断机制基础概念

2.1 熔断器(Circuit Breaker)的起源

熔断器(Circuit Breaker)的概念最早源于电气工程领域,是一种用于保护电路免受电流过载或短路损坏的自动保护装置。当电流超过安全阈值时,熔断器会自动断开电路,防止设备烧毁或引发火灾。这一“快速切断、防止级联故障”的思想,在分布式系统与微服务架构中得到了广泛借鉴。

在分布式系统中,服务间的远程调用(如 HTTP/RPC)可能因下游服务故障、网络延迟或资源耗尽而失败。若调用方持续重试,不仅无法恢复服务,反而会加剧资源竞争,导致故障扩散(即“雪崩效应”)。Michael Nygard 在其著作 Release It! 中正式将熔断器模式引入软件设计,作为防止级联故障、提升系统弹性的关键模式之一。

核心思想: 熔断器通过监控调用失败率,在故障达到阈值时自动“断开”调用链路,让系统有时间恢复,避免无效等待与资源浪费。

2.2 熔断机制的三大状态

熔断器通常包含三个核心状态:Closed(关闭)、Open(打开) 和 Half-Open(半开)。状态之间的转换由预设的失败阈值、超时时间与探测机制驱动。

熔断器三大状态转换图 Closed (关闭状态) Open (打开状态) Half-Open (半开状态) 失败率超阈值 超时后自动进入 探测成功,重置计数器 探测失败,回到打开状态 状态说明: • Closed:正常调用,失败计数器累积;达到阈值 → Open • Open:快速失败,拒绝所有请求;等待超时 → Half-Open • Half-Open:放行少量探测请求;成功 → Closed,失败 → Open
熔断器三大状态对比
状态 行为 触发条件 对调用方影响
Closed 正常转发请求,统计失败率 初始状态;失败率低于阈值 无影响,正常调用
Open 直接拒绝请求,抛出异常或返回降级响应 失败率超过阈值(如 50%) 调用方立即收到失败响应,避免等待
Half-Open 放行少量探测请求,验证下游是否恢复 Open 状态持续达到超时时间(如 30s) 部分请求可能成功,部分仍被拒绝

2.3 熔断与重试/限流的区别

熔断、重试和限流是分布式系统中三种常见的容错与流量控制手段,但它们的关注点与作用机制有明显差异。理解这些区别,有助于在 MRM 模型验证中正确组合使用它们。

熔断 vs 重试 vs 限流 对比图 熔断(Circuit Breaker) 保护调用方与下游 快速失败,防止级联故障 重试(Retry) 补偿临时性失败 指数退避 + 最大重试次数 限流(Rate Limiting) 控制请求速率 令牌桶 / 漏桶 / 滑动窗口 关键区别: • 熔断:关注下游健康状态,失败率过高时切断链路,属于“保护性”机制。 • 重试:关注单次请求失败,通过重试提高成功率,属于“补偿性”机制。 • 限流:关注请求速率,防止系统过载,属于“预防性”机制。
熔断、重试、限流核心差异
维度 熔断 重试 限流
目标 防止级联故障 补偿临时性失败 控制请求速率
触发条件 失败率超过阈值 请求失败(超时/异常) 请求速率超过阈值
动作 断开调用链路 重新发送请求 拒绝或排队请求
副作用 调用方快速失败 可能增加下游压力 请求被丢弃或延迟
典型场景 下游服务宕机、慢响应 网络抖动、临时超时 突发流量、DDoS 防护
实践建议: 在 MRM 模型验证的 API 网关层,通常将熔断与重试、限流组合使用。例如:先由限流控制入口流量,再由熔断保护下游模型服务,重试仅在熔断器处于 Closed 状态时生效,避免在 Open 状态下加重故障。