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无关,不管是宕机还是更新重启都不影响已登录用户
  • 方便水平扩展

缺点:

  • 增加运维成本
  • 增加了一次额外的后端调用
  • 需要增加相应的代码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session...
    dreamer_lk阅读 1,049评论 2 9
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • 一、 设计理念 1.空间换时间 1)多级缓存,静态化 客户端页面缓存(http header中包含Expires/...
    帅T阅读 3,625评论 1 15
  • 写书的警察 惩恶扬善是不息的创作动力 厚厚的案件卷宗是等身著作 证人证言嫌犯供述 你从乱麻中里抽出一根线索 被谎言...
    弦歌1991阅读 325评论 2 3