Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist Exponential Backoff und Random Jitter?

Beitrags-Cover: Was ist Exponential Backoff und Random Jitter?
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
```html
Bei der Entwicklung verteilter Systeme sind Fehler keine Ausnahme, sondern die Norm. Das Netzwerk kann hängen bleiben, der Dienst kann vorübergehend ausfallen, die Datenbank kann für eine Sekunde nicht reagieren. Und in diesem Moment stellt sich eine einfache, aber gefährliche Frage: Wie genau soll die Anfrage wiederholt werden? Wenn man es auf die gleiche Weise macht, wird das System sich leicht selbst zerstören.
Angry Spongebob Squarepants GIF.gif
Genau hier kommen exponentielle Verzögerung (exponential backoff) und zufälliger Jitter (random jitter) ins Spiel.

Exponential Backoff

Exponential Backoff ist eine Strategie für Wiederholungsversuche, bei der jeder nachfolgende Retry (Wiederholungsversuch) mit einer zunehmend größeren Verzögerung erfolgt. Die Idee ist sehr einfach: Wenn etwas kaputt ist, sollte man nicht sofort wieder an die gleiche Tür klopfen. Der erste Versuch kann fast sofort sein, der zweite nach einer Sekunde, der dritte nach zwei, dann vier, acht und so weiter. Die Verzögerung wächst exponentiell.
Das gibt dem System Zeit, "durchzuatmen". Wenn der Dienst vorübergehend überlastet ist oder aufgrund von Spitzenlasten ausfällt, verringert der exponentielle Backoff den Druck, anstatt ihn zu erhöhen. Ohne diese Strategie beginnen die Kunden, massenhaft gleichzeitig Retry zu machen, und selbst ein gesunder Dienst kann einem solchen Ansturm nicht standhalten.
Aber hier gibt es einen heimtückischen Punkt. Stellen Sie sich tausend Kunden vor, die gleichzeitig einen Fehler erhalten und die gleiche Backoff-Formel verwenden. Sie alle werden eine Sekunde warten, dann zwei, dann vier - und schlagen wieder gleichzeitig auf den Server ein. Es entsteht eine synchronisierte Menge, die in Wellen kommt. Das ist ein bekanntes Problem - der Effekt des "thundering herd".
Deshalb wird zum exponentiellen Backoff fast immer zufälliger Jitter (random jitter) hinzugefügt. Jitter ist eine kleine zufällige Abweichung in der Verzögerung. Anstatt genau 4 Sekunden zu warten, kann der Kunde 3,2 warten, ein anderer 4,7, jemand anders 2,9. Alle diese exponentiellen Verzögerungen bleiben bestehen, aber die Anfragen kommen nicht mehr gleichzeitig.
Mit Jitter beginnt das System, "lebendiger" und stabiler zu agieren. Die Last wird über die Zeit verteilt, es ist für den Dienst einfacher, sich zu erholen, und die Wahrscheinlichkeit eines erneuten Ausfalls aufgrund massenhafter Retries sinkt drastisch. Dies ist besonders wichtig für APIs, Warteschlangen, Job-Worker und alle Integrationen mit externen Diensten.
Tor Muppets GIF.gif
Zusammenfassend beantwortet der exponentielle Backoff die Frage "Wann soll ich wiederholen?", während der Jitter die Frage "Wie mache ich das asynchron zu allen anderen?" beantwortet. Zusammen bilden sie die grundlegende Architektur für zuverlässige Systeme. Wenn Sie einen Retry ohne Backoff haben - ist das ein rotes Signal. Wenn es Backoff ohne Jitter gibt - ein gelbes. Und wenn beides vorhanden ist, hat das System deutlich bessere Chancen, echte und nicht labortechnische Ausfälle zu überstehen.
```

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was ist Elasticsearch und wie funktioniert es?
22. Nov, 12:35 Uhr

Was ist Elasticsearch und wie funktioniert es?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist eine Zeitreihen-Datenbank?
22. Nov, 12:42 Uhr

Was ist eine Zeitreihen-Datenbank?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22. Nov, 12:49 Uhr

Was ist VACUUM in PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist ein B-Baum (ausgeglichener Baum)?
22. Nov, 12:58 Uhr

Was ist ein B-Baum (ausgeglichener Baum)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)
30. Dez, 14:05 Uhr

Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Thundering Herd Problem: was ist das und warum bricht es die Produktion
15. Jan, 10:14 Uhr

Thundering Herd Problem: was ist das und warum bricht es die Produktion

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Anbindung des Elasticsearch-Dienstes an die Rails-Anwendung (Coolify in der Cloud, Server bei Hetzner).
15. Feb, 13:45 Uhr

Anbindung des Elasticsearch-Dienstes an die Rails-Anwendung (Coolify in der Cloud, Server bei Hetzner).

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
„Kein Speicherplatz mehr auf dem Gerät“ - wenn Docker die ganze Festplatte aufgefressen hat
15. Feb, 19:57 Uhr

„Kein Speicherplatz mehr auf dem Gerät“ - wenn Docker die ganze Festplatte aufgefressen hat

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
15. Feb, 20:03 Uhr

Sidekiq 7.3.x und connection_pool 3.0 - Inkompatibilität, die die Worker bricht

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska