J2EE 高并发体系详解-web负载均衡

时间:2022-09-19 17:06:45

WEB 层集群实现

WEB 层集群是 J2EE 集群的重要且基本的功能。 WEB 集群技术包括 WEB 负载均衡和 HTTP Session 失效转移。

WEB 负载均衡

J2EE 提供商实现 WEB 负载均衡有许多方式。基本上,都一个负载均衡器被插入到浏览器和 WEB 服务器之间,如下图所示。

J2EE 高并发体系详解-web负载均衡
图 5   WEB 负载均衡
负载均衡器可以是一台硬件,如 F5 负载均衡器,或仅仅是另一台有负载均衡 Plug-Ins 的 WEB 服务器,一个简单的带 ipchains 的 Linux box 可以很好的实现负载均衡。不管采用哪种技术,负载均衡器都有以下特性:
l      实现负载均衡算法
当客户请求到来时,负载均衡器需要决定将如何分发到后台服务器。流行的算法是 Round-Robin 、 Random 和Weight Based 。负载均衡器尽力使每台服务器实例都获得相同的负载,但是上述算法没有一个可以获得理想的负载相同,因为它们仅仅是依据发送到特定服务器的请求的个数。一些精密的负载均衡器实现了特殊的算法。它在分发请求之前将检测服务器的工作负载。
l      健康检测
当一台服务器失效了,负载均衡器应当检测出失效并不再将请求分发到这台服务器上。同样,它也要检测服务器是否恢复正常,并恢复分发请求。
l      会话胶粘
几乎所有的 WEB 应用程序都有一些会话状态,可能是简单的记住用户是否登陆,或是包含你的购物车信息。因为 HTTP 本身是无状态的,会话状态应当存在服务器的某个地方并与你当前浏览会话相关联,这样当你下次再请求相同 WEB 应用程序的页面时可以很容易的重新获取。当负载均衡时,最佳的选择就是将特定的浏览器会话分发到上次相同的服务器实例中,否则,应用程序可能不能正确工作。
因为会话状态存储在特定 WEB 服 务器的内存中,“会话胶粘”对于负荷均衡非常重要。但是,如果其中某台服务器实例因为某种原因失效了(比如关机),那么这台服务器的会话状态将要丢失。负 载均衡器应当检测到这个失效并不再将请求分发给它,但这些请求的会话状态都因为存放在失效的服务器中而丢失了所有信息,这就将导致错误。会话的失效转移因 此而生。

   原创文章@java进阶网 转载请标明出处: http://www.javady.com/index.php/411.html