AWS Kinesis 流以较慢的速度将数据发送到 Lambda



我需要使用 AWS Kinesis streams & Lambda 实施流解决方案。

λ函数 1 -

它将数据添加到流中,每 10 秒调用一次。我添加了 100 个数据请求(每个 1kb(进行流式传输。我正在运行调用 lambda 函数的脚本的两个实例。

λ函数 2 -

此 lambda 使用上述流作为触发器。在少量数据/间隔秒 lambda 上同时获取数据。但在上述指标上,数据到达的速度比平时慢(+1 小时流式传输后慢 10 分钟(。

我检查了两个 lambda 函数的逻辑,并验证了在将数据推送到流之前,首先 lambda 不会增加延迟。我还通过第二个lambda中的流数据包验证了这一点,其中近似的ArrivalTimestamp和当前时间显然有时间差增加。

Kinesis 本身在分析中没有显示任何问题/限制(我使用的是 1 个分片(。

我是否需要对它们进行任何架构更改才能使其更顺畅,因为我需要至少扩展 10 倍,例如使用 200 个数据包调用第一个 lambda,超时 1 - 10 秒作为以后的基准测试。

我使用 100 作为批量大小。增加/减少它是否有优势?

更新:随着我在网上探索更多内容,我发现了使用kinesis实现一些异步/正面lambda的想法,这些lambda反过来异步调用实际的lambda,因此lambda处理时间不会成为瓶颈。但是,这种方法也失败了,因为我有相同的延迟问题。我已经检查了执行时间。正面 lambda 在 1 秒内结束。但是在两个lambda中,我仍然在大约ArrivalTimestamp当前时间之间有很大的差距。

请帮忙!

对于一个分片,将有一个第二个 lambda 实例。

所以它对第二个 lambda 的工作方式是这样的。lambda 从流中读取配置的记录大小并对其进行处理。在成功处理以前的记录之前,它不会读取其他记录。

添加第二个分片,您将有 2 个 lambda 处理记录。因此,我认为扩展架构的方法是增加分片的数量,但是要确保数据在分片上均匀分布。

最新更新