AWS 中的错误重试和指数退避

Posted cloudrivers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS 中的错误重试和指数退避相关的知识,希望对你有一定的参考价值。

  • 网络上的大量组件 (例如 DNS 服务器、交换机、负载均衡器等) 都可能在某个指定请求生命周期中的任一环节出现问题。在联网环境中,处理这些错误回应的常规技术是在客户应用程序中实施重试。此技术可以提高应用程序的可靠性和降低开发人员的操作成本。
  • 每个 AWS 开发工具包都会实现自动重试逻辑。AWS SDK for Java会自动重试请求,您可以使用 ClientConfiguration 类配置重试设置。例如,对于发出的请求采用最低延迟并且不想重试的网页,您可能会希望关闭重试逻辑。您可以使用 ClientConfiguration 类,并且为 maxErrorRetry 提供 0 这个值,从而设置为不重试。
  • 如果您没有使用 AWS 开发工具包,则应当对收到服务器错误 (5xx) 或限制错误的原始请求执行重试。但是,客户端错误 (4xx) 表示您需要对请求本身进行修改,纠正该问题,然后再重试。
  • 除了简单重试之外,每个 AWS 开发工具包还实施指数退避算法来实现更好的流程控制。指数退避的原理是对于连续错误响应,重试等待间隔越来越长。您应该实施最长延迟间隔和最大重试次数。最长延迟间隔和最大重试次数不一定是固定值,并且应当根据正在执行的操作和其他本地因素(例如网络延迟)进行设置。
  • 大多数指数退避算法会利用抖动(随机延迟)来防止连续的冲突。由于在这些情况下您并未尝试避免此类冲突,因此无需使用此随机数字。但是,如果使用并发客户端,抖动可帮助您更快地成功执行请求。有关更多信息,请参阅指数退避和抖动的博文。

以上是关于AWS 中的错误重试和指数退避的主要内容,如果未能解决你的问题,请参考以下文章

你真的会重试吗?——重试机制之二进制指数退避机制

PubSub:如何设置没有指数退避的重试策略?

dubbo超时重试和异常处理

AWS Beanstalk:SQS 的指数退避?

执行块的最长时间............带有重试和中间延迟

JPA 事务回滚重试和恢复:将实体与自动递增的@Version 合并