我试图找到一个好的架构来连接数据库。要求在每个lambda函数中不重复与数据库的连接。此外,这种方式将为单个lambda创建许多连接,而不是一个常见的连接。我可以实现如下图所示的结构,以便一个lambda连接到数据库,其他人在其代码中使用其连接
答案 0 :(得分:1)
您提出的架构不起作用,因为除非您的DB Lambda创新太频繁而不能始终保持温暖,并且您将连接存储在/ tmp中以便重复使用后续创新,因此您的DB Lambda将为每次调用创建新连接。此外,如果您对DB Lambda的调用创建多个容器来同时处理请求,那么您将无论如何都会拥有这么多连接而不只是一个
理想的解决方案是用一个小的EC2实例替换DB Lambda
答案 1 :(得分:0)
数据库连接可以缓存在你的" DB Lambda"当Lambda保持温暖。如果Lambda没有保持温暖,那么调用lambda将承受冷lambda的价格,这可能由于必须重新创建数据库连接而占主导地位,或者可能由你在其他工作中占据主导地位" DB Lambda& #34;
您希望您的Lambdas感冒的频率是需要考虑的因素。这取决于您的传入流量的统计信息。您是否愿意偶尔尝试重新建立数据库连接的延迟?另一个考虑因素是什么?
像其他人所说的那样管理一个微小的EC2实例可能会带来很多额外的工作,这取决于您的云服务是否是一组复杂的后端服务,无论该服务是否在不活动期间关闭。管理EC2实例是Lambdas的更多工作。
我确实看到了您的架构存在一个潜在问题。如果由于某种原因你的" DB Lambda"失败了,呼叫Lambda不知道。如果您需要处理这种情况并进行清理,那可能会出现问题。