适用于AWS Lambda的RDS / MySQL连接池(独立/代理)

时间:2020-01-21 16:36:13

标签: mysql ruby amazon-web-services aws-lambda rds

我正在使用Ruby 2.5运行时和RDS MySQL(目前为小型实例)在AWS Lambda上运行服务。已知限制大约为66个数据库连接,并且max_connections由RDS计算并设置。扩大规模只能解决很小的问题,但是成本很高。

现在,常见的建议是在Lambda主函数之外初始化数据库,并保留该全局排序变量以备后用。 这样可以避免在每次Lambda调用时重新启动连接。这行得通,但实际上也使事情变得更加复杂。当它在后续调用中重用连接时,该Lambda函数的额外并发意味着正在汇总额外的连接。现在将其乘以50-100个函数,我们就注定了。

另一种解决方案似乎是将每个Lambda的最大并发/调用数减少到1左右。哪一个也不好。

长话短说:我已经习惯了使用连接池(mysql2 gem),它们非常完美。但是在这里我不能真正使用它们。现在,我正在研究是否可以在服务器上启动一个简单的“独立”服务,该服务的行为类似于MySQL代理/池-集成了连接池。

因此,所有Lambda函数都根据需要连接到池,这允许更多的传入连接,甚至可能是(数以万计)数千个,并且该池现在显然必须处理瓶颈方案-在我们的情况下-如果那意味着Lambda必须等待一点时间才能释放连接,那绝对没问题。

我认为MySQL Proxy(现在是MySQL Relay或其他功能)可以做到,但是没有。然后是ProxySQL,但是它以PHP为重点,而且似乎还有其他用途。

在进入的连接上是否没有任何伪装成MySQL服务器的东西,然后在内部具有连接池,通过该连接池将这些命令分发/重新路由到RDS?

Aurora不能用于此选项(旧项目,新项目已在使用Aurora)。

非常感谢任何帮助,非常抱歉,没有代码,但这更多地是关于使用哪种工具的信息。

0 个答案:

没有答案
相关问题