如何将DynamoDB放入请求放入队列

时间:2018-03-04 18:57:09

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

我见过很多人提到,在DynamoDB中处理有限WCU的一种方法是在队列中发送请求,然后让队列以不会超过你分配的WCU的方式将数据插入到dynamodb中

有没有人有这方面的例子?我目前正在使用python和nodeJS中的aws lambda。

我的理解:

如果lambda想要将2,000个项目放入dynamodb并且我们只有100个WCU,而不是在每个请求之间进行lambda重试和/或等待。

我们可以将项目发送到SQS队列,然后以每秒100WCU的速率输入项目。

这是正确的工作流程吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Redis。特别是如果你一遍又一遍地插入同一个分区(称为'热分区'),Redis会从一个集合中提供随机选择。只需将它们排队(插入)到Redis中并不断地从另一个进程读取并插入到db中。在Nodejs和Python上,redis有成千上万的例子,非常方便使用:)

缓存有一个AWS Blog条目。看看它。同时推荐这种模式。

  

尽管缓存的用例数量正在增长,尤其如此   对于Redis来说,主要的工作负载是支持读取繁重的工作负载   重复读取。此外,开发人员还可以更好地使用Redis   吸收写入中的尖峰。一种比较流行的模式是写作   直接到Redis然后异步调用一个单独的工作流   将数据解除分区到单独的数据存储(例如,DynamoDB)。

有可能有更多的方法可以实现你想要的东西,甚至可以用更简单的方式,但是Redis可以用一切来表示你甚至可以使用它;)