amazon-web-services - AWS Lambda 并行执行如何与 DynamoDB 配合使用?

标签 amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams

我经历过这个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/

相关文章:

ruby - 如何使用 AWS Cognito Ruby SDK 注册新用户?

amazon-web-services - aws-sdk-go describeStacks() 试图获取 stackids 列表或从堆栈名称获取 stackid

amazon-web-services - dynamodb updateitem 与条件表达式返回项目是否已更新

python - PutItem AWS DynamoDB 的无效类型错误

java - 返回 JSONObject,而 JSONArray 无法在 Amazon Lambda Java 函数中工作

mysql - 如何使用 native 同步函数从 Amazon Aurora MySQL 数据库集群调用 Lambda 函数

amazon-web-services - importValue 函数在 cloudformation 中不起作用

amazon-web-services - 从 API Gateway 的 X-Ray 跟踪日志中排除查询参数

node.js - 在本地测试 Elasticache 和无服务器 AWS Lambda

amazon-web-services - 使用cloudformation部署时如何获取AWS Api网关的arn