dmj*_*mjy 7 parallel-processing amazon-web-services amazon-kinesis aws-lambda
我对 的概念很困惑ParallelizationFactor
。
我的理解
/sf/answers/4027402571/
过去,一个 KDS 分片只能向一个 Lambda 实例/调用发送数据。从同一 KDS 分片获取数据的多个 Lambda 实例无法同时运行。
https://aws.amazon.com/blogs/compute/new-aws-lambda-scaling-controls-for-kinesis-and-dynamodb-event-sources/
2019 年 11 月,出现了一个新参数ParallelizationFactor
(每个分片的并发批次数)出去。
默认因子 1 表现出正常行为。因子 2 允许对 100 个 Kinesis 数据分片进行最多 200 个并发调用。
问题
ParallelizationFactor
,多个 Lambda 实例是否可以同时从同一个 KDS 分片获取不同的数据?d1
、d2
、d3
d4
和d5
,d6
我们假设BatchSize
= 2 和ParallelizationFactor
= 2。Lambda 实例 A 可以消费d1
和d2
,而 Lambda 实例 B 可以同时消费d3
和。d4
然后,一旦 Lambda 实例 A 完成第一批,它就会开始处理d5
,d6
依此类推。如果问题 1 正确,可能会牺牲什么?(例如同一个分片中的顺序,一条数据可能会被处理多次)
如果问题1不正确,那么Lambda将如何并发处理KDS分片中的数据?
是的,当使用 ParallelizationFactor 时,多个 lambda 可以同时处理来自同一分片的记录。由于不会同时处理具有相同分区键的记录,因此会保持顺序。
\n例如让\xe2\x80\x99s 假设您有两个分区:Partition1 和 Partition2 以及两个分片
\n场景 1:您的所有记录仅共享两个分区键:PartitionKey1 和 PartitionKey2。在这种情况下,具有 PartitionKey1 的所有记录将最终出现在 Partition1 中,所有具有 PartitionKey2 的记录将最终出现在 Partition2 中。设置ParallelizationFactor不会导致任何记录同时处理,因为相同分区键的记录是按顺序处理的。
\n场景 2:您的记录有 20 个不同的分区键:PartitionKey1\xe2\x80\xa6PartitionKey20。理想情况下,Shard1 将包含大约一半的记录,Shard2 将包含另一半(如果它们均匀分布在两个分片中)。在这种情况下设置 ParallelizationFactor将导致同时处理记录。分片内具有不同分区键的记录将同时处理。
\n 归档时间: |
|
查看次数: |
2143 次 |
最近记录: |