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

时间:2017-07-31 08:27:35

标签: performance streaming aws-lambda latency amazon-kinesis

我需要使用AWS Kinesis流& amp;来实现流解决方案。 LAMBDA。

Lambda函数1 -

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

Lambda函数2 -

这个lambda使用上面的流作为触发器。在小量数据/间隔第二个lambda同时获取数据。但是在上述指标上,数据比平常慢(+1小时流后慢10分钟)。

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

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

我是否需要进行任何体系结构更改以使其更顺畅,因为我需要扩展至少10次,例如20个调用第一个lambda的200个数据包,超时1 - 10秒作为后续基准测试。

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

更新:当我在网上进行更多探索时,我找到了实现一些异步/前置lambda与kinesis的想法,后者反过来异步调用实际的lambda,因此lambda处理时间不会成为瓶颈。但是,这种方法也失败了,因为我有相同的延迟问题。我检查了执行时间。面向前方的lambda以1秒结束。但是我仍然在 approximateArrivalTimestamp &两个lambda中的当前时间

请帮忙!

1 个答案:

答案 0 :(得分:0)

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

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

添加第二个分片,您将有2个lambdas处理记录。因此,我看到扩展架构的方式是增加分片数量,但要确保数据在分片中均匀分布。