今天,深层次和群里同窗讨论关于分布式系统问题前端
汇总以下:web
客户端cookies + 服务端 redis = 用户信息redis
单机应用中,HttpSession是经过Servlet容器建立和管理的,servlet容器一旦中止服务,那么session也随之消失;但若是session被保存到redis中,只要redis服务没停且session在有效期间内,那么servlet容器中止服务了,session仍是存在的,这有什么好处了,好处就是servlet容器出现闪停闪修复的状况,用户就不用从新登陆了。spring
使用redis存储用户会话信息,客户端web请求每次携带cookies,在拦截器中,获取经过cookies获取redis中用户信息跨域
集群部署时(3台服务器部署3个tomcat, 其中tomcat部署同一个项目) ,其session是没法共享的, 可使用spring-session 共享session;浏览器
sso登陆tomcat
分布式系统部署时, 多服务器, session是没法共享的,这是公认的, 同时顶级域名下, 不一样服务,前端请求是没法跨域获取cookie的,要想实现效果, 参考使用sso登陆 模式;服务器
逻辑: 抽离登陆业务逻辑为公共服务,统一验证是否登陆未登陆,反馈cookies等参数; cookie
单点登陆参考: https://yq.aliyun.com/articles/636281 session
A 访问
A 访问关联app2系统
分布式模式模块分层简略模型
写的问题, 请留言, 不慎感受;