HikariCP/Apache DBCP2 and PgBouncer



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

如果你使用的是PgBouncer,那么你绝对不需要HikariCP。

原因很简单,发明数据库连接池是为了保护数据库免受建立数据库连接并将其拆解到服务器的巨大内存和性能成本(数据库连接不是TCP连接,它远不止于此)。数据库连接池通过重用已建立的后端连接来实现这一点。而这已经通过PgBouncer实现了。

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

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

此外,为应用程序提供 Hikari 连接池将限制它在负载过重时可以使用的最大连接数。假设你有微服务 A、微服务 B 和微服务 C。假设微服务 A 需要对数据库的高吞吐量,而 B 和 C 是轻负载吞吐量。在每个微服务上设置池大小为 10 的 HikariCP 只会完全为微服务 A 创建一个瓶颈,并且需要您进行一些性能优化演练来时不时地调整池的大小,这是完全没有必要的。

免责声明:我很好奇任何反对我刚才提到的反驳。

最新更新