一、目的:随着重试次数增加,逐步延长重连等待时间,避免加重服务器负担。
二、计算公式:
每次重试的延迟时间 = 初始间隔 × (退避基数 ^ 重试次数)
通常设置上限防止等待时间过长。
const delay = Math.min(initialDelay * Math.pow(base, retryCount), maxDelay)
三、为什么需要指数退避?
场景 | 无退避策略 | 指数退避策略 |
---|---|---|
服务器临时过载 | 客户端持续轰炸,服务器崩溃 | 逐步增加间隔,给服务器恢复时间 |
网络抖动 | 浪费带宽和电量 | 智能等待网络稳定 |
移动端弱网环境 | 快速耗尽电池 | 减少无效尝试 |