【问题标题】:AWS Kinesis stream sending data to Lambda at slower rateAWS Kinesis 流以较慢的速率向 Lambda 发送数据
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

    • 当我阅读 aws 文档时,当数据大小超过限制并开始限制时,aws 建议添加额外的分片。如果我从文档中遗漏了什么?
    • 我还用另一种在网上找到的方法更新了我的问题(仍然失败)。我使用 100 批大小的另一件事。如果增加/减少它可以有优势?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多