什么是分布式session
- 存在分布式session原因是我们的应用资源部署在多台服务器上,用户登录后,通过nginx访问不同服务器资源,就存在多次登录的问题。
- 用户访问服务器1时,登录验证身份成功后,保存访问服务器1的token1;但是服务器2,服务器3访问失败,因为在服务器2和服务器3还没进行验证用户身份,必须对服务器2,服务器3进行用户登录进行身份验证,这就是分布式session产生的原因。
解决方案
1.session复制
- 优点
无需修改代码,只需要修改Tomcat配置 - 缺点
Session同步传输占用内网带宽
多台Tomcat同步性能指数级下降
Session占用内存,无法有效水平扩展
2.前端存储
- 优点
不占用服务端内存 - 缺点
存在安全风险
数据大小受cookie限制
占用外网带宽
3.Session粘滞
- 优点
无需修改代码
服务端可以水平扩展 - 缺点
增加新机器,会重新Hash,导致重新登录
应用重启,需要重新登录
4.后端集中存储
- 优点
安全
容易水平扩展 - 缺点
增加复杂度
需要修改代码