多台服务器共享Session问题

 当使用多台服务器架设成集群之后,我们通过负载均衡的方式,同一个用户(或者ip)访问时被分配到不同的服务器上,假设在A服务器登录,如果在B服务器拿不到用户的登录信息session。这时访问到B服务器时就出现未登录情况。

    所以如何对于这种情况做到共享session至关重要。

1.通过Nginx负载均衡 ip_hash策略
    ip_hash通过用户的ip进行hash计算后,通过Nginx的算法分配到一台固定的服务器,这种方式让用户和一台服务器绑定;就没有session丢失的问题.

缺点:不安全.因为ip完全可以被仿造

改进:SSO单点登录,解决了用户登录验证的分布式问题,但是没有解决session共享问题

2.通过数据库mysql共享session
采用一台专门的mysql服务器来存储所有的session信息。缺点:mysql服务器无法工作,影响整个系统

3.通过cookie共享session
 把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。

   当访问服务器A时,登录成功之后将产生的session信息存放在cookie中;当访问请求分配到服务器B时,服务器B先判断服务器有没有这个session,如果没有,在去看看客户端的cookie里面有没有这个session,如果cookie里面有,就把cookie里面的sessoin同步到web服务器B,这样就可以实现session的同步了。 

   缺点:cookie的安全性不高,容易伪造、客户端禁止使用cookie等都可能造成无法共享session。

4.通过redis共享session
他可以把web服务器中的内存组合起来,成为一个"内存池"&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值