Maison >développement back-end >Golang >Comment la RetryPolicy de Google Pub/Sub avec intervalle exponentiel gère-t-elle l'intervalle minimum et maximum et la randomisation ?
Fonctionnement de l'intervalle exponentiel dans RetryPolicy de Google Pub/Sub
Google Pub/Sub a récemment introduit une fonctionnalité RetryPolicy pour améliorer la gestion des erreurs dans le serveur -opérations secondaires. Les options de configuration de cette stratégie incluent les paramètres MinimumBackoff et MaximumBackoff.
Configuration MinimumBackoff et MaximumBackoff
Le paramètre MinimumBackoff spécifie la période d'attente initiale avant la première tentative. Le paramètre MaximumBackoff définit la durée maximale autorisée entre les tentatives suivantes. Ces paramètres correspondent à InitialInterval et MaxInterval dans l'algorithme d'intervalle exponentiel implémenté dans github.com/cenkalti/backoff.
Algorithme d'intervalle exponentiel
Dans l'intervalle exponentiel, chaque randomisé L'intervalle est calculé à l'aide de la formule :
retryInterval = InitialInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
où InitialInterval est MinimumBackoff et la valeur aléatoire introduit la randomisation dans le délai de nouvelle tentative. Le retryInterval est plafonné par MaximumBackoff.
Exemple de programme
Le programme fourni démontre le comportement de l'algorithme d'intervalle exponentiel avec différentes valeurs MinimumBackoff et MaximumBackoff.
Observations de la sortie du programme
Randomisation et multiplicateur
L'algorithme d'intervalle exponentiel utilisé par RetryPolicy inclut la randomisation pour garantir que les tentatives sont pas toujours fait au même intervalle. Cependant, le résultat du programme fourni ne montre pas de modèle clair de croissance exponentielle des intervalles de nouvelle tentative, ce qui suggère que le paramètre Multiplier, qui doublerait l'intervalle de nouvelle tentative à chaque itération, n'est pas utilisé.
MaxElapsedTime
Contrairement à l'implémentation de l'intervalle exponentiel dans github.com/cenkalti/backoff, RetryPolicy n'a pas de paramètre MaxElapsedTime équivalent. Cela signifie que les tentatives se poursuivront indéfiniment si le serveur est indisponible, à moins que l'application ne gère et limite les tentatives de manière indépendante.
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!