8

我有一个触发 Lambda 函数的 DynamoDB 流。我注意到对 DynamoDB 表的一千次写入突发可能需要几分钟(我见过的最长是 30 分钟)才能全部由 Lambda 处理。批量大小为 3 的每个 Lambda 调用的平均持续时间约为 2 秒。这些 Lambda 执行 I/O 繁重的任务,因此小批量和更多的并行调用是有利的。但是,这些 Lambda 的并行性与 DynamoDB Stream 分片的数量挂钩,但我找不到扩展分片数量的方法。

除了使用更大的批处理大小和更优化的代码之外,还有什么方法可以增加这些 Lambda 的吞吐量?

4

2 回答 2

5

我也没有看到太多的配置选项。

你可以解耦你的处理。如果您的更改记录不是太大,您的传入 Lambda 可以将它们拆分为几个较小的 SNS 消息。这些较小的 SNS 消息中的每一个都可以触发 Lambda 进行实际处理。如果更改较大,您可以使用 SQS 或 S3 并触发 Lambda 处理通过 SNS 或直接处理文件的新消息。

于 2017-04-11T08:57:22.700 回答
2

每个流分片都与 DynamoDB 中的一个分区相关联。如果您将表上的吞吐量提高到导致分区拆分的程度,那么您将获得更多分片。随着分片的增加,并行运行的 Lambda 函数的数量将会增加。

于 2017-04-11T08:23:04.640 回答