外观主题
阅读语言

熔断器模式 —— 快速失败、半开探测、自愈恢复

软件 本站软件 3小时前
https://yxp.hk/p/4Bt1Et

📦 开源仓库:learn_circuit_breaker · 纯 Python 标准库 · 学习演示项目

下游挂了还傻傻地等超时,只会把上游线程也拖死,故障层层传染。熔断器(Circuit Breaker)借用电工的保险丝:下游连续失败到阈值就「跳闸」,之后的调用立即失败不再空等;冷却一段时间后放一个探测请求过去,恢复了就自动闭合。防雪崩 + 自愈,一个模式全包。

核心思路

            失败次数达到阈值
 closed ────────────────────────► open
   ▲                               │
   │                               │ 冷却时间到
   │                               ▼
   └──── 探测成功 ────────────── half-open
  • closed:正常放行,统计失败次数
  • open:调用立即失败(CIRCUIT OPEN),不再等死掉的下游
  • half-open:冷却后放一个探测过去;成功 → 闭合,失败 → 继续开

为什么值得学

  • 阻断雪崩:慢/挂的下游不再耗光你的线程
  • 快速失败:调用方秒级拿到明确错误,而不是干等超时
  • 自愈:下游恢复后,探测自动把熔断翻回闭合

演示场景

  1. closed 正常放行 → 2. 连续 3 次失败跳闸,后续调用快速失败 → 3. 冷却后探测成功闭合 → 4. 探测失败则回到 open

运行

python run_all.py

纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_circuit_breaker,欢迎 Star 与提 Issue。