单点登录

最早时期,只有单台服务器运行时,用户访问Webserver使用的是http协议,因为http协议是无状态的,使用Session保存一些用户信息。

后来服务器越来越多,直接访问这种方式是行不通的,WebServer需要集群。

如果用户第一次访问了WebServer1,此时session信息就保存在WebServer1。

如果用户下一次访问了WebServer2,WebServer2并没有保存session,此时用户需要重新登录。

 

 

解决方案

way1:IPhash

如果用户先通过Nginx访问WebServer1, WebServer1中存在包含此用户信息的session。

用户下次到达Nginx时,Nginx会判断用户信息,确定此用户上次访问的是WebServer1,直接将请求发送到WebServer1.

只要第一次访问了WebServer1,以后都访问WebServer1。

 

缺点:

Nginx丧失了负载均衡的功能,还会导致一台服务器过载。如果此时WebServer1服务器坏了,所有的session全部失效。

 

Way2:Session共享

 

如果用户先通过Nginx访问WebServer1, WebServer1中存在包含此用户信息的session。此时WebServer1会将这个session发送到其他的WebServer,达到共享session的效果。

缺点:

如果有100台服务器,用户第一次访问WebServer1,此时开始执行session共享,当session刚共享到第50个WebServer时,用户此时去访问WebServer100,还需要重新登录。

不适合集群数量多的情况

Way3:

Redis

 

这种方式利用第三方存储,比如redis等。用户访问WebServer时,会生成一个token发送到第三方存储处,用户下次访问WebServer时,只需向第三方存储里面获取Token就好了。

 

缺点:

依赖第三方存储

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值