Amazon dynamodb DynamoDB&;配置的容量:节流与故障

Amazon dynamodb DynamoDB&;配置的容量:节流与故障,amazon-dynamodb,Amazon Dynamodb,我一直在这里阅读常见问题解答和其他帖子,试图了解DynamoDB在读写容量单位方面的行为。假设我扫描一个表,这超过了我的读取容量单位。我假设DynamoDB将首先限制请求,仍然以较慢的方式返回所有结果,这对吗?在什么时候请求会失败,而不是被限制 如果您的请求超出了配置的容量,您将收到一个provisionedthroughputeExceededException错误 报告说: 你的请求率太高了。AWS SDK for DynamoDB会自动重试收到此异常的请求。您的请求最终会成功,除非您的重试

我一直在这里阅读常见问题解答和其他帖子,试图了解DynamoDB在读写容量单位方面的行为。假设我扫描一个表,这超过了我的读取容量单位。我假设DynamoDB将首先限制请求,仍然以较慢的方式返回所有结果,这对吗?在什么时候请求会失败,而不是被限制

如果您的请求超出了配置的容量,您将收到一个
provisionedthroughputeExceededException
错误

报告说:

你的请求率太高了。AWS SDK for DynamoDB会自动重试收到此异常的请求。您的请求最终会成功,除非您的重试队列太大而无法完成。使用指数退避降低请求频率

另外,请注意,DynamoDB提供突发容量。从文件中:

DynamoDB在每分区吞吐量供应方面提供了一些灵活性。当您没有充分利用分区的吞吐量时,DynamoDB会保留一部分未使用的容量,以供以后吞吐量使用量的激增。DynamoDB目前保留最多五分钟(300秒)未使用的读写容量。在偶尔的读或写活动突发期间,这些额外的容量单元可以非常快地消耗,甚至比您为表定义的每秒配置吞吐量容量还要快。但是,不要设计应用程序,使其始终依赖于可用的突发容量:DynamoDB可以并且确实使用突发容量进行后台维护和其他任务,而无需事先通知

因此,自动重试加上突发容量意味着接收吞吐量异常的可能性较小。如果您这样做了,则以指数方式退出并重试


一些DynamoDB用户维护amazonsqs队列以临时存储事务。如果超过吞吐量,它们将事务存储在SQS队列中。然后,后台进程从队列中检索事务并稍后重试,希望有更多的吞吐量可用。

如果您的请求超过了配置的容量,您将收到一个
provisionedthroughputeExceedexception
错误

报告说:

你的请求率太高了。AWS SDK for DynamoDB会自动重试收到此异常的请求。您的请求最终会成功,除非您的重试队列太大而无法完成。使用指数退避降低请求频率

另外,请注意,DynamoDB提供突发容量。从文件中:

DynamoDB在每分区吞吐量供应方面提供了一些灵活性。当您没有充分利用分区的吞吐量时,DynamoDB会保留一部分未使用的容量,以供以后吞吐量使用量的激增。DynamoDB目前保留最多五分钟(300秒)未使用的读写容量。在偶尔的读或写活动突发期间,这些额外的容量单元可以非常快地消耗,甚至比您为表定义的每秒配置吞吐量容量还要快。但是,不要设计应用程序,使其始终依赖于可用的突发容量:DynamoDB可以并且确实使用突发容量进行后台维护和其他任务,而无需事先通知

因此,自动重试加上突发容量意味着接收吞吐量异常的可能性较小。如果您这样做了,则以指数方式退出并重试


一些DynamoDB用户维护amazonsqs队列以临时存储事务。如果超过吞吐量,它们将事务存储在SQS队列中。然后,后台进程从队列中检索事务,并在稍后重试,希望有更多的吞吐量可用。

谢谢,John!有道理,因为我正在使用iOS SDK。谢谢,John!有道理,因为我使用的是iOS SDK。