分布式Session

今天我们来讲解一下分布式Session的几种实现方法

为什么要使用分布式Session

在分布式场景下,负载均衡会将用户请求随机分发,如果单机存储Session,会造成用户需要频繁登陆。

分布式Session的实现方式

  • 粘性Session(将用户请求固定在一台服务器)
  • 服务器Session复制(广播实现Session同步)
  • 缓存存储(Sticky模式和Non-Sticky模式)
  • 持久化存储(将Session存储到数据库)

粘性Session

  • 原理:将用户锁定到某一台服务器上,用户的每次请求都会被发送到第一次请求的服务器上。
  • 优点:简单易用,无需操作Session,直接配置Nginx即可。
  • 缺点:缺乏容错性,如果当前访问的服务器发生宕机,请求被转发到其他服务器,用户需要重新登录。

服务器Session复制

  • 原理:任何一个节点的Session发生变化,都会广播给其他所有节点,以保证Session的同步。
  • 优点:容错性较强,Session可以实时响应。
  • 缺点:会影响到网络负荷,当并发量较大时,会降低服务器的性能。

缓存存储

  • 原理:
    • Sticky模式:请求处理完成后,将Session同步到缓存中,每次请求都会被映射到同一台服务器,直到服务器宕机,再去缓存中读取Session。
    • Non-Sticky模式:每次请求被映射到的随机一台服务器,请求到来时从缓存中加载Session,请求处理完成,再将Session回写到缓存中。
  • 优点:容错性较强,Session可以实时响应。
  • 缺点:一旦缓存重启,Session也会丢失(Redis默认保存快照,不会丢失),需要重新登录。
image.png

持久化存储

  • 原理:将Session存到数据库中,进行持久化。
  • 优点:服务器宕机,Session不会丢失。
  • 缺点:高并发时,对数据库造成很大的压力。

参考

我们今天所付出的一切,不过是为了能见到明天的太阳

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容