HikariCP / Apache DBCP2和PgBouncer

时间:2019-06-13 13:26:20

标签: hikaricp apache-commons-dbcp pgbouncer

在使用HikariCP(或Apache DBCP2)的Spring应用程序中切换到PgBouncer之后,我需要为HikriCP(或Apache DBCP2)端进行其他配置吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是PgBouncer,那么您肯定不需要HikariCP。

道理很简单,发明了一个数据库连接池来保护数据库免受建立数据库连接并将其拆解到服务器的巨大内存和性能成本(数据库连接不是TCP连接,这是非常重要的。比那更多的)。数据库连接池通过重用已经建立的后端连接来实现。 PgBouncer已经实现了这一点。

HikariCP和PgBouncer之间的空间不再是数据库连接世界,而是TCP连接,这特别便宜地在同一数据中心中构建,并且不需要额外的内存和CPU来构建。

实际上,在PgBouncer的前端使用HikariCP就像在HTTP池中重新使用NGINX Web服务器的HTTP连接一样。我认为没有人会觉得有用。

此外,为应用程序使用Hikari连接池将限制其在负载较重时可以使用的最大连接数。假设您有微服务A,微服务B和微服务C。假设微服务A要求数据库具有高吞吐量,而B和C的负载较轻。在每个微服务上拥有池大小为10的HikariCP只会完全为微服务A造成瓶颈,并且需要您进行一些性能优化练习来不时地调整池的大小。

免责声明:我很好奇刚才所说的任何反驳。