重試與退避 (Retries & Backoff)

★★★★Studied

FromGoogle SRE

📚 From the Books

重試與退避 (Retries & Backoff)ConceptReliability

暫時性失敗該重試,但天真的重試會把小故障放大成雪崩。關鍵是退避、抖動、上限與冪等。

🧠 Core Ideas

TIP

重試前先問:這個錯誤可重試嗎(暫時性 vs 永久性)?操作冪等嗎?沒有這兩個前提,重試只會更糟。

⚖️ Tradeoffs

指數退避 + 抖動 (Jitter)
  • 固定間隔重試 → 大家同時重試 = 驚群 (thundering herd)
  • 指數退避(1s, 2s, 4s…)拉開時間,但仍會同步。
  • 隨機抖動打散重試時刻,是避免同步重試的關鍵。
重試預算與熔斷
  • 重試上限與整體重試預算(如總請求的 10%),避免重試流量壓垮下游。
  • 下游已經在燒 → 用熔斷器直接快速失敗,別再重試。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading

🔗 Dive Deeper