我们已配置 MSK (kafka) 事件源作为 Lambda 函数的触发器。尽管偏移滞后不断增加,但 lambda 并发性几乎始终限制在 4-5,如下图所示。 MSK 事件源使用的配置是:
Batch Size: 50
Batch window: 30 seconds
Number of partitions in the Kafka topic: 10
我确保负载均匀分布在所有分区上。我这里缺少什么导致并发问题吗?任何解决方案表示赞赏。预先感谢。
我认为您遇到了我们几个月前发现的相同限制,此链接引导我们找到了正确的方法(在我们的案例中也称为解决方法):
老实说,分区并未充分利用其所有功能,这是有道理的,因为从 msk EC2 设置到 lambda 运行时的跳转并不是一件小事。也许你可以尝试其他连接器。
https://docs.confluence.io/kafka-connectors/aws-lambda/current/overview.html#multiple-tasks
通过 Kinesis 桥接您不会遇到这些特定问题也是有道理的,因为它都是亚马逊原生的东西。
理想情况下,并发数应该是一个没有小数的数字,与消费者计数相匹配。
当您最初创建 Apache Kafka 事件源时,Lambda 会分配一个使用者来处理 Kafka 主题中的所有分区。每个消费者都有多个并行运行的处理器来处理增加的工作负载。此外,Lambda 根据工作负载自动增加或减少消费者数量。为了保持每个分区中的消息顺序,消费者的最大数量是主题中每个分区一个消费者。
来源:https://docs.amazonaws.cn/en_us/lambda/latest/dg/with-kafka.html#services-kafka-scaling
偏移滞后表明本博客的性能问题提供了更好的解释偏移滞后指标