我见过很多人提到,在DynamoDB中处理有限WCU的一种方法是在队列中发送请求,然后让队列以不会超过你分配的WCU的方式将数据插入到dynamodb中
有没有人有这方面的例子?我目前正在使用python和nodeJS中的aws lambda。
我的理解:
如果lambda想要将2,000个项目放入dynamodb并且我们只有100个WCU,而不是在每个请求之间进行lambda重试和/或等待。
我们可以将项目发送到SQS队列,然后以每秒100WCU的速率输入项目。
这是正确的工作流程吗?
答案 0 :(得分:1)
您可以使用Redis。特别是如果你一遍又一遍地插入同一个分区(称为'热分区'),Redis会从一个集合中提供随机选择。只需将它们排队(插入)到Redis中并不断地从另一个进程读取并插入到db中。在Nodejs和Python上,redis有成千上万的例子,非常方便使用:)
缓存有一个AWS Blog条目。看看它。同时推荐这种模式。
尽管缓存的用例数量正在增长,尤其如此 对于Redis来说,主要的工作负载是支持读取繁重的工作负载 重复读取。此外,开发人员还可以更好地使用Redis 吸收写入中的尖峰。一种比较流行的模式是写作 直接到Redis然后异步调用一个单独的工作流 将数据解除分区到单独的数据存储(例如,DynamoDB)。
有可能有更多的方法可以实现你想要的东西,甚至可以用更简单的方式,但是Redis可以用一切来表示你甚至可以使用它;)