如何实现集群中的session共享存储?

Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这
样我们可以根据客户端传来的sessionID,来获取session,或在对应Session 不
存在的情况下(session 生命周期到了/用户第一次登录),创建一个新的Session;
但是,如果我们在集群环境下,假设我们有两台服务器A,B,用户的请求会由
Nginx 服务器进行转发(别的方案也是同理), 用户登录时, Nginx 将请求转发
至服务器A 上,A 创建了新的session,并将SessionID 返回给客户端,用户在浏
览其他页面时,客户端验证登录状态,Nginx 将请求转发至服务器B,由于B 上
并没有对应客户端发来sessionId 的session,所以会重新创建一个新的session,
并且再将这个新的sessionID 返回给客户端,这样, 我们可以想象一下,用户每
一次操作都有1/2 的概率进行再次的登录,这样不仅对用户体验特别差, 还会让
服务器上的session 激增,加大服务器的运行压力。

为了解决集群环境下的seesion 共享问题,共有4 种解决方案:

1.粘性session

粘性session 是指Ngnix 每次都将同一用户的所有请求转发至同一台服务器上,即将用户与服务器绑定。

2.服务器session 复制

即每次session 发生变化时,创建或者修改,就广播给所有集群中的服务器,使所有的服务器上的session 相同。

3.session 共享

缓存session,使用redis, memcached。

4.session 持久化

将session 存储至数据库中,像操作数据一样才做session。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值