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
失败率超阈值后短路请求,经过冷却再半开探测,防止级联故障。
物流 API 变慢拖垮订单列表
每次列表同步查承运商,超时 30 秒;流量上来后连接池耗尽。
- 01
读取本地最后状态,物流同步转后台。
- 02
外部调用 2 秒超时,安全错误有限重试。
- 03
失败率高时熔断并展示更新时间。
承运商故障不再传染主系统,用户仍看到可解释的旧状态。
马上动手
- 为三次重试写指数退避序列。
- 列出可重试与不可重试错误。
常见坑
- 每层都重试导致次数相乘
- 超时大于上游请求预算
- 对创建付款无幂等重试
05 · KNOWLEDGE CHECK为什么 Retry 必须配合 Timeout?查看答案⌄
答案
没有单次时间边界就无法控制总重试预算;超时让一次尝试可结束,重试才有机会在剩余预算内发生。