熔断器

当下游错误率或慢调用比例超过阈值时快速失败一段时间,给下游恢复窗口;半开状态放少量探测流量验证恢复,是防止级联故障的常用手段。

状态机

状态机
CLOSED    → 正常放行,统计错误率
OPEN      → 直接失败,不再请求下游
HALF-OPEN → 放行少量探测,成功回 CLOSED,失败回 OPEN

参数与兜底设计

项参考做法
触发阈值按窗口统计错误率或慢调用比例(如 50% / 20 次)
打开时长分批递增(如 5s 起),给下游恢复窗口
半开探测放行少量请求,达标才闭合
兜底缓存旧值、默认值或转异步,并配告警
熔断要有兜底结果:缓存旧值、默认值或转异步,否则快速失败对用户仍是不可用。

易错点

  • 熔断阈值未经压测标定,正常抖动即触发熔断
  • 只有熔断没有兜底与告警,故障静默放大

数据来源与参考

  • 《Release It!(第 2 版)》(Nygard)第 4 章
  • microservices.io:Circuit Breaker
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌