我经历过这个article其中表示数据记录被组织成称为分片的组,这些分片可以由 Lambda 函数并行使用和处理。 我还从 AWS webindar 找到了这些幻灯片在幻灯片 22 上,您还可以看到 Lambda 函数并行使用不同的分片。 但是我无法实现单个函数的并行执行。我创建了一个运行一分钟的简单 lambda 函数。然后我开始在 DynamoDB 中创建大量项目,期望获得大量流记录。尽管如此,我的功能还是陆续启动了。
我做错了什么?
最佳答案
前置上下文:
How DaynamoDB stores data?
DynamoDB 使用 partition来存储表记录。这些分区是从用户中抽象出来并由 DynamoDB 团队管理的。随着表中数据的增长,这些分区在内部进一步划分。
What these dynamo streams all about?
DynamoDB 作为数据库为用户提供了一种检索有序更改日志的方法(可以将其视为传统数据库的跨国重放日志)。这些以 Dynamo table streams 的形式出售。 .
How data is published in streams?
Stream有一个分片的概念(有点类似于分区)。根据定义,分片包含有序事件。使用 Dynamo 术语,流分片将包含来自某个分区的数据。
Cool!.. So what will happen if data grows in table or frequent writes occurs?
Dynamo 将根据 HashKey/SortKey 持续保留关联分区中的记录,直到突破阈值(例如表大小和/或 RCU/WCU 计数)。尽管我们有一些粗略估计的文档,但 dynamoDB 并未向我们分享这些阈值的确切值。
当违反此阈值时,dynamo 会分割分区并重新散列以在分区中(某种程度上)均匀地分布数据。
由于新分区到达,这些数据将发布到自己的分片(映射到其分区)
Great, so what about Lambda? How the parallel processing works then.
一个 lambda 函数处理来自一个且仅一个分片的记录。因此,发电机流中存在的分片数量将决定并行运行的 lambda 函数的数量。
你可以隐约想到,分区数量 = 分片数量 = 并行 lambda 运行数量。
关于amazon-web-services - AWS Lambda 并行执行如何与 DynamoDB 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184004/