一、目的:隨著重試次數增加,逐步延長重連等待時間,避免加重服務器負擔。
二、計算公式:
每次重試的延遲時間 =?初始間隔 × (退避基數 ^ 重試次數)
通常設置上限防止等待時間過長。
const delay = Math.min(initialDelay * Math.pow(base, retryCount), maxDelay)
三、為什么需要指數退避?
場景 | 無退避策略 | 指數退避策略 |
---|---|---|
服務器臨時過載 | 客戶端持續轟炸,服務器崩潰 | 逐步增加間隔,給服務器恢復時間 |
網絡抖動 | 浪費帶寬和電量 | 智能等待網絡穩定 |
移動端弱網環境 | 快速耗盡電池 | 減少無效嘗試 |