我有几个运行不同应用程序的java应用程序服务器(glassfish 3.0),每个应用程序都需要一个独特的postgresql数据库,因此每个数据库都有一个不同的连接池。我的目标是使用被动从站提供主/从数据库服务器以实现冗余。问题是postgresql一方面对活动连接的数量有一个非常小的最佳点,另一方面总共合理限制大约1000个活动连接。由于每个应用程序在高峰时间被更多用户访问,因此每个连接池本身必须包含50-100连接,以防止应用程序因大量并行数据库而锁定。数据库服务器的总体负载相对较小,此时只需提供足够的连接。打开这么多连接并且大部分时间大多数都处于空闲状态只是感觉不对。
问题是,为数据库提供回退冗余并为每个应用程序提供足够的并行连接以应对峰值负载时,为所有应用程序提供(池化)数据库访问的最佳方法是什么?
答案 0 :(得分:0)
这听起来不是一个好习惯,因为你比使用两个DB更好地扩展原始服务器。在我看来,保持两个数据库同步对于实际应用来说太麻烦了。
要池数据库连接,您可以使用Apache Commons DBCP等实现非常高效的实现。 但是,我从未试图同时使用其中两个这样的池。
另一方面,您可以自己实现连接池,其中您将拥有一个用于DB的Great池,以及用于每个DB连接的子池。为此,您可以重用现有的池实现,例如Apache Commons Pools。