Maison > développement back-end > Golang > le corps du texte

Quel est le lien entre les paramètres de stratégie de nouvelle tentative de Google Pub/Sub et la bibliothèque `github.com/cenkalti/backoff` ?

Mary-Kate Olsen
Libérer: 2024-10-29 08:04:30
original
386 Les gens l'ont consulté

How Do Google Pub/Sub's Retry Policy Parameters Relate to the `github.com/cenkalti/backoff` Library?

Politique de nouvelle tentative de Google Pub/Sub : configuration de l'intervalle exponentiel

Cloud Pub/Sub a récemment introduit une fonctionnalité côté serveur RetryPolicy qui permet de configurer interruption exponentielle des tentatives de livraison de messages. La documentation fournie explique que les paramètres MinimumBackoff et MaximumBackoff déterminent les périodes d'attente initiales et maximales entre les tentatives. Cependant, la relation entre ces paramètres et InitialInterval et MaxInterval définis dans la bibliothèque github.com/cenkalti/backoff n'est toujours pas claire.

L'algorithme ExponentialBackOff utilisé par github.com/cenkalti/backoff définit l'intervalle de nouvelle tentative aléatoire. comme :

randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
Copier après la connexion

où RetryInterval commence à InitialInterval et est plafonné par MaxInterval.

MinimumBackoff et MaximumBackoff sont-ils mappés à InitialInterval et MaxInterval ?

Oui. MinimumBackoff correspond à la période d'attente initiale et MaximumBackoff correspond à la plus grande durée autorisée entre les tentatives. Ceci est analogue à InitialInterval et MaxInterval sur github.com/cenkalti/backoff.

Exemple d'utilisation et d'observations

L'exemple de programme fourni illustre le comportement d'attente exponentielle. Avec MinimumBackoff défini sur 5 s et MaximumBackoff sur 60 s, le temps entre les tentatives augmente comme prévu, jusqu'au maximum de 60 s.

Réduire MinimumBackoff et MaximumBackoff à 1 s et 2 s, respectivement, entraîne des tentatives plus fréquentes avec un retard constant d'environ 3 s. Cela suggère que l'algorithme d'intervalle exponentiel fait de son mieux pour rester dans le maximum spécifié.

Randomisation, multiplicateur et MaxElapsedTime

L'exemple de sortie ne le fait pas présentent une randomisation visible et aucun multiplicateur explicite n’est spécifié. L'algorithme d'intervalle exponentiel dans Pub/Sub utilise une formule similaire à celle décrite sur github.com/cenkalti/backoff.

En ce qui concerne MaxElapsedTime, Cloud Pub/Sub n'a actuellement pas de concept équivalent. Cependant, vous pouvez implémenter un comportement similaire en utilisant les files d'attente de lettres mortes pour arrêter les tentatives après un nombre spécifié de tentatives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal