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

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

原文地址:https://www.cnblogs.com/cloudrivers/p/11617303.html

时间: 2024-11-02 09:23:33

AWS 中的错误重试和指数退避的相关文章

AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS

AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS Do some asynchronous operation. retries = 0 DO wait for (2^retries * 100) milliseconds status = Get the result of the asynchronous operation. IF status = SUCCESS retry = false ELSE IF statu

Python学习-16.Python中的错误处理

虽然叫错误,但跟 C# 中的异常是一回事.只不过 Python 中叫错误(Error)而 C# 中叫异常(Exception). 先手工产生一个异常: 1 file = open('','r') 上面一句由于路径是空路径,因此文件肯定是不存在的,执行这一句会引发 FileNotFoundError 这个错误. 既然是错误的,程序也停止了,这是我们不希望的,因此得想办法处理一下. 在 Python 中,异常处理使用 try.except.finally 这三个关键字. 修改代码如下: 1 path

modelsim中,错误 Error: already declared in this scope ()

仿真软件modelsim中,错误 Error: already declared in this scope () 在定义这个信号前其它模块接口信号中调用了这个信号,modelsim仿真报错,通过把信号定义挪到调用模块前面问题解决. 可能是modelsim有要求,在块里边出现之前,必须先做声明.modelsim中,错误 Error: already declared in this scope (),布布扣,bubuko.com

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret

vs2015 编译时错误列表中没有错误,dll却没有生成出来

最近发现vs2015的一个问题, 编译时,错误列表中没有错误,dll却没有生成出来,vs重启也无效 解决: 多次排查发现如果一个类库设置的是framework 4.0版本,但引用了framework4.5的别的类库,就会出现这种情况,要把当前类库改为4.5或更高,问题解决 而输出窗口其实会打印出问题"error CS0246  ........因为它是针对".NETFramework,Version=v4.5.2"框架生成的.该框架版本高于当前目标框架".NETFr

iOS开发中xcode错误和异常处理

在开始这个的内容之前,我想先阐明两个在很多时候被混淆的概念,那就是异常 (exception) 和错误 (error). 在 Objective-C 开发中,异常往往是由程序员的错误导致的 app 无法继续运行,比如我们向一个无法响应某个消息的 NSObject 对象发送了这个消息,会得到 NSInvalidArgumentException 的异常,并告诉我们 "unrecognized selector sent to instance":比如我们使用一个超过数组元素数量的下标来试

iOS开发——错误总结篇&开发中常见错误和警告总结(三十三)

开发中常见错误和警告总结(三十三) 动画冲突 错误: Unbalanced calls to begin/end appearance transitions for <uivewcontroller> 解决方法1:去掉动画 解决方法2:监听当前view的动画是否完成 解决方法就是,加一个BOOL型的变量,检查是否在做动画. 1 2 if (transiting) { 3 return; 4 } 5 transiting = YES; 6 [self transitionFromViewCon

PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

[PHP 配置文件中与错误相关的选项 ] 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 设置是否将错误信息记录到日志或者 error_log 中 error_log 设置脚本错误将记录到的文件 log_errors_max_len 设置 log_errors 的最大字节数 ignore_repeated_errors 是否忽略重复的错误信息 ignore_repeated_source 是否忽略重复错误消息的来源

PHP中的错误处理

一.PHP中调整错误报告级别的方式 1修改php.ini文件的配置项 注意:会导致在当前服务器环境下的所有PHP文件都受影响,实际开发过程中,不推荐此方式(如果代码更换服务器会导致配置文件全部失效,需重新配置,实际开发过程中,并不      推荐这种修改方式) >>>php.ini文件中的两个重要配置项 ①display_errors:开启或关闭所有的错误级别 可选值: 1/on开启报告 0/Off关闭所有错误报告 eg:ini_set("display_errors"