AWS Firehose数据转换并发限制

时间:2017-05-30 14:46:26

标签: amazon-web-services lambda aws-lambda amazon-kinesis-firehose

我有一个用例,我必须每秒从不同的制作人那里收集数千条记录,并使用AWS firehose将它们推送到弹性搜索。我还在firehose上使用数据转换lambda,它在将记录传递回firehose之前进行了大量的计算。

Firehose应该异步调用每个缓冲批处理的lambda,然后再次缓冲数据以传递到目标。

我进行了一项基本测试,其入口速率为每秒4k条记录,持续15分钟,以下是系统响应的方式。

Firehose CloudWatch Metrics Firehose CloudWatch Metrics

Lambda CloudWatch Metrics Lambda CloudWatch Metrics

查看firehose指标,很明显,需要花费一个多小时来处理所有传入的事件。由于没有任何lambda油门(图2),所以我想知道为什么Firehose没有运行尽可能多的lambdas以便能够跟上输入速率?

如第二张图所示,我每分钟约有30次lambda调用,平均处理时间为8000ms。

所以我想知道firehose是否同时运行lambda?是否有我失踪的firehose-lambda并发限制?

1 个答案:

答案 0 :(得分:1)

每个Lambda事件源原则上都与1个Lambda实例相关联。这是为了确保处理数据的正确排序。

如果要以不保证数据的正确排序为代价来增加吞吐量,可以使用lambda函数内部的“InvokeAsync”(传递相同的参数)。这样你第二次调用lambda,这次是异步的,这将按预期增加吞吐量。

可以在此处找到详细说明类似问题的博文:https://medium.com/retailmenot-engineering/building-a-high-throughput-data-pipeline-with-kinesis-lambda-and-dynamodb-7d78e992a02d