什么是Session共享 与 解决方法?
答:
传统项目(或者单体项目)中不需要实现Session共享.
在传统登录时,用户登录会将用户的登录信息存储在Session中,然后返回id 保存到客户端的Cookie中.
用户下次登录时,取出客户端的Cookie登录id,到服务器中去找到相应的Session对象,如果找到证明登录,反之就没有登录.
(这个只涉及到单服务器的登录)
如果是采用的SOA分布式服务架构,设计到各个服务之间要进行相互调用,这里每个服务器之间都有自己单独的Session
例如:用户访问服务器A,当他在服务器A登陆,创建Session对象,保存Session信息到服务器A中,
用户下一次访问由于负载均衡,把用户分配到一个服务器压力较小的服务器B中,我在用客户端的CookieId到服务器B中找相对应的Session对象,肯定是找不到的,这里就会认为用户还未登录,
服务与服务之间session不互通导致未登录,为了解决这个问题,我们要实现服务器与服务器之间的一次登录多服务可用, 这个就叫做session共享
解决方式一: Redis
使用Redis作为各个服务器之间的连接纽带,用来保存用户登录时的Session信息
用户登录时,获取用户的登录信息,将用户登录的Session信息存储到Redis的Value中,Key则保存的是用户的Cookieid
当用户再次登录时,取出用户CookieId到Redis数据库中进行比对, 找到就证明用户已经登录
分类:
[1]Java_面试题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)