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