【发布时间】:2018-01-06 17:25:34
【问题描述】:
我需要使用 AWS Kinesis 流和 Lambda 实施流解决方案。
Lambda 函数 1 -
它将数据添加到流中,每 10 秒调用一次。我添加了 100 个数据请求(每个 1kb)进行流式传输。我正在运行调用 lambda 函数的脚本的两个实例。
Lambda 函数 2 -
此 lambda 使用上述流作为触发器。在少量数据/间隔秒 lambda 上同时获取数据。但在上述指标上,数据到达速度比平时慢(+1 小时流式传输后慢 10 分钟)。
我检查了两个 lambda 函数的逻辑并验证,第一个 lambda 在将数据推送到流之前不会增加延迟。我还通过第二个 lambda 中的流数据包验证了这一点,其中 approximateArrivalTimestamp 和 当前时间 显然有时间差增加..
Kinesis 本身在分析中没有显示任何问题/节流(我使用的是 1 个分片)。
我需要对其进行任何架构更改以使其更顺畅吗?因为我需要扩展至少 10 倍,例如使用 200 个数据包调用第一个 lambda 的 20 次,超时 1 - 10 秒作为以后的基准。
我使用 100 作为批量大小。增加/减少它有优势吗?
更新:当我在网上进行更多探索时,我发现了一些想法来实现一些带有 kinesis 的异步/前置 lambda,它反过来异步调用实际的 lambda,因此 lambda 处理时间不会成为瓶颈。但是,这种方法也失败了,因为我有同样的延迟问题。我检查了执行时间。正面 lambda 在 1 秒后结束。但是我仍然在两个 lambdas 中的 approximateArrivalTimestamp 和 当前时间 之间有很大的差距。
请帮忙!
【问题讨论】:
标签: performance streaming aws-lambda latency amazon-kinesis