AWS Lambda 支持 Kinesis 和 DynamoDB 事件源的并行化因子。但 MSK 不支持它。我们可以创建 Lambda 函数的保留并发吗?它是否有助于从 MSK 主题并发消费
TL'DR 使用 aws::event-source-mapping 将 lambda 连接到 kafka 集群仅限于主题中拥有的分区数量
我有设置POC的经验
Custom Kafka Cluster Topic (1 Partition) > EventSourceMapping > Lambda
在与 AWS 展开讨论后,它看起来像是一个限制
我没有尝试的另一种方法是设置一个 lambda 接收器(kafka connect)并设置一个
tasks.max
,这似乎可以解决这个问题
https://docs.confluence.io/kafka-connectors/aws-lambda/current/overview.html#lambda-sink-multiple-tasks
文档中的具体细节非常稀疏。我也在寻找这个,我唯一发现的是: https://amazonmsk-labs.workshop.aws/en/msklambda/tpschemareg/overview.html
在其中,他们从 MSK 读取并发布到 Kinesis,以便 lambda 可以并行处理。如果属实的话,MSK 事件源似乎主要用于迁移。只有一个消费者是相当有限的。
也许尝试更多的人可以留下更好的答案。
krishwin 在本文底部的评论似乎也表明了这一点。 https://dev.to/danieljameskay/triggering-lambda-functions-from-amazon-msk-316o
更好的选择可能是 AWS lambda 接收器连接器。看起来它将运行一个 lambda 进程,最多可达分区数:
Lambda 具有自动缩放功能来控制并发量。除非有特殊需要,通常不需要设置并发数。 https://aws.amazon.com/about-aws/whats-new/2022/01/aws-lambda-auto-scaling-msk-apache-kafka/