分布式session

分布式session方案

1 客户端存储session

服务器不需存储session,用户保存自己的session信息到cookie中。节省服务端资源

缺点:

  • 每次http请求,携带用户在cookie中的完整信息,浪费网络带宽
  • session数据放在cookie中,cookie有长度限制4K,不能保存大量信息
  • session数据放在cookie中,存在泄漏、篡改、窃取等安全隐患,且随时可能会被清理或者有些用户会关闭cookie

2 Session通过Nginx后散列

基于nginx实现,做负载均衡的时候,根据ip做hash处理。比如IP尾号为1、3、5、7、9的请求到服务A上,IP尾号为2、4、6、8、0的请求到服务B上。就可以解决session问题,固定的ip会分配到固定服务器上。

缺点:

  • 存在单点故障问题,某个服务挂了,会造成分配到这个服务器上的客户全部异常,没有解决高可用性。某个ip段的客户数量就是很大,超过这个服务器承受范围了,也会引起服务器故障和客户的请求超时,甚至请求异常。

3 Session Relication(拷贝、复制)

Tomcat原生是支持,只需要修改配置文件

缺点:

  • 因为这样session同步是需要服务器之间数据传输,这样占用大量的网络带宽,同时也降低了集群所带来的业务处理能力的又是
  • 同步的时间也是一个问题,比如用户可能会在同步时间内刚好访问到正在同步的服务器,可能会拿不到数据,或者不一致,一样也是会出现数据不一致的问题
  • 集群的水平扩张收到限制,因为这样同步,任意一台web-server保存的数据都是所有web-server的session总和,受到内存限制无法水平扩展更多的web-server。
  • 这种方式并不适合大型的分布式;

4 Session Center

基于redis等第三方工具实现,不管请求到哪个服务器,都把session信息,保存在redis中。每个服务器,都从redis里获取用户信息。这种方案,是目前大家普遍在用的,但是它也需要对redis进行高可用性维护,增加了系统复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值