课程 301 / 365
82%
部署与可靠性·判断·13 分钟
正文已完成

重试可能修复瞬时故障,也可能放大事故

根据错误类别、幂等性、退避与预算判断一次请求是否应该重试。

L301

重试不是默认善意。网络抖动和临时 503 可能在稍后恢复,但参数错误、权限拒绝和非幂等写入盲目重试只会增加负载或重复副作用。可靠重试必须有分类、退避、抖动和总预算。

这一课的结果

能区分可重试与不可重试错误,并识别重试风暴风险。

核心概念

先把关键判断说清楚

01

错误分类先于次数

超时、429、部分 5xx 可能暂时恢复;400、401 和 Schema 错误通常需要修输入或权限。

02

指数退避加抖动

逐次拉长等待并加入随机偏移,避免大量客户端在同一时刻同步重试。

03

幂等保护写操作

付款、发券和发送消息等副作用操作需要幂等键,才能安全应对响应丢失后的重发。

案例拆解

五次立即重试让数据库雪上加霜

数据库过载返回 503,数百个客户端立即连续重试五次,流量瞬间放大。

  1. 01

    只对明确瞬时错误启用重试,认证与参数错误直接失败。

  2. 02

    采用 1、2、4 秒指数退避并加入随机抖动,遵守服务端 Retry-After。

  3. 03

    限制每次用户操作的总重试预算,并在耗尽后降级或转人工。

案例结果

恢复期间额外流量被控制,系统获得喘息时间而不是承受重试风暴。

提交前练习

现在轮到你

为三个不同错误写出是否重试及其依据。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

429是按 Retry-After 重试;401是不重试,刷新凭据或失败;连接超时是幂等请求最多重试两次,等待 1±0.2 秒、3±0.5 秒;总时长不超 8 秒,耗尽后返回可追踪错误。

评分标准

  • 错误分类基于可恢复性
  • 退避避免同步洪峰
  • 预算和耗尽动作明确

本课收口 · 学习证据

完成,不等于随手打一个勾。

确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。

0 / 3
02完成本课练习0 / 4 项必填内容已填写
03通过理解检查约 30 秒
哪种请求在自动重试前最需要幂等保护?
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。

资料来源

继续核对与延伸阅读

本课内容最近更新于