【问题标题】:Why we apply delay between retry requests为什么我们在重试请求之间应用延迟
【发布时间】:2016-12-01 10:09:08
【问题描述】:

当我们有一段代码经常失败并且必须重试时。然后我们使用重试模式。

try {
        //do request here
} catch (Exception e) {
        //wait for some millisecond and retry
        retry();
}

我们通常会延迟几毫秒,然后再重试该请求。我想知道为什么我们需要一些延迟?如果重试请求没有等待并再次发送请求会发生什么。

【问题讨论】:

  • 可能发生的情况是,您用请求敲击服务器并可能使问题变得更糟
  • 服务器的问题不太可能在几微秒内得到解决,因此立即重试不太可能奏效,正如 JonK 所说,只会导致问题。
  • 这样我们才不会让原来的问题变得更糟。
  • 噢,我明白了。非常感谢您根据我的知识添加这​​个概念。
  • 在你手工构建大量这样的东西之前,还要检查有许多现成的用于重试和其他弹性的原语的库,例如github.com/jhalterman/failsafe [没有个人参与]

标签: java design-patterns retrypolicy exponential-backoff


【解决方案1】:

服务器的问题不太可能在几微秒内得到解决,因此立即重试不太可能奏效,只会导致问题。因此,重试之间的延迟是最佳实践。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    相关资源
    最近更新 更多