用于数据库交互的常用 lambda 函数
Common lambda function for database interaction
我正在尝试寻找一个连接数据库的良好架构。要求在每个lambda函数中不重复连接数据库。此外,这种方式将为单个 lambda 而不是一个公共的创建许多连接。我能不能实现下图这样的结构,让一个lambda连接数据库,其他人都在自己的代码中使用它的连接
您提议的架构将无法工作,因为除非您的 DB Lambda 创新过于频繁以至于无法始终保持温暖,并且您将连接存储在 /tmp 中以便在后续创新中重用,否则您的 DB Lambda 将为每个创新创建新连接调用。此外,如果您对 DB Lambda 的调用创建了多个容器来为同时请求提供服务,那么您无论如何都会有那么多连接,而不是只有一个
理想的解决方案是用小型 EC2 实例替换 DB Lambda
当 Lambda 保持温暖时,数据库连接可以缓存在您的 "DB Lambda" 中。如果 Lambda 不保持温暖,那么调用该 lambda 将承受冷 lambda 的代价,这可能会被必须重新创建数据库连接所支配,或者可能被您在 "DB Lambda" 中所做的其他工作所支配。
您希望 Lambda 变冷的频率是需要考虑的因素。这取决于您的传入流量的统计信息。您是否愿意忍受偶尔重新创建数据库连接的延迟,另一个考虑因素?
像其他人所说的那样管理一个小型 EC2 实例可能需要大量额外工作,具体取决于您的云服务是否是一组复杂的后端服务,该服务是否会在不活动期间关闭。管理 EC2 实例比 Lambda 更繁琐。
我确实看到您的体系结构存在一个潜在问题。如果出于某种原因您的 "DB Lambda" 失败,调用 Lambda 将不知道。如果您需要处理这种情况并进行清理,那可能是个问题。
我正在尝试寻找一个连接数据库的良好架构。要求在每个lambda函数中不重复连接数据库。此外,这种方式将为单个 lambda 而不是一个公共的创建许多连接。我能不能实现下图这样的结构,让一个lambda连接数据库,其他人都在自己的代码中使用它的连接
您提议的架构将无法工作,因为除非您的 DB Lambda 创新过于频繁以至于无法始终保持温暖,并且您将连接存储在 /tmp 中以便在后续创新中重用,否则您的 DB Lambda 将为每个创新创建新连接调用。此外,如果您对 DB Lambda 的调用创建了多个容器来为同时请求提供服务,那么您无论如何都会有那么多连接,而不是只有一个
理想的解决方案是用小型 EC2 实例替换 DB Lambda
当 Lambda 保持温暖时,数据库连接可以缓存在您的 "DB Lambda" 中。如果 Lambda 不保持温暖,那么调用该 lambda 将承受冷 lambda 的代价,这可能会被必须重新创建数据库连接所支配,或者可能被您在 "DB Lambda" 中所做的其他工作所支配。
您希望 Lambda 变冷的频率是需要考虑的因素。这取决于您的传入流量的统计信息。您是否愿意忍受偶尔重新创建数据库连接的延迟,另一个考虑因素?
像其他人所说的那样管理一个小型 EC2 实例可能需要大量额外工作,具体取决于您的云服务是否是一组复杂的后端服务,该服务是否会在不活动期间关闭。管理 EC2 实例比 Lambda 更繁琐。
我确实看到您的体系结构存在一个潜在问题。如果出于某种原因您的 "DB Lambda" 失败,调用 Lambda 将不知道。如果您需要处理这种情况并进行清理,那可能是个问题。