一:什么是session共享
预备概念:
1、Request:即请求,指客户端向服务器发送的信息,通常是通信的发起方;
2、Response:即响应,指服务器对请求的应答,通常是通信的回复方;
3、Session:即会话,服务器可将请求、响应这一个完整的过程称为一次会话,并为这次会话生成一个唯一的标识符,即sessionId,用来表示这次会话,Session储存在服务器端;
4、Cookie:客户端保存在本地终端的数据,即Cookie储存在客户端。
session共享问题出现的原因
在集群的情况下,我们有多台应用服务器,当我们第一次访问网站的时候,负载均衡将本地的请求分配到Web服务器1,那么Session创建在Web服务器1,第二次访问的时候如果我们不做处理就不能保证还是会落到Web服务器1了。
二:解决方案
1、使用Nginx反向代理,即IP绑定,同一个ip只能在同一个机器上访问
2、使用数据库,但性能不高
3、tomcat内置了对session同步的支持,但可能会产生延迟
4、使用Spring-Session框架,相当于把session放到redis中
5、使用token令牌代替session