为啥我们在重试请求之间应用延迟
Posted
技术标签:
【中文标题】为啥我们在重试请求之间应用延迟【英文标题】: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 [没有个人参与] 【参考方案1】:服务器的问题不太可能在几微秒内得到解决,因此立即重试不太可能奏效,只会导致问题。因此,重试之间的延迟是最佳实践。
【讨论】:
以上是关于为啥我们在重试请求之间应用延迟的主要内容,如果未能解决你的问题,请参考以下文章