首页  >  文章  >  后端开发  >  Google Pub/Sub 的 RetryPolicy 参数与 ExponentialBackOff 库的 InitialInterval 和 MaxInterval 有何关系?

Google Pub/Sub 的 RetryPolicy 参数与 ExponentialBackOff 库的 InitialInterval 和 MaxInterval 有何关系?

DDD
DDD原创
2024-10-27 17:40:03655浏览

How do Google Pub/Sub's RetryPolicy Parameters Relate to the ExponentialBackOff Library's InitialInterval and MaxInterval?

Google Pub/Sub 的 RetryPolicy 中的指数退避

问题陈述

Google Pub/Sub 的 RetryPolicy 包括 MaximumBackoff 和 MaximumBackoff 参数。文档解释说这些值用于离散时间的指数退避。但是,它没有提供有关它们如何与经常使用的 ExponentialBackOff 库中的 InitialInterval 和 MaxInterval 相关的详细信息。

退避机制

文档提供了退避计算的概览,其中类似于 ExponentialBackOff 库所采用的方法:

randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
  • RetryInterval 是重试之间的当前延迟,它从 MaximumBackoff 的值开始,并以 MaximumBackoff 为上限。
  • RandomizationFactor 提供围绕重试间隔的一系列随机化。

示例中的观察结果

提供的测试程序说明了不同的退避参数对消息 nack 之间的实际延迟的影响。

  • 将MinimumBackoff和MaximumBackoff分别设置为5秒和60秒,nack之间的延迟逐渐增加,到第6次尝试时达到1分钟。这表明每次尝试后将 RetryInterval 加倍。
  • 将 MaximumBackoff 和 MaximumBackoff 分别设置为 1 秒和 2 秒,nack 之间的延迟徘徊在 3 秒左右,表明延迟始终略高于 MaximumBackoff 值。

Multiplier 和 MaxElapsedTime

ExponentialBackOff 库中定义的 Multiplier 和 MaxElapsedTime 参数在 Google Pub/Sub 的 RetryPolicy 中没有直接等效项。

  • 文档中没有提到 Multiplier,示例中也没有建议延迟每次都加倍。
  • 没有明确支持 MaxElapsedTime,但文档指出如果 MaximumBackoff 设置为 0,重试将无限期地继续。

结论

Google Pub/Sub 的 RetryPolicy 中的 MaximumBackoff 和 MaximumBackoff 参数的行为与 ExponentialBackOff 库中的 InitialInterval 和 MaxInterval 类似,采用随机指数退避机制。但是,Google Pub/Sub 并未明确支持重试的乘数或最大运行时间。

以上是Google Pub/Sub 的 RetryPolicy 参数与 ExponentialBackOff 库的 InitialInterval 和 MaxInterval 有何关系?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn