我目前正在使用 DynamoDB 流来处理带有lambda函数的已更改集合值,但是,目前我只是并行运行两个lambda实例,这还不够处理所有传入的数据和lambda函数只是排队。
从 aws 文档中我可以看到可以并行运行的lambda数量与DynamoDB的分片数量成正比:
如果您创建一个处理事件的Lambda函数 基于流的服务(Amazon Kinesis Streams或DynamoDB流), 每个流的分片数是并发的单位。如果你的 流有100个活动分片,将有100个Lambda函数 同时运行。然后,每个Lambda函数处理a上的事件 碎片按它们到达的顺序。
所以我的问题是,如何增加DynamoDB的分片数量?它甚至可能吗?我无法找到如何在设置中进行设置。
答案 0 :(得分:1)
不,它无法手动控制DDB UpdateStream中的分片数。 DDB通过创建尽可能多的分片来匹配传入的更新速率,自动为您处理。
理想情况下,发生在DDB表中的更新应该流经某个分片(发生在同一记录中的更新将始终转到相同的分片,这意味着它们将根据您的hashKey进行分区)。 这是你的更新流,它也是按时间顺序排列的,因此在相同的分片中更新相同的记录(或者说排队),以便最终处理器按顺序处理它们。
每个分片都有自己的数据输入和输出容量,除非需要更多分片来支持表中的更新速率(在DDB更新流的情况下,表上的写入tps很高,当前分片数量无法处理)
答案 1 :(得分:0)
在DynamoDB表中启用自动缩放功能有助于自动分片。如果已为表指定了预配容量,则分片会变得稍微严格,可能不适合缩放。如果您的事件是连续的并且需要更多控制,则可能更合适。
要为表启用自动缩放,请转到控制台,单击DynamoDB表,然后单击“容量”选项卡。在那里,您可以根据预测的流量选择范围。