一、为什么会出现session不一致问题?
当用户发请求时,有多台服务器(tomcat)进行处理时,如果两次请求的服务器不同,会造成session未找到的问题。
二、如何解决这个问题
1.使用nginx的ip_hash负载策略
优点:
本质上是会话粘滞(同一个客户端ip只能被路由到同一个服务ip)。
- 直接在nginx上配置即可,无需写多余代码。
缺点:
- 如果某台服务器挂了,会影响整个服务。hash值改变
- 重启session丢失。
- 存在单点负载高的风险。(某台服务器一直被请求)
2.session复制
优点:
- 不⼊侵应⽤
- 便于服务器⽔平扩展
- 能适应各种负载均衡策略
- 服务器重启或者宕机不会造成Session丢失
缺点:
- 性能低
- 内存消耗
- 不能存储太多数据,否则数据越多越影响性能
- 延迟性
3.Session共享,Session集中存储(推荐)
优点:
- 能适应各种负载均衡策略
- 服务器重启或者宕机不会造成Session丢失
- 扩展能⼒强
- 适合⼤集群数量使⽤
缺点:
对应⽤有⼊侵,引⼊了和Redis的交互代码