当您已经有了应用程序端池时,您还需要 AWS RDS 代理吗?

Do you still need an AWS RDS proxy when you already have an application side pooling in place?

作为 this 问题的跟进

当您已经有了应用程序端池时,您还需要 AWS RDS 代理吗?

我有一个 Springboot 应用程序,它使用默认的 HikariDataSource 来管理数据库连接池。我们计划使用的数据库驱动程序是 MariaDB Connector/J,因为它可以处理极光故障转移,也是 AWS 在其 documentation 中推荐的驱动程序。该应用程序具有相当稳定的小负载,没有太多尖峰。但是,它应该是高可用的。

但是,我们还发现了 RDS 代理,它还管理数据库连接池和故障转移。

我想使用 RDS Proxy 以便减轻管理数据库连接池和处理应用程序故障转移的负担。但是,似乎我无法关闭 Springboot 中的应用程序端池(默认情况下它在那里)。而且我还需要一个驱动程序来连接到数据库,所以我还不如使用 Connector/J。有了这些 stack/tools 我有,RDS 代理是不是太多了,多余了?

正如您所指出的,AWS 正在发布一个 JDBC 驱动程序,它也知道如何进行更快的故障转移。例如,它知道如何在故障转移后找到正确的数据库实例,这样您就不必担心cached DNS information。如果您对驱动程序的故障转移功能感到满意,那么 RDS Proxy 也无济于事。

但是,RDS Proxy 仍然会在您的场景中增加价值。例如,假设您需要横向扩展您的应用程序。您的应用程序的每个实例都有自己的连接池,如果您添加了足够多的实例,那么您将超过数据库的最大连接数设置。 RDS Proxy 通过处理来自您的应用程序的连接以及 multiplexing 它们与数据库的连接来帮助处理这种情况。 RDS Proxy 本身会遵守数据库的最大连接数设置。