日期:2014-05-16 浏览次数:20900 次
对于大型网站系统或者访问量较高的应用系统,多用户的并发访问常常会导致服务器的异常甚至不响应,一个web服务器往往无法满足所有的负载。解决这个问题的办法就是把负载分担在多个web服务器上,使系统稳定、快速的运行。均衡负载最常用的方式是集群(cluster),即把多个web服务器节点分布在一个或多个硬件服务器上,已达到分担处理请求的目的。
对于以tomcat为application server的应用,常见的集群方式是web server(apache)调用连接器(如jk2),通过负载均衡(ajp13),把访问分发到各个tomcat节点,各个节点处理完访问后,把相应的response数据发送给web server,然后由web server把访问结果返回给浏览器(用户)。
Tomcat的集群主要包括三个部分:负载均衡、session同步、webApp(web资源)同步。
负责request请求的自动分配,根据app server(tomcat)的负载来决定分配方式,常用apache的ajp13(属于tomcat的一个子项目)来处理。
即Session
Replication,是集群面临最大的一个问题。
由于http协议的无状态性,对于用户识别以及信息保留一般都通过session来处理,所以各个cluster的节点必须保障session的一致性。同时session的同步还要考虑性能的问题(socket,IO etc…),tomcat中使用tomcat cluster子项目来实现session的同步(基于TCP/IP协议)。
对于超大型网站系统,基于性能方面的考虑,需要实现primary-secondary session replication,(prsp)即实现session的分级同步,减轻session复制对于访问相应的影响。Tomcat5.5以及以前版本没有实现对于prsp的支持,但据说会在下个版本实现。
即webApp的自动分发。一次分发(deploy)/改动,各个cluster节点自动同步。
对于集群,各个cluster