什么是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数据库中进行比对, 找到就证明用户已经登录

posted @ 2024-04-01 10:43  database-  阅读(9)  评论(0编辑  收藏  举报