Heim >Backend-Entwicklung >Golang >In welcher Beziehung stehen die Wiederholungsrichtlinienparameter von Google Pub/Sub zur Bibliothek „github.com/cenkalti/backoff'?
Google Pub/Sub-Wiederholungsrichtlinie: Exponentielle Backoff-Konfiguration
Cloud Pub/Sub hat kürzlich eine serverseitige RetryPolicy-Funktion eingeführt, die eine Konfiguration ermöglicht exponentielles Backoff für Nachrichtenübermittlungsversuche. In der bereitgestellten Dokumentation wird erläutert, dass die Parameter „MinimumBackoff“ und „MaximumBackoff“ die anfängliche und maximale Wartezeit zwischen Wiederholungsversuchen bestimmen. Allerdings ist die Beziehung zwischen diesen Parametern und dem in der Bibliothek github.com/cenkalti/backoff definierten InitialInterval und MaxInterval noch unklar.
Der von github.com/cenkalti/backoff verwendete ExponentialBackOff-Algorithmus definiert das zufällige Wiederholungsintervall als:
randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
wobei RetryInterval bei InitialInterval beginnt und durch MaxInterval begrenzt wird.
Werden MinimumBackoff und MaximumBackoff InitialInterval und MaxInterval zugeordnet?
Ja. MinimumBackoff entspricht der anfänglichen Wartezeit und MaximumBackoff entspricht der größten zulässigen Zeitspanne zwischen Wiederholungsversuchen. Dies ist analog zu InitialInterval und MaxInterval in github.com/cenkalti/backoff.
Beispielverwendung und Beobachtungen
Das bereitgestellte Beispielprogramm veranschaulicht das exponentielle Backoff-Verhalten. Wenn MinimumBackoff auf 5 Sekunden und MaximumBackoff auf 60 Sekunden eingestellt ist, erhöht sich die Zeit zwischen Wiederholungsversuchen erwartungsgemäß auf das Maximum von 60 Sekunden.
Die Reduzierung von MinimumBackoff und MaximumBackoff auf 1 Sekunde bzw. 2 Sekunden führt zu häufigeren Wiederholungsversuchen mit a konstante Verzögerung von etwa 3 Sekunden. Dies deutet darauf hin, dass der exponentielle Backoff-Algorithmus „nach besten Kräften“ unternimmt, um innerhalb des angegebenen Maximums zu bleiben.
Randomisierung, Multiplikator und MaxElapsedTime
In der Beispielausgabe ist dies nicht der Fall weisen eine sichtbare Randomisierung auf und es ist kein expliziter Multiplikator angegeben. Der exponentielle Backoff-Algorithmus in Pub/Sub verwendet eine ähnliche Formel wie die in github.com/cenkalti/backoff beschriebene.
Bezüglich MaxElapsedTime verfügt Cloud Pub/Sub derzeit nicht über ein entsprechendes Konzept. Sie können jedoch ein ähnliches Verhalten implementieren, indem Sie Dead Letter Queues verwenden, um Wiederholungsversuche nach einer bestimmten Anzahl von Versuchen zu stoppen.
Das obige ist der detaillierte Inhalt vonIn welcher Beziehung stehen die Wiederholungsrichtlinienparameter von Google Pub/Sub zur Bibliothek „github.com/cenkalti/backoff'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!