【问题标题】:Increasing DynamoDB Stream + Lambda throughput增加 DynamoDB Stream + Lambda 吞吐量
【发布时间】:2017-09-06 07:11:24
【问题描述】:

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

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

【问题讨论】:

    标签: amazon-dynamodb aws-lambda scalability amazon-dynamodb-streams


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您能否添加指向包含以下信息的文档的链接:“每个流分片都与 DynamoDB 中的一个分区相关联”?我很难找到它。
      • This 是 Kinesis 流,但我不确定它们是否相同或相似。有人说 lambda 会代表你使用 Kinesis 流客户端。
      • 我迟到了,但我发现文档部分说:aws.amazon.com/pt/blogs/database/… 它是如何工作的 - 对于每个 DynamoDB 分区,都有一个相应的分片和一个 Lambda 函数轮询事件在流(分片)中。
      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多