更简单的退避

主要观点:在进行服务调用时,指数退避加抖动是常规做法,一段包含指数退避逻辑的代码常见,但可用简单的查找表使其更优。
关键信息

  • 原始代码通过循环和计算延迟进行指数退避,有固定的最大尝试次数和延迟计算逻辑。
  • 改进后的代码使用查找表存储延迟值,通过随机数调整延迟,且循环遍历查找表中的延迟。
    重要细节
  • 原始代码中最大尝试次数为 10,初始延迟为 1 秒,最大延迟为 60 秒,每次延迟翻倍并限制在最大延迟内,还加入了随机抖动。
  • 改进后的代码中查找表存储了特定的延迟值,每次循环根据随机数调整延迟后等待,直到请求成功或上下文结束,若失败则输出失败信息。改进后的代码更简单,变量更少,范围更小,易于理解和编辑,改变退避计划和尝试次数更安全简便。
阅读 9
0 条评论