Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert Google Pub/Sub einen exponentiellen Backoff in RetryPolicies im Vergleich zu github.com/cenkalti/backoff?

Wie implementiert Google Pub/Sub einen exponentiellen Backoff in RetryPolicies im Vergleich zu github.com/cenkalti/backoff?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 08:29:27931Durchsuche

How Does Google Pub/Sub Implement Exponential Backoff in RetryPolicies Compared to github.com/cenkalti/backoff?

Exponentielles Backoff in RetryPolicies

Die in RetryPolicy von Google Pub/Sub eingeführte exponentielle Backoff-Funktion spiegelt das Konzept wider, das im von Github definierten ExponentialBackOff beschrieben wird. com/cenkalti/backoff, die Sie erwähnt haben.

Minimaler und maximaler Backoff

Ja, Sie haben Recht. Die Parameter MinimumBackoff und MaximumBackoff in pubsub.RetryPolicy entsprechen InitialInterval bzw. MaxInterval in github.com/cenkalti/backoff:

  • MinimumBackoff: Anfängliche Wartezeit beim Wiederholen eines fehlgeschlagenen Vorgangs.
  • MaximumBackoff: Maximal zulässige Zeit zwischen Wiederholungsversuchen.

Randomisierung

Cloud Pub/Sub verwendet für die Randomisierung des Intervalls dieselbe Formel wie github.com /cenkalti/backoff:

randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])

Der RandomizationFactor ist in pubsub.RetryPolicy standardmäßig auf 0,15 eingestellt.

Multiplikator und MaxElapsedTime

Im Gegensatz zu Github .com/cenkalti/backoff, pubsub.RetryPolicy hat kein Äquivalent zu Multiplier, das das RetryInterval nach jedem Fehler verdoppelt. Stattdessen erhöht sich die Pub/Sub-Wiederholungsverzögerung exponentiell mit einer festen Rate, die durch den RandomizationFactor bestimmt wird.

Außerdem gibt es in pubsub.RetryPolicy keine explizite MaxElapsedTime. Pub/Sub implementiert jedoch einen Go-Routine-basierten Wiederholungsmechanismus, bei dem Wiederholungsversuche effektiv durch die Lebensdauer der Go-Routine begrenzt sind, die das Abonnement verwaltet.

Beispiel

Ihr Experiment zeigt das exponentielle Backoff-Verhalten genau. Die längeren Backoff-Intervalle (5 bis 60 Sekunden) führen zu weniger häufigen Wiederholungsversuchen, während die kürzeren Intervalle (1 bis 2 Sekunden) zu häufigeren Wiederholungsversuchen führen. Die Varianz in den Intervallen ist auf den Randomisierungsfaktor zurückzuführen.

Das obige ist der detaillierte Inhalt vonWie implementiert Google Pub/Sub einen exponentiellen Backoff in RetryPolicies im Vergleich zu github.com/cenkalti/backoff?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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