当前位置 主页 > 服务器问题 > win服务器问题汇总 >

Session的一致性问题解决办法

栏目:win服务器问题汇总 时间:2018-08-27 17:11

  一、什么是Session?
 
 1、What:Session在网络应用上表示“会话控制”,用于存储特定用户会话所需的属性及配置信息;Session又表示一个特定的时间间隔,指从登录进入系统到注销退出系统之间所经过的时间。
 
 2、Why:http是无状态的协议,在动态web应用中,往往需要知道前面的操作和后面的操作是不是一个用户。也就是业务是需要有关联性的。
 
 3、How:结合Session和浏览器Cookie,将服务器端Session保存到浏览器cookie中来保持http会话状态。
 
  二、什么是Session一致性问题
 
 1、当一个带有会话标识的HTTP请求到了Web服务器后,需要在HTTP请求的处理过程中找到对应的会话数据(Session),而问题在于,会话数据是需要保存在单机上的。如上图,当我第一次访问服务器的时候,请求落在左边的服务器上,那么就会在左边的服务器上创建Session,如果不做处理,那么我们,每次访问服务器就不能保证每次请求都落在左边的服务上,这就是Session问题。
 
  三、如何解决Session问题:
 
 1、第一种方案:基于nginx的ip_hash策略来做负载均衡
 
 a、原理:根据ip做hash计算,同一个ip的请求始终定位到同一台tomcat上。
 
 b、如在nginx.conf配置如下:
 
  upstreamsessionTest{
 
  ip_hash;
 
  server192.168.11.1308080;
 
  server192.168.11.1308081;
 
  }
 
 c、此种方案的好处:配置简单,没有侵入性;
 
 d、坏处:单点故障,服务器挂了,导致Session丢失。
 
 2、第二种方案:服务器Session的复制
 
 a、原理:Tomcat服务器创建Session后,会通过组播方式把Session发送到组播地址中的其他服务器上。
 
 b、这种方案一般的容器都支持,但是这种方案本身有一些问题,在一定场合下问题很严重。
 
 c、同步Session数据会造成网络带宽的开销,只要Session数据有变化,就需要将数据同步到其他机器上,机器越多,同步带来的网络带宽开销就越大;每台机器都保存所有机器的Session,会占用内存。所以这个方案不适合集群的场景下,如果只有几台机器,用这个方案是可以的。
 
 3、第三种方案:Session的集中管理
 
 a、原理:Session不由Tomcat管理,而是统一放到一个地方管理,读取和写入Session都依赖第三方软件,如redis,mysql,mongodb等。
 
 b、一般redis使用的比较多,将Session保存到redis中,每次需要Session的时候就可以到redis缓存中取Session数据。
 
 c、这种方案可以说是终极解决方案,一般分布式的环境下用的比较多。不过也有缺点,对代码有侵入性,需要改配置,维护第三方库。
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全