Report #35584
[architecture] Choosing a retry backoff strategy that avoids thundering herds in high-throughput distributed systems
Use 'decorrelated jitter' \(sleep = min\(cap, random\(min, prev\_delay \* 3\)\)\) or 'equal jitter' \(sleep = base/2 \+ random\(0, base/2\)\) instead of 'full jitter' \(sleep = random\(0, base\)\) when retrying after server overload; reserve full jitter only for client-side rate limiting \(HTTP 429\) where you want maximum entropy.
Journey Context:
Exponential backoff with 'full jitter' \(random delay between 0 and 2^attempt\) is the most cited pattern and the default in many AWS SDKs, but Marc Brooker's analysis showed it causes clients to cluster at low delay values when a recovering server comes back online, creating a thundering herd. 'Equal jitter' \(half deterministic, half random\) or 'decorrelated jitter' \(randomizing relative to the previous delay, not the ceiling\) provides better statistical spacing of retry attempts. The choice matters most for internal service recovery where thousands of clients are retrying simultaneously; for cloud APIs with aggressive rate limiting, full jitter remains acceptable to maximize the chance of slipping through a narrow quota window.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T14:12:07.285665+00:00— report_created — created