Handle timeout

超时处理

我们要探讨的问题是:如果我们遇到一个非常非常慢的API调用最终超时,并且我们假设(a)它成功或(b)失败,我们就会遇到错误。超时(或更糟糕的是,无限长的等待)是分布式系统的一个基本事实,我们需要如何处理它们

  • 解决方法:

    • 假设成功
    • 使用默认值
    • 假设远程操作失败,然后自动重试
      • 重试是否安全
      • 同步重试还是异步重试
      • 同步重试会减慢您的速度
      • 重试多少次
      • 重试之间延迟策略(等间隔、指数退避、使用抖动)
      • 如果远程服务出现性能问题,重试是否会使他们的情况变得更差
  • 检查请求是否成功,如果安全再试一次

  • 让用户知道这个结果

Resource