Session 共享方案总结

Session sticky

对访问的ip进行hash。然后通过Nginx 跳转固定的web-server。这样保证了同一个用户访问的Server保持不变,session自然不会消失。

优点:

  • 只需要改nginx配置,不需要修改应用代码
  • 负载均衡,只要hash属性是均匀的,多台web-server的负载是均衡的
  • 可以支持web-server水平扩展(session同步法是不行的,受内存限制)

缺点

  • 单个Server宕机或重启之后,部分session会消失,该部分用户需要重新登录
    session本身就有有效期,即使部分用户需要重新登录,事实上也是可以接受的,所以缺点也没有那么明显

Session 复制

session在各web-server间复制,保证每一个web-server有全部的用户session

优点:

  • 实现方便,tomcat有集成插件。配置即可,建议访问量不大的小型系统使用

缺点:

  • 互相复制增加了网络内网的开销,每台web-server都存了全部session,数据冗余严重,内存占用大。

cookie中存储Session

Session加密后存储在cookie中,这样Session就存放在了客户端,服务端无状态化。

缺点:

  • 安全性差。用户数据容易泄露。只适合敏感度不高的系统

Session cache

将所有登录信息存在redis的集群中,每一次的用户请求都去redis cache 中获取用户登录状态。

优点:

  • 安全
  • 跟web-server无关,不管是宕机还是更新重启都不影响已登录用户
  • 方便水平扩展

缺点:

  • 增加运维成本
  • 增加了一次额外的后端调用
  • 需要增加相应的代码

你可能感兴趣的:(Session 共享方案总结)