Visual LabINTERACTIVE LEARNING
04 · BUSINESS BACKENDP115 MIN

Timeout、Retry 与 Circuit Breaker

为第三方调用设置时间预算、重试条件和故障隔离,避免小故障放大。

MENTAL MODELFAILURE CONTROL
01Call 2s Timeout
02Retry with Backoff
03Failure Threshold
04Open
05Half-open Probe
Timeout 决定最多等多久,Retry 决定是否再试,Circuit Breaker 决定何时暂时不再给故障依赖压力。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Timeout

为连接、响应或完整操作设置有限等待时间,并受上游总预算约束。

02

Retry

对短暂且安全的失败再次尝试,使用退避、抖动和最大次数。

03

Circuit Breaker

失败率超阈值后短路请求,经过冷却再半开探测,防止级联故障。

02 · BLIND BOTS CASE

物流 API 变慢拖垮订单列表

问题现场

每次列表同步查承运商,超时 30 秒;流量上来后连接池耗尽。

  1. 01

    读取本地最后状态,物流同步转后台。

  2. 02

    外部调用 2 秒超时,安全错误有限重试。

  3. 03

    失败率高时熔断并展示更新时间。

得到什么

承运商故障不再传染主系统,用户仍看到可解释的旧状态。

03 · PRACTICE

马上动手

  1. 为三次重试写指数退避序列。
  2. 列出可重试与不可重试错误。
04 · PITFALLS

常见坑

  • 每层都重试导致次数相乘
  • 超时大于上游请求预算
  • 对创建付款无幂等重试
05 · KNOWLEDGE CHECK为什么 Retry 必须配合 Timeout?查看答案⌄
答案

没有单次时间边界就无法控制总重试预算;超时让一次尝试可结束,重试才有机会在剩余预算内发生。