https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
目录
- 1、Session复制
- 优点
- 缺点
- 2、客户端存储
- 优点
- 缺点
- 3、Hash一致性
- 优点
- 缺点
- 缺点解决办法
- 4、统一存储(Redis)
- 优点
- 不足
- 解决办法
1、Session复制
优点
Web-Server原生支持,只需要修改配置文件
缺点
- Session同步需要数据传输,占用大量网络带宽,降低了服务器群的业务处理能力
- 任意一台Web-Server保存的数据都是所有Web-Server的Session总和,受到内存限制无法扩展更多的Web-Server
- 大型分布式集群情况下,由于所有Web-Server都全量保存数据,所以此方案不可取
2、客户端存储
优点
服务器不需存储Session,用户保存自己的Session信息到Cookie中。节省服务端资源
缺点
都是缺点,这只是一种思路
具体如下:
- 每次http请求,携带用户在Cookie中的完整信息,浪费网络带宽
- Session数据放在Cookie中,Cookie有长度限制4K,不能保存大量信息
- Session数据放在Cookie中,存在泄露、篡改、窃取等安全隐患
这种方式不会使用
3、Hash一致性
优点
- 只需要改Nginx配置,不需要修改应用代码
- 负载均衡,只要hash属性的值分布是均匀的,多台Web-Server的负载是均衡的
- 可以支持Web-Server水平扩展(Session同步时不行的,受内存限制)
缺点
- Session还是存在Web-Server中的,所以Web-Server重启可能导致部分Session丢失,影响业务,如部分用户需要重新登录
- 如果Web-Server水平扩展,rehash后Session重新分布,也会有一部分用户路由不到正确的Session
缺点解决办法
因为Session本来都是有有效期的,所以这两种反向代理的方式可以使用。
4、统一存储(Redis)
优点
- 可以水平扩展,数据库/缓存水平切分即可
- Web-Server重启或者扩容都不会有Session丢失
不足
- 增加了一次网络调用,并且需要修改应用代码;如将所有的getSession方法替换为从Redis查数据的方式。Redis获取数据比内存慢很多
解决办法
用SpringSession完美解决
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)