我对此还比较陌生,但我设置了一个Tomcat集群(使用httpd中的mod_proxy )和会话复制(单独的redis服务器),以实现容错。
关于这个设置,我有几个问题:
DataSource。在集群设置之前,应用程序是部署在单个服务器上的,并且DataSource被配置为只允许每个DataSource连接池中的几个(50)连接。
现在,在集群环境中,我不能在每个Tomcat上创建或拆分这些数量的连接,而且节点的动态注册也会造成进一步的问题。我还想知道,如果连接池不可能或效率低下,是否有其他解决方案来解决这个问题?发布于 2016-12-21 23:25:08
我将用相反的顺序来处理你的问题,因为第二个问题更简单。
Tomcat中的数据库连接池不能在集群范围内配置:您必须为集群中的每个节点配置一个单独的池。但这不一定是坏消息。将节点配置为每个节点上的连接池中有5个、10个或100个连接没有任何问题。
的确,您可能最终会遇到这样一种情况:一次有太多用户连接到数据库,这会使数据库不堪重负,但这也可能发生在单个节点上。多个节点在概念上没有什么不同,对于单个节点也是如此。
关键是要确保集群适当地平衡用户,这样就没有限制,例如每个节点有5个数据库连接,但是100个用户最终在一个节点上,而其他节点每个节点只有5个用户。在这种情况下,流行的节点(100个用户)将不得不共享这5个连接,而在其他节点上,每个用户都得到一个连接到自己。
回到你的第一个项目,这是更复杂的。如果每个用户都有一个单独的数据库,那么连接池是不可能完成的,因为每次都必须为每个用户建立一个新的连接。这些连接是不可集合的,至少在没有非常小心的情况下也是如此。听起来,在确定该问题的技术解决方案之前,您可能需要解决一个体系结构问题。
https://stackoverflow.com/questions/41236543
复制相似问题