gpt4 book ai didi

amazon-web-services - 无服务器数据库连接池

转载 作者:行者123 更新时间:2023-12-04 00:13:17 25 4
gpt4 key购买 nike

我正在尝试在 aws 上构建一个 100% 无服务器(现在减去数据库)的应用程序,但我遇到的是数据库是瓶颈。我的应用程序可以很好地扩展,但我的数据库可以容纳的连接数是有限的,并且在某些时候,我的 lambda 会遇到这个限制。我可以在我的 lambdas 中的处理程序之外进行连接池,以便每个 lambda 容器而不是每个调用都有一个数据库连接,虽然这确实增加了我达到连接限制之前的并发调用数量,但限制仍然存在。

我有两个问题。
1. serverless aurora 是否通过自动伸缩来增加实例数量来满足更多连接的需求来解决这个问题。
2. 这个问题还有其他解决方案吗?

另外,从其他对无服务器感兴趣的开发人员那里,我是否正在尝试做一些不值得做的事情?我喜欢无服务器框架的部署是多么容易,但是在像 Kubernetes 这样的东西中使用微服务更好吗?

最佳答案

我相信这个问题有两个潜在的解决方案:

第一个也是最简单的选择是利用“lambda 热状态”,这是 Lambda 为后续调用重用执行上下文的概念。根据 AWS 建议

Any declarations in your Lambda function code (outside the handler code, see Programming Model) remains initialized, providing additional optimization when the function is invoked again. For example, if your Lambda function establishes a database connection, instead of reestablishing the connection, the original connection is used in subsequent invocations. We suggest adding logic in your code to check if a connection exists before creating one.



基本上,虽然 lambda 函数是热门阶段,但它“可能/应该”重用打开的连接。

以下内容的限制:
  • 你只为单个 lambda 类型重用连接,所以如果你一直调用 5 个 lambda 函数,你仍然会使用 5 个连接
  • 当您在 lambda 调用中出现峰值时,包括并行执行,这种方法变得不太有效,因为对于大多数请求,lambda 将在新的执行上下文中执行

  • 第二种选择是使用连接池,连接池是已建立的数据库连接的数组,以便将来需要对数据库的请求时可以重用这些连接。

    虽然第二个选项提供了更一致的解决方案,但它需要更多的基础设施。
  • 你需要为池运行一个单独的实例,如果你想正确地做事情,可能至少有两个实例和一个负载均衡器(除非使用容器)。

  • 虽然为连接池提供这么多额外的基础设施可能会让人不知所措,但根据项目的规模、您现有的基础设施(可能您已经在使用容器)和成本优势,它仍然可能是一个有效的选择

    关于amazon-web-services - 无服务器数据库连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52936651/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com