Heim > Backend-Entwicklung > Golang > Wie geht die RetryPolicy mit exponentiellem Backoff von Google Pub/Sub mit minimalem, maximalem Backoff und Randomisierung um?

Wie geht die RetryPolicy mit exponentiellem Backoff von Google Pub/Sub mit minimalem, maximalem Backoff und Randomisierung um?

DDD
Freigeben: 2024-10-30 17:28:02
Original
468 Leute haben es durchsucht

How does Google Pub/Sub's RetryPolicy with Exponential Backoff handle minimum, maximum backoff and randomization?

So funktioniert der exponentielle Backoff in der RetryPolicy von Google Pub/Sub

Google Pub/Sub hat kürzlich eine RetryPolicy-Funktion eingeführt, um die Fehlerbehandlung im Server zu verbessern -seitige Operationen. Die Konfigurationsoptionen für diese Richtlinie umfassen die Parameter „MinimumBackoff“ und „MaximumBackoff“.

MinimumBackoff- und MaximumBackoff-Konfiguration

Der Parameter „MinimumBackoff“ gibt die anfängliche Wartezeit vor dem ersten Wiederholungsversuch an. Der MaximumBackoff-Parameter definiert die maximal zulässige Zeitspanne zwischen aufeinanderfolgenden Wiederholungsversuchen. Diese Parameter entsprechen dem InitialInterval und dem MaxInterval im exponentiellen Backoff-Algorithmus, der in github.com/cenkalti/backoff implementiert ist.

Exponentieller Backoff-Algorithmus

Beim exponentiellen Backoff ist jeder randomisiert Das Intervall wird mithilfe der Formel berechnet:

retryInterval = InitialInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
Nach dem Login kopieren

wobei das InitialInterval MinimumBackoff ist und der Zufallswert eine Randomisierung in der Wiederholungsverzögerung einführt. Das Wiederholungsintervall wird durch MaximumBackoff begrenzt.

Beispielprogramm

Das bereitgestellte Programm demonstriert das Verhalten des exponentiellen Backoff-Algorithmus mit unterschiedlichen MinimumBackoff- und MaximumBackoff-Werten.

Beobachtungen aus der Programmausgabe

  • Standard-Backoff: Wenn MinimumBackoff auf 5 Sekunden und MaximumBackoff auf 60 Sekunden eingestellt ist, erhöht sich die Zeit zwischen Wiederholungsversuchen schrittweise mit einem durchschnittlichen Intervall von ca. 10s. Dies weist auf einen RandomizationFactor nahe 1 hin.
  • Kleinerer Backoff: Wenn MinimumBackoff und MaximumBackoff auf 1s bzw. 2s eingestellt sind, beträgt die Zeit zwischen Wiederholungsversuchen konstant etwa 3s. Dies deutet darauf hin, dass in diesem Fall das MaximumBackoff-Limit Vorrang hat.

Randomisierung und Multiplikator

Der von RetryPolicy verwendete exponentielle Backoff-Algorithmus umfasst Randomisierung, um sicherzustellen, dass Wiederholungsversuche durchgeführt werden nicht immer im gleichen Intervall gemacht. Die Ausgabe des bereitgestellten Programms zeigt jedoch kein klares Muster exponentiellen Wachstums in den Wiederholungsintervallen, was darauf hindeutet, dass der Multiplier-Parameter, der das Wiederholungsintervall bei jeder Iteration verdoppeln würde, nicht verwendet wird.

MaxElapsedTime

Im Gegensatz zur exponentiellen Backoff-Implementierung in github.com/cenkalti/backoff verfügt RetryPolicy nicht über einen entsprechenden MaxElapsedTime-Parameter. Dies bedeutet, dass Wiederholungsversuche unbegrenzt fortgesetzt werden, wenn der Server nicht verfügbar ist, es sei denn, die Anwendung verarbeitet und begrenzt Wiederholungsversuche unabhängig.

Das obige ist der detaillierte Inhalt vonWie geht die RetryPolicy mit exponentiellem Backoff von Google Pub/Sub mit minimalem, maximalem Backoff und Randomisierung um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage