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。

最新文章

  1. iOS HTTP访问网络受限
  2. 通过js调用android原生方法
  3. Python 小爬虫流程总结
  4. MongoDB-C#驱动基本操作
  5. 搭建java开发环境、使用eclipse编写第一个java程序
  6. 【转】Struts2中json插件的使用
  7. u-boot向linux内核传递启动参数(详细)
  8. 使用SQL Server 2014内存数据库时需要注意的地方
  9. jetty之嵌入式运行jetty
  10. 匿名方法和Lambda表达式
  11. jQuery基础教程第四版练习答案
  12. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析
  13. 6.前端基于react,后端基于.net core2.0的开发之路(6) 服务端渲染(SSR)
  14. mkdir(): Permission denied
  15. VMware 安装Linux系统 CentOS
  16. Java常见的10个异常
  17. 《R语言入门与实践》第五章:对象改值
  18. spring4笔记----PropertyPlaceholderConfigurer 属性占位符配置器
  19. Visual Studio 2015编译wxWidgets
  20. dos2unix详解

热门文章

  1. ctf平台
  2. 用Stegsolve工具解图片隐写的问题
  3. Python变量与常见数据类型
  4. 该懂的知识-CPU
  5. 商城秒杀系统总结(Java)
  6. Java课程设计---新建项目及导入如何jar包
  7. video视频控件
  8. C#控制打印机打印
  9. BBS项目分布搭建二(个人站点相关)
  10. 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件