SuperAPI AI 工具集

staff-engineering-skills-retry-storms

通用与其它

查看项目

更新于 10-16 08:11

技能介绍

用途:该技能用于在给网络调用添加重试逻辑、配置 HTTP 客户端或构建分布式调用链时,防止重试把局部故障放大为级联中断。

主要能力:资料指出重试风暴是正反馈循环——服务变慢导致客户端超时重试,重试使负载翻倍、服务更慢,最终只有“正常”和“完全崩溃”两种稳定状态。多层重试会相乘,例如网关、服务 A、服务 B 各重试 3 次,一次用户请求会变成 27 次数据库查询。

检测信号:多层都有重试逻辑(单次用户请求最坏情况超过约 10 次即过多,应只在一层重试,最好是最外层);重试所有错误包括 4xx(400/401/409 重试永远不会成功,只应重试 5xx、429、408 和网络错误);固定间隔重试或无退避;没有熔断器的重试;超时乘以重试次数超过用户耐心;HTTP 客户端库与应用代码都带重试导致静默相乘。

模式:仅重试可重试错误;使用带完整抖动的指数退避,避免所有客户端同时重试;用熔断器在连续失败后停止发送请求,给下游恢复时间;用重试预算把重试限制为总流量的一定比例;传播剩余截止时间,而不是每次重试都给新超时;服务端过载时快速返回 503 进行负载卸载。

限制与关联:资料强调被重试的操作必须幂等,否则可能重复扣款;重试与幂等不可分割。还关联惊群、分布式系统谬误和背压等主题。具体实现细节和完整代码示例以原文为准。