假设我想为我在 EC2/ECS/EKS 中运行的 Spring Boot 应用程序使用 RDS 代理,我使用标准 JDBC 连接配置让一切都按预期工作。我是否仍然需要使用 C3P0 之类的库来配置应用程序端连接池,或者那会是多余的吗?
我假设使用 RDS 代理的好处是能够在连接到同一个数据库的多个不同类型的应用程序(无服务器和非无服务器)之间共享连接池。
假设我想为我在 EC2/ECS/EKS 中运行的 Spring Boot 应用程序使用 RDS 代理,我使用标准 JDBC 连接配置让一切都按预期工作。我是否仍然需要使用 C3P0 之类的库来配置应用程序端连接池,或者那会是多余的吗?
我假设使用 RDS 代理的好处是能够在连接到同一个数据库的多个不同类型的应用程序(无服务器和非无服务器)之间共享连接池。
我主要会重用我刚刚给出的另一个问题的答案,RDS 代理会影响当前的应用程序端池吗?:
中间有一个数据库代理,“连接”有两个独立的分支:
max_connections
value,并且其他客户端可能会缺乏连接。所以,应用程序连接池不是多余的。当您的应用程序想要使用连接时,它需要从其本地池中获取连接。然后,代理需要将其与数据库连接配对。代理将尽可能重用与数据库的连接(这种技术也称为多路复用)。
或者,引用官方文档:“您可以同时打开许多到代理的连接,并且代理会保持较少数量的连接到数据库实例或集群。这样做进一步减少了数据库服务器上连接的内存开销。这技术还减少了“太多连接”错误的机会。”
回到您最初的问题,是的,“跨多种不同类型的应用程序共享连接池”是其中一个好处:您不必配置不同的应用程序连接池以保持在数据库的max_connections
价值范围内。RDS Proxy 的其他好处,包括效率、故障转移、安全等,在官方文档中都有介绍。