AWS DynamoDB受限制的写请求处理

时间:2019-03-06 03:34:37

标签: amazon-web-services aws-lambda amazon-dynamodb

我有一个表,该表在指定时间限制了写请求。我想了解更多有关AWS-SDK如何处理它们的信息。

就我目前的理解而言,DynamoDB将向我的Lambda返回一个错误。这就是为什么我在DynamoDB表指标中会出现用户错误的原因。但是,AWS-SDK具有错误处理和重试策略,可帮助我重试并将受限制的请求写回到表中。正确吗?

2 个答案:

答案 0 :(得分:2)

每当您的应用程序发送的请求超出您的能力时,您就会收到Dynamo的ProvisionedThroughputExceededException消息。但是,您的SDK会为您处理并重试。 Dynamo的默认重试时间开始于50ms,默认重试次数为10,默认情况下,补偿是指数级的。

这意味着您可以在以下位置重试

  1. 50ms
  2. 100ms
  3. 200ms
  4. 400ms
  5. 800ms
  6. 1.6s
  7. 3.2s
  8. 6.4秒
  9. 12.8秒
  10. 25.6秒

如果在第10次重试后您的请求仍未成功,则SDK会将ProvisionedThroughputExceededException传递回您的应用程序,您可以根据需要进行处理。

请注意,您可以更改SDK的默认重试行为。例如

new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});

这意味着您重试13次,初始延迟为200ms。这将使您的请求总共需要819.2s来完成,而不是25.6s。

答案 1 :(得分:0)

如果要向dynamoDB表发送大量写入请求,并且预配置的写入容量小于DynamoDB限制您的请求的写入请求。

如果您实施重试策略并将其用于失败的写入,则由于您已经收到许多写入请求,因此该写入也可能会受到限制。 此重试策略将为您的dynamoDB增加额外的负载。

解决方案是使用DynamoDB On-demand mode