amazon-web-services - 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 分钟的时间滞后。
请建议,
- 我们对 Lambda Concurrency 的理解是否正确?
- 我们是否在 Lambda 配置中遗漏了什么?
解决方案
推荐阅读
- javascript - 如何检测OLED显示器?
- excel - 如何向下循环运行直到右侧的单元格为空 - VBA excel
- c# - C# 中是否有与 IsNullOrEmpty 相反的内容
- java - 使用递归方法对数组进行排序
- r - 将 XML 文档转换为 R 数据帧,其中子节点都具有相同的名称并使用子节点进行标识
- ios - Stripe iOS:我无法使用卡 ID 创建费用
- vue.js - 如何使用 vue-router 将活动链接保持在非精确路由中
- swift3 - 将 NSCalendar 更新为 Swift3
- elixir - 混合测试后未定义的_path
- java - 使用 Android Room,我是否需要为嵌套对象添加 setter 和 getter?