应用服务器集群的session管理

集群环境下,session管理主要有以下几种手段:

1.session复制

  session复制是早起企业应用系统使用较多的一种服务器集群session管理机制。应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每一台服务器上都保存所有用户的session信息。

  缺点:当集群规模较大时,集群服务器间需要大量的通信进行session复制,占用服务器和网络大量资源,系统不堪负担。而且由于所有用户的session信息在每台服务器上有备份,在大量用户访问的情况下,甚至会出现服务器内存不够session使用的情况。大型网站的核心应用集群就是数千台服务器,同时在线用户可达千万,因此并不使用这种方案。

2.session绑定

  session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上,这样在整个会话期间,用户所有的请求都在同一台服务器上处理,即session绑定在某台特定的服务器上,保证session总能在这台服务器上获取,这种方法又被称作会话粘滞。
  但是session绑定的方案显然不符合我们对系统高可用性的需求,因为一旦某台服务器宕机,那么该服务器上的session也就不复存在了,用户请求切换到其他服务器后因为没有session而无法完成业务处理。

3.利用Cookie记录Session

  早期的企业应用系统C/S架构,一种管理session的方式是将session记录在客户端,每次请求服务器的时候,将session放在请求中发送给服务器,服务器处理完请求后再将修改过的session响应给客户端。

  网站没有客户端,但是可以利用浏览器支持的cookie记录session。

  利用cookie记录session也有一些缺点,比如受cookie大小限制,能记录的信息有限;每次请求响应都需要传输cookie,影响性能;如果用户关闭cookie,访问就会不正确。但由于cookie的简单易用,可用性高,支持应用服务器的线性伸缩,而大部分应用需要记录的session信息又比较小。因此事实上,许多网站都或多或少的使用cookie记录session。

4.session服务器

  利用独立部署的session服务器统一管理session,应用服务器每次读写session时,都访问session服务器。

 

posted @ 2016-10-31 18:02  刘尊礼  阅读(354)  评论(0)    收藏  举报