Ein exponentieller Backoff ist eine Standardstrategie zur Fehlerbehebung für Netzwerkanwendungen, bei der ein Client eine fehlgeschlagene Anfrage regelmäßig noch einmal sendet, wobei die Abstände zwischen den Anfragen immer länger werden. Clients sollten für alle Anfragen an Memorystore for Redis, die HTTP-5xx
- und 429
-Antwortcodefehler zurückgeben, einen exponentiellen Backoff verwenden.
Es ist wichtig zu verstehen, wie der exponentielle Backoff funktioniert, wenn Sie Clientanwendungen, die die REST API von Memorystore for Valkey verwenden .
Wenn Sie die Google Cloud Console verwenden, sendet diese in Ihrem Namen Anfragen an Memorystore for Valkey und verarbeitet erforderliche Backoffs.
Beispielalgorithmus
Ein exponentieller Backoff-Algorithmus wiederholt Anfragen, indem die Wartezeit zwischen den Wiederholungen exponentiell bis zur maximalen Backoff-Zeit erhöht wird. Ein Beispiel:
Senden Sie eine Anfrage an Memorystore for Valkey.
Wenn die Anfrage fehlschlägt, wartet das System 1 +
random_number_milliseconds
Sekunden und wiederholt dann die Anfrage.Wenn die Anfrage fehlschlägt, wartet das System 2 +
random_number_milliseconds
Sekunden und wiederholt dann die Anfrage.Wenn die Anfrage fehlschlägt, wartet das System 4 +
random_number_milliseconds
Sekunden und wiederholt dann die Anfrage.Und so weiter bis zur
maximum_backoff
-Zeit.Das System wartet weiter und führt erneute Versuche bis zu einer maximalen Anzahl an Wiederholungsversuchen aus, jedoch ohne den zeitlichen Abstand zwischen zwei Versuchen zu erhöhen.
wobei
Die Wartezeit beträgt min(((2^
n
)+random_number_milliseconds
),maximum_backoff
), wobein
bei jeder Ausführung (Anfrage) um 1 erhöht wird.random_number_milliseconds
steht für eine zufällige Anzahl von Millisekunden, deren Wert größer oder gleich 1.000 ist. So lassen sich Situationen vermeiden, in denen viele Clients synchronisiert werden und alle gleichzeitig Anfragen wiederholen und diese in synchronisierten Wellen senden. Der Wert vonrandom_number_milliseconds
sollte nach jeder Anfragewiederholung neu berechnet werden.maximum_backoff
ist normalerweise 32 oder 64 Sekunden lang. Der geeignete Wert hängt vom jeweiligen Anwendungsfall ab.
Sie können das System weitere Wiederholungen ausführen lassen, nachdem die maximum_backoff
-Zeit abgelaufen ist.
Die Backoff-Zeit muss dabei nicht mehr verlängert werden. Wenn ein Client beispielsweise eine maximum_backoff
-Zeit von 64 Sekunden verwendet, kann er nach Erreichen dieses Werts die Anfrage alle 64 Sekunden noch einmal senden. Sie sollten jedoch dafür sorgen, dass er dies nicht unbegrenzt tut.
Der maximale Backoff und die maximale Anzahl von Wiederholungsversuchen, die ein Client verwendet, hängen vom Anwendungsfall und den Netzwerkbedingungen ab. Mobile Clients einer Anwendung müssen unter Umständen mehr Wiederholungen mit längeren Intervallen ausführen als Desktopclients derselben Anwendung.
Wenn die Wiederholungsanfragen nach Überschreiten der maximalen Anzahl von Wiederholungsversuchen fehlschlagen, melden oder loggen Sie einen Fehler mithilfe einer der Methoden, die unter Support erhalten aufgeführt sind.