AWS Lambda容器重用如何工作?

时间:2016-05-30 10:15:28

标签: amazon-web-services aws-lambda

我已经浏览过this链接,(已于2014年12月发布),另请参阅thisthis

AWS Lambda容器如何在2016年5月重复使用,请您分享详细说明的具体链接?下面我对这个AWS Lambda容器重用问题几乎没有任何疑问。

考虑用例

Lambda函数名称" processMessageLambda"在必须处理消息时接收请求,以及从POST REST API接收的消息(来自AWS API Gateway,与此lambda函数连接)。

现在这个' processMessageLambda'处理消息并将其存储到数据库。

从逻辑上讲,它执行以下操作:   连接到数据库,存储消息并关闭连接。 (它在正常情况下工作正常。)。

如果请求到达 - 例如每秒10次,并且每个lambda函数需要30秒才能执行,那么它实际上会打开许多​​数据库连接。

Q1:我们可以使用'连接池'在这种情况下(例如boneCP)?作为" processMessageLambda"的调用次数会是每秒一百还是每秒十次?

(请参阅:simple example of container reuse - 它的工作方式正如它所说的那样,但是会发生什么请求才会说 - 每秒10次请求)

问题2:如果可以使用连接池,那么将如何重新使用这个aws lambda容器?

如果考虑案件:

让我们考虑这个Lambda函数收到的请求是每秒十个,在这种情况下 - 将创建这个lambda函数的10个不同容器,或者将创建单个容器的lambda函数,并将与所有这10个请求一起使用?

Q-3:如果要创建10个不同的lambda函数容器,那么这意味着将使用10个数据库连接,那么这些10个容器会在进一步请求时重新使用吗?

问题4:请您从开发人员的角度解释一下,在重用aws lambda容器时,它实际上是如何实现lambda容器重用工作或者开发人员如何考虑它?

问题5:如果容器重用已经到位,开发人员如何维护变量状态,以便开发人员知道哪个变量会被重用?

1 个答案:

答案 0 :(得分:12)

我构建并维护多个无服务器应用程序。要记住哪一件事有助于我:两个Lambda函数存在于不同的宇宙中。这立即回答了几个问题:

1:不,你只能按照Lambda进行连接池。如果激活100个Lambda函数,则有100个连接。

2: -

3:未指定容器重用背后的确切算法。下一个请求可能使用现有容器或新容器。没有办法说出来。阅读this博客文章了解更多信息。

4:imo的最佳方式是考虑容器根本不被重复使用,增加的规则是在需要它时(/ tmp文件夹)始终在暂存空间中使用唯一(随机)文件名。当我试图保持连接打开以便重复使用时,连接超时,然后重新使用。这导致了数据库连接问题。现在我只是在每次调用时打开和关闭。

5:保持代码无状态(模块除外,绝不使用全局变量),如果需要在临时空间中存储文件,请始终使用唯一(随机)名称。这两条一般的经验法则使我免于许多问题。