首页 > 解决方案 > MSK 事件源的 Lambda 并发问题

问题描述

我们正在使用带有 MSK 事件源的 AWS Lambda。

环境详细信息:目前我们共有 47 个分区分配给 Lambda 正在侦听的 MSK 主题。我们也将 Lambda Reserved Concurrency 定义为 47。

我们面临着如下所列的多个问题。

问题:1:当我们将事件放在 MSK 主题的多个分区时,Lambda 并发无法正常工作。

我们预计,在并行加载的情况下(当 MSK 主题的 47 个分区中都有事件时),将使用所有定义的 Lambda 预留并发(即最多同时调用 47 个 Lambda)。但是在我们的例子中,即使有 ~9 个调用请求,也只调用了 ~2 个并发 Lambda。

问题:2:从 Lambda 函数 Cloudwatch 日志中,我们发现 MSK 事件发布时间和 Lambda 触发时间之间存在约 1 分钟的延迟。

来自日志的 Kafka 事件消息:

{"records":{"topicName-7":[{"topic":"topicName","partition":7,"offset":27,"timestamp":1632218228728,"timestampType":"CREATE_TIME","key":"*****","value":"*****"}]},"eventSource":"aws:kafka","eventSourceArn":"*****","bootstrapServers":"*****"}

函数调用时间戳: 2021-09-21T09:58:08.612Z[UTC]

正如我们所见,Kafka 事件消息中的时间戳为 1632218228728 即 2021-09-21T09:57:08.728Z[UTC] 但 Lambda 函数调用时间为 2021-09-21T09:58:08.612Z[UTC]。因此,存在约 1 分钟的时间滞后。

请建议,

  1. 我们对 Lambda Concurrency 的理解是否正确?
  2. 我们是否在 Lambda 配置中遗漏了什么?

标签: amazon-web-servicesapache-kafkaaws-lambdaaws-serverlessaws-msk

解决方案


推荐阅读