增加DynamoDB中的分片数量以并行生成更多lambdas

时间:2017-02-17 18:43:38

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

我目前正在使用 DynamoDB 流来处理带有lambda函数的已更改集合值,但是,目前我只是并行运行两个lambda实例,这还不够处理所有传入的数据和lambda函数只是排队。

aws 文档中我可以看到可以并行运行的lambda数量与DynamoDB的分片数量成正比:

  

如果您创建一个处理事件的Lambda函数   基于流的服务(Amazon Kinesis Streams或DynamoDB流),   每个流的分片数是并发的单位。如果你的   流有100个活动分片,将有100个Lambda函数   同时运行。然后,每个Lambda函数处理a上的事件   碎片按它们到达的顺序。

所以我的问题是,如何增加DynamoDB的分片数量?它甚至可能吗?我无法找到如何在设置中进行设置。

2 个答案:

答案 0 :(得分:1)

不,它无法手动控制DDB UpdateStream中的分片数。 DDB通过创建尽可能多的分片来匹配传入的更新速率,自动为您处理。

理想情况下,发生在DDB表中的更新应该流经某个分片(发生在同一记录中的更新将始终转到相同的分片,这意味着它们将根据您的hashKey进行分区)。 这是你的更新流,它也是按时间顺序排列的,因此在相同的分片中更新相同的记录(或者说排队),以便最终处理器按顺序处理它们。

每个分片都有自己的数据输入和输出容量,除非需要更多分片来支持表中的更新速率(在DDB更新流的情况下,表上的写入tps很高,当前分片数量无法处理)

答案 1 :(得分:0)

在DynamoDB表中启用自动缩放功能有助于自动分片。如果已为表指定了预配容量,则分片会变得稍微严格,可能不适合缩放。如果您的事件是连续的并且需要更多控制,则可能更合适。

要为表启用自动缩放,请转到控制台,单击DynamoDB表,然后单击“容量”选项卡。在那里,您可以根据预测的流量选择范围。