繁体   English   中英

同一服务器上不同数据库的Java应用程序服务器连接池

[英]Java application server connection pooling for different databases on same server

我有几个运行不同应用程序的Java应用程序服务器(glassfish 3.0),每个应用程序需要一个唯一的postgresql数据库,因此每个数据库都需要一个不同的连接池。 我的目标是提供一个使用被动从属服务器的主/从数据库服务器,以实现冗余。 问题是,一方面PostgreSQL对活动连接的数量有一个很小的优点,另一方面,总共合理的限制是大约1000个活动连接。 随着每个应用程序在高峰时间被大量用户访问,每个连接池本身必须包含50-100个连接,以防止应用程序由于繁重的并行数据库而被锁定。 数据库服务器的总体负载相对较小,目前只需要提供足够的连接即可。 拥有如此多的连接,而大多数情况下大多数时间都是空闲的,这感觉不对。

问题是,在为数据库提供后备冗余和为每个应用程序提供足够的并行连接以应对高峰负载的同时,为所有应用程序提供(池)数据库访问的最佳方法是什么?

听起来这不是一个好习惯,因为与使用两个数据库相比,扩展原始服务器更好。 我认为,使两个数据库保持同步对于实际使用来说太麻烦了。

要合并数据库连接,可以使用Apache Commons DBCP之类的实现,这些实现在生产上非常有效。 但是,我从未尝试过结合使用两个这样的池。

另一方面,您可以自己实现连接池,其中将为数据库提供一个Great池,并为每个DB的连接提供子池。 为此,您可以重复使用现有的池实现,例如Apache Commons Pools。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM