在分布式环境中如何解决session共享问题

转载自:https://blog.csdn.net/tanjie_123/article/details/53019752

一、什么是session

session在计算机中,尤其是在网络应用中,称为”会话控制“。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web页面之间跳转时,存储在session对象中的变量将不会丢失,而在整个用户会话中一直存在下去。

二、产生session不一致原因

单台tomcat没有任何问题,但现在是集群的tomcat因此就存在session不一致问题。如图


三、解决方案

(1)session复制

tomcat的session复制,可以实现session共享

优点:不需要额外开发,只需搭建tomcat集群即可

缺点:tomcat 是全局session复制,集群内每个tomcat的session完全同步(也就是任何时候都完全一样的) 在大规模应用的时候,用户过多,集群内tomcat数量过多,session的全局复制会导致集群性能下降, 因此,tomcat的数量不能太多,5个以下为好。

(2)session绑定

当用户A第一次访问系统时,tomcat1对其进行服务,那么,下次访问时仍然让tomcat1对其进行服务

(3)使用redis集中管理session

可以将用户的会话保存在redis中,每次从redis中查询用户信息,就可以很好的解决会话共享问题。如图:

四、实际应用

(1)用户登录问题

对于大型分布式系统,可以使用单点登录系统进行登录,其中用户的session保存在redis缓存系统中

(2)用户短信验证

当需要对用户短信进行校验前,调取第三方服务获取验证码,需要先将验证码保存在session中,然后与用户提交的验证码进行比对



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值