集群环境下如何管理Session
1.Session复制
应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之间同步Session对象,使得每台服务器上都保存所有用户的Session信息,这样任何一台机器宕机都不会导致Session数据的丢失,而服务器使用Session时,也只需要在本机获取即可
优点:
- 1.方案简单
- 2.获取Session速度块
缺点:
-
1.只能在集群规模较小的情况下使用
如果集群规模大,会导致大量复制Session,会占用网络和服务器大量资源;
并且如果出现大量用户同时访问服务的情况可能会出现内存不够用的问题
2.Session绑定
即Session绑定在某台特定服务器上,保证Session总能在这台服务器上获取。这种方法又被称作会话黏滞,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上(也可以根据Cookie信息将同一个用户的请求总是分发到同一台服务器上,当然这时负载均衡服务器必须工作在HTTP协议层上)
缺点:
-
不具备高可用的特性
如果绑定Session的服务器宕机了就会造成Session丢失
3.利用Cookie记录Session
将Session记录在Cookie中,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完请求后再将修改过的Session响应给客户端。
优点:
- 简单易用,可用性高,支持应用服务器的线性伸缩
缺点:
- 1.信息记录有限,因为Cookie有大小限制
- 2.影响性能,每次请求响应都需要传输Cookie
- 3.受用户行为影响,如果用户关闭Cookie,访问就会不正常
4.Session服务器
可用性高、伸缩性好、性能也不错,对信息大小又没有限制的服务器集群Session管理方案。
利用独立部署的Session服务器(集群)统一管理Session,应用服务器每次读写Session时,都访问Session服务器。
这种解决方案事实上是将应用服务器的状态分离。