怎么设计一个分布式session系统

本文探讨了在分布式环境中管理Session的几种策略,包括基于数据库、NFS、memcached和Redis的解决方案。重点介绍了使用Redis作为Session存储的高可用性和效率,以及结合cookie的双重保障。总结了Redis实现分布式session的基本原理,包括将session信息存储在cookie和Redis中,确保接口调用时的session持久性。
摘要由CSDN通过智能技术生成

what?这个怎么玩。以前没有遇到过这种问题啊,仔细想想好像之前系统登录的时候有用到过这个,但是

又没认真去看,基本都是封装好的登录代码,拿过来就用了!然后就简单说了下基于数据库做session的解决方法,将一台机器上的session广播复制到

其他机器,但是这样明细存在很大问题,实在想不出来了!

回去查了查发现了几种解决方案:

1.基于数据库的Session共享

2.基于NFS共享文件系统

3.基于memcached 的session,如何保证 memcached 本身的高可用性?

4. 基于Redis 的 session 共享

5. 基于cookie 进行session共享

第一种在面试时候说了一下大概的用法,

一、Session Replication 方式管理 (即session复制)

        简介:将一台机器上的Session数据广播复制到集群中其余机器上

 使用场景:机器较少,网络流量较小

 优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问

 缺点:广播式复制到其余机器有一定廷时,带来一定网络开销

二、Session Sticky 方式管理

        简介:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上

 使用场景:机器数适中、对稳定性要求不是非常苛刻

 优点:实现简单、配置方便、没有额外网络开销

 缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

三、缓存集中式管理

       简介:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息

 使用场景:集群中机器数多、网络环境复杂

 优点:可靠性好

 缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入

使用Redis实现分布式session

实现分布式session的方案非常多,选型时需要一种可靠、简单的实现方式,结合我们项目中的使用经验来看,使用基于Redis实现的分布式session方案还是比较靠谱的,同时,项目中还把session信息存储在cookie里面,多一层保障。

基本原理
使用Redis作为session存储容器,登录时将session信息存储至cookie客户端,同时服务端将session信息存至redis缓存,双重保障,接下来的接口调用直接可以获取到cookie中的token信息作为参数传递进来即可,如果发现token为空,则再从redis中获取,如果两者都为空,则说明session已过期。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值