2、熔断机制基础概念
2.1 熔断器(Circuit Breaker)的起源
熔断器(Circuit Breaker)的概念最早源于电气工程领域,是一种用于保护电路免受电流过载或短路损坏的自动保护装置。当电流超过安全阈值时,熔断器会自动断开电路,防止设备烧毁或引发火灾。这一“快速切断、防止级联故障”的思想,在分布式系统与微服务架构中得到了广泛借鉴。
在分布式系统中,服务间的远程调用(如 HTTP/RPC)可能因下游服务故障、网络延迟或资源耗尽而失败。若调用方持续重试,不仅无法恢复服务,反而会加剧资源竞争,导致故障扩散(即“雪崩效应”)。Michael Nygard 在其著作 Release It! 中正式将熔断器模式引入软件设计,作为防止级联故障、提升系统弹性的关键模式之一。
核心思想: 熔断器通过监控调用失败率,在故障达到阈值时自动“断开”调用链路,让系统有时间恢复,避免无效等待与资源浪费。
2.2 熔断机制的三大状态
熔断器通常包含三个核心状态:Closed(关闭)、Open(打开) 和 Half-Open(半开)。状态之间的转换由预设的失败阈值、超时时间与探测机制驱动。
| 状态 | 行为 | 触发条件 | 对调用方影响 |
|---|---|---|---|
| Closed | 正常转发请求,统计失败率 | 初始状态;失败率低于阈值 | 无影响,正常调用 |
| Open | 直接拒绝请求,抛出异常或返回降级响应 | 失败率超过阈值(如 50%) | 调用方立即收到失败响应,避免等待 |
| Half-Open | 放行少量探测请求,验证下游是否恢复 | Open 状态持续达到超时时间(如 30s) | 部分请求可能成功,部分仍被拒绝 |
2.3 熔断与重试/限流的区别
熔断、重试和限流是分布式系统中三种常见的容错与流量控制手段,但它们的关注点与作用机制有明显差异。理解这些区别,有助于在 MRM 模型验证中正确组合使用它们。
| 维度 | 熔断 | 重试 | 限流 |
|---|---|---|---|
| 目标 | 防止级联故障 | 补偿临时性失败 | 控制请求速率 |
| 触发条件 | 失败率超过阈值 | 请求失败(超时/异常) | 请求速率超过阈值 |
| 动作 | 断开调用链路 | 重新发送请求 | 拒绝或排队请求 |
| 副作用 | 调用方快速失败 | 可能增加下游压力 | 请求被丢弃或延迟 |
| 典型场景 | 下游服务宕机、慢响应 | 网络抖动、临时超时 | 突发流量、DDoS 防护 |
实践建议: 在 MRM 模型验证的 API 网关层,通常将熔断与重试、限流组合使用。例如:先由限流控制入口流量,再由熔断保护下游模型服务,重试仅在熔断器处于 Closed 状态时生效,避免在 Open 状态下加重故障。