Exponentielles Backoff

Exponentielles Backoff erhöht die Verzögerung bei jedem Wiederholungsversuch – 0,5 s, 1 s, 2 s, 4 s – bis zu einem Maximalwert und gibt einem überlasteten Server so Zeit zur Erholung. Jitter randomisiert die Verzögerungen, da sonst alle Clients, die gleichzeitig einen Fehler erlitten haben, gleichzeitig einen erneuten Versuch unternehmen und so die Fehlerspitze reproduzieren würden.

So funktioniert es

Eine typische Vorgehensweise: Eine zufällige Wartezeit zwischen null und Basis × 2^Versuche, maximal jedoch eine bestimmte Zeit, wird nach einer festgelegten Anzahl von Versuchen oder einer bestimmten Gesamtzeit abgebrochen. Wiederholungsversuche erfolgen nur bei sicheren Methoden oder Schreibvorgängen, die durch einen Idempotenzschlüssel geschützt sind, und nur bei Fehlern, die möglicherweise nur vorübergehend sind: Timeouts, 429, 502, 503, 504.

Das Missverständnis

Mehr Wiederholungsversuche bedeuten höhere Zuverlässigkeit. Unbegrenzte Wiederholungsversuche verstärken jedoch einen Ausfall: Jede Schicht, die drei Wiederholungsversuche unternimmt, erhöht die Last der darunterliegenden Schicht um ein Vielfaches. Wiederholungsbudgets, -obergrenzen und Schutzschalter existieren, weil Wiederholungsversuche selbst eine Fehlerquelle darstellen.

Probieren Sie es hier aus

Konfigurieren Sie die Fault Injection API mit PUT /faults/v1/config – beispielsweise mit einer Fehlerrate von 0,5 und dem Status 503 – und rufen Sie dann wiederholt GET /faults/v1/target auf, um zu beobachten, wie Ihre Wiederholungsrichtlinie mit einer unzuverlässigen Abhängigkeit umgeht.

Quellen

Weitere Begriffe

Diese Seite auf Englisch lesen

Alle Glossarbegriffe · Testtechniken · Alle 39 Mock-REST-APIs

Zuletzt aktualisiert