Google Pub/Sub 的 RetryPolicy 中的指数退避如何工作
Google Pub/Sub 最近引入了 RetryPolicy 功能来增强服务器中的错误处理端操作。此策略的配置选项包括MinimumBackoff 和MaximumBackoff 参数。
MinimumBackoff 和MaximumBackoff 配置
MinimumBackoff 参数指定第一次重试之前的初始等待时间。 MaximumBackoff 参数定义后续重试之间允许的最长时间。这些参数对应于 github.com/cenkalti/backoff 中实现的指数退避算法中的 InitialInterval 和 MaxInterval。
指数退避算法
在指数退避中,每个随机间隔使用以下公式计算:
retryInterval = InitialInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
其中InitialInterval 是MinimumBackoff,随机值在重试延迟中引入随机化。 retryInterval 由 MaximumBackoff 限制。
示例程序
提供的程序演示了具有不同的 MaximumBackoff 和 MaximumBackoff 值的指数退避算法的行为。
程序输出的观察结果
随机化和乘数
RetryPolicy 使用的指数退避算法包括随机化,以确保重试并不总是在相同的时间间隔内进行。但是,提供的程序的输出并未显示重试间隔呈指数增长的清晰模式,这表明未使用 Multiplier 参数(该参数会使每次迭代的重试间隔加倍)。
MaxElapsedTime
与 github.com/cenkalti/backoff 中的指数退避实现不同,RetryPolicy 没有等效的 MaxElapsedTime 参数。这意味着如果服务器不可用,重试将无限期地继续,除非应用程序独立处理和限制重试。
以上是Google Pub/Sub 的带有指数退避的 RetryPolicy 如何处理最小、最大退避和随机化?的详细内容。更多信息请关注PHP中文网其他相关文章!