J2EE集群最重要的两点就是能够实现负载均衡和失效转移。
WEB层的集群
web层的集群主要包括web负载均衡和httpsession的失效转移这两个方面。
1.1 web负载均衡的实现包括三方面:
负载均衡算法:当请求来临时,决定由那个服务器来处理
健康检测:如果某个服务器失效,将不再接受新的请求
会话胶粘:web应用程序都有相应的会话状态,因为HTTP是无状态协议,因此服务器会保存相应 的会话状态,保证请求被正确处理,当服务器失效,相应的会话状态就会丢失,因 此引入了http session的失效转移。
1.2 http session的会话转移
当浏览器访问有状态的web应用程序,服务器会创建一个内存对象并将相应的会话状态存储在这 个内存对象中,同时生成一个会话id返回给客户端,客户端将这个id存放在cookie中,当浏览器再次访问这个web应用程序时,就会携带相应的会话id,这样服务器就能根据这个id找到对应的会话状态了。为了避免服务器失效时,会话状态丢失,服务器会在某个时刻将这些会话状态保存在其他的服务器上,这就是http session 会话失效的由来,具体示意图如下:
httpSession的会话会话转移带来如下几个问题:
全局的会话id(保证转移时不会出现id冲突)
如何备份?
a、将会话状态序列化之后存放在数据库中
b、内存复制
多服务器复制,例如:Tomcat
对等服务器复制,例如:Jboss
备份的频率和粒度