面试:你知道什么是分布式系统吗? 不能进行Redis分散锁定吗?
1. 单点是如何实现分布式系统共享用户信息在一个独立服务器上存储用户信息,所有分布式子系统都从独立服务器获取用户信息
2. CAS实现原理例:
cas服务地址: localhost:9100demo1地址: localhost:9002demo2地址: localhost:9003进程原理:
33558www.Sina.com/(1)访问demo 1:3358 localhost 33609002 (当前浏览器未登录) )。
)2)当前浏览器未登录,重定向至CAS,service参数[登录成功后重定向地址]
3358 localhost :9100/cas/log in? 服务=http://localhost :9002 /【get】
cas将跳转到登录页面
)3)在cas登录页面输入用户名和密码,点击登录后携带用户和密码发送
3358 localhost :9100/cas/log in? 服务=http://localhost :9002 /【post】
当cas验证用户名和密码时,它将重定向到service参数指示的地址demo1,并携带ticket
http://localhost :9002/ticket=ST-1-bazbfolpro2ocqgnbmyd-cas 01.example.org
)4)用demo1的2.1 登陆流程拦截,拦截后取出ticket后台到cas服务器进行检查(检查地址:9100/CAS )。
)5)如果ticket验证成功,cas可以返回用户信息,我们的子系统可以缓存用户信息
过滤器
如果cas登录成功,将返回非常重要的cookie:CASTGC
cast GC : value path :/cas--全局会话表示浏览器当前可能已登录
子系统成功验证tikect并响应浏览器后,当前子系统与浏览器之间的cas:用户信息存储在session也可以直接获得用户信息,局部会话。
3358www.Sina.com/(1)未访问demo 2:3358 localhost :9003并检查过ticket,但为只要浏览器和子系统之间的局部会话经过了ticket校验,就不会再重定向到cas服务器。
)2)重定向至CAS服务器,携带服务参数:
3358 localhost :9100/cas/log in? service=http://localhost :9003 /
由于已经存在全局会话,因此在2.2 认证流程上,CAS服务器通过名为CASTGC的cookie获取当前浏览器的登录状态,如果已经登录,则直接重定向到demo2,同时
http://localhost :9003/ticket=ST-2-d54 vwajldml 24 uepuazy-cas 01.example.org
)3)接下来子系统获取http://www.Sina.com/ticket去cas检查
)4)如果ticket验证成功,cas可以返回用户信息,我们的子系统可以缓存用户信息并与浏览器建立本地会话