2017-07-31 132 views
0

我需要使用aws kinesis流& lambda来实现某种流解决方案。我添加了第一个用于添加数据流的lambda。第一个Lambda本身每10秒调用一次,并添加100个数据请求(每个1kb)流。我运行了两个调用lambda的脚本实例。aws kinesis流以较低的速率向lambda发送数据

第二个lambda使用上面的流作为触发器。在小容量数据/间隔第二个lambda上同时获取数据。但是,在上述的数据中,数据的准确性会降低(在+1小时流播后,速度会降低10分钟)。

我将两个lambda结合起来并且能够验证第一个lambda逻辑的逻辑不会在将数据推送到流之前增加延迟。我还通过第二个lambda中的流包验证了这一点,其中approxrivalTimestamp &当前时间显然有增加的时间差距。

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

他们的任何体系结构变化我需要使它更平滑,因为我需要增加matrics至少10次,比如20个第一个带有200个数据包的lambda的调用,超时1 - 10秒作为后续基准。

我使用100批量大小。如果增加/减少它可以有优势。

更新:当我更多地探索在线资源时,我得到了实现一些异步/前端lambda与kinesis谁实际上异步调用实际lambda的想法,所以lambda处理时间不会成为瓶颈。然而这种方法也失败了,因为我有相同的延迟问题。我检查执行时间,前面的lambda以1秒结束。但是我仍然在两个lambda中的approxrivalTimestamp &当前时间之间有很大差距。

回答

0

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

因此它适用于第二lambda。 lambda读取从流中配置的记录大小并对其进行处理。直到先前的记录已成功处理,它才会读取其他记录。

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

+0

在阅读aws文档时,当数据大小超过限制并开始调节时,aws建议添加额外的分片。如果我缺少来自文档的东西? –

+0

此外,我用另一种在线方式更新了我的问题(仍然失败)。还有一件事我使用100批量大小。如果增加/减少它可以有优势? –

相关问题