Schnittstellen

Thundering Herd verhindern, statt einen Ausfall zu vervielfachen

Falsch implementierte Retry-Logik kann einen Ausfall verschlimmern, statt ihn abzumildern.

Wenn tausend Clients gleichzeitig, sofort und zeitgleich, einen fehlgeschlagenen Request wiederholen, trifft das den Server mit einer Lastwelle, ausgerechnet in dem Moment, in dem er sich gerade erholen wollte. Das nennt sich Thundering Herd, die Loesung dafuer heisst Exponential Backoff mit Jitter.

Exponential Backoff

Nach dem ersten Fehler eine Sekunde warten, nach dem zweiten zwei, nach dem dritten vier, nach dem vierten acht, jeder Retry wartet doppelt so lang wie der vorherige. Das gibt dem Server Zeit, sich zu erholen.

Jitter

Nutzen alle Clients dasselbe Backoff-Muster, retrien sie trotzdem synchron. Jitter fuegt eine zufaellige Komponente hinzu, sodass statt eines exakten Wartewerts ein Wert in einer Spanne gewaehlt wird, was die Last gleichmaessiger verteilt.

Circuit Breaker

Nach mehreren aufeinanderfolgenden Fehlern werden fuer eine definierte Zeit keine weiteren Retries mehr versucht, der Circuit oeffnet sich. Das verhindert, dass ein dauerhaft ausgefallener Service mit Retries bombardiert wird. Nach der Pause folgt ein einzelner Test-Request im Half-Open-Status, ist er erfolgreich, schliesst sich der Circuit wieder.

Checkliste: Exponential Backoff implementiert, Jitter hinzugefuegt, maximale Retry-Anzahl definiert, Circuit Breaker fuer kritische externe Dependencies, Retry-Verhalten in Tests verifiziert, Monitoring auf Retry-Rate.

Ein Beispiel aus der Praxis

Ein Client-System versuchte bei einem kurzen Ausfall des Zielservers, jeden fehlgeschlagenen Request sofort und ohne Wartezeit erneut zu senden. Das Ergebnis war eine Lastwelle in dem Moment, in dem der Zielserver gerade wieder online kam, was zu einem erneuten, laengeren Ausfall fuehrte, praktisch ein selbst verursachter zweiter Vorfall. Nach der Einfuehrung von Exponential Backoff mit Jitter verteilten sich die Wiederholungsversuche gleichmaessig ueber mehrere Sekunden, und der Zielserver konnte sich beim naechsten aehnlichen Vorfall ohne Probleme erholen.

Retry-Strategie fuer eure Integrationen? markom.digital implementiert robuste Retry- und Circuit-Breaker-Mechanismen fuer kritische Schnittstellen.

Weitere Beiträge