AWS lambda 和数据库[关闭]

2024-03-29

我一直在理论上了解到,创建与数据库的新连接是昂贵的操作。因此,我们应该保持打开的连接池并将其用于数据库操作。

在考虑 AWS lambda 时。假设lambda函数想要对db进行操作,那么我们需要创建到db的连接。操作完成后,需要关闭db。如果同时执行 100 个 lambda 函数,则将执行 100 个数据库连接打开/关闭。从理论上讲,这是一个糟糕的模式。

如果是这样,那么在涉及数据库操作时使用AWS lambda是否不合适?


为什么你需要DB连接已关闭,未重新使用它Lambda功能?

Each Lambda函数运行意味着Container运行后它们会存活一段时间(几十分钟,如果你连续调用它,它会保持存活)。

活着就意味着每个人Lambda函数在运行后保留内存区域,以便可以重用它们。

例如,如果您在中定义了一个全局变量Lambda功能如下。 (虽然是python代码,但我想你可以理解,因为它很简单)

variable = 10

def lambda_function(event, context):
    global variable
    print(variable)  
    variable += 1

If the Lambda函数每 1 秒调用一次,它将打印如下。

10
11
12
13
14
.
.
.

正如你所看到的,每一个Lambda调用的函数使用相同的全局变量。 如果全局变量是DB连接怎么办?您可以重用它们,而不是在每次 lambda 调用时重新打开连接。

然而,正如你所说,如果 100Lambda函数同时执行,每个函数将打开 100 个连接Lambda并发意味着不同Containers分别具有不同的内存区域。

但最终,100 个连接将被重新用于连续的 100 个同时执行。

- - - - - 编辑 - - - - -

我同意@Arun的评论。当流量稳定并逐渐增加和减少时,我的答案将很有用,以便连接可以充分重用并通过服务器端的保持活动状态关闭。流量的急剧增加和减少可能会浪费数据库连接而不适当关闭。

- - - - - 编辑 - - - - -2019-12-17

AWS 宣布新功能RDS proxy虽然现在还是预览版。 如果您通过以下方式连接 RDSRDS proxy,它将为您管理数据库连接池(Lambda RDS)。

详细可以参考这个link https://aws.amazon.com/about-aws/whats-new/2019/12/amazon-rds-proxy-available-in-preview/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS lambda 和数据库[关闭] 的相关文章

随机推荐