关于session共享的解决方法
当网站业务规模和访问量的逐步增大,原本由单台服务器、单个域名组成的网站架构可能已经无法满足发展需要 此时会购买更多的服务器,并且以频道化的方式启用多个二级子域名,然后根据业务功能将网站分别部署在独立的服务器上,或者通过负载均衡技术让多个频道共享一组服务器 如果我们把网站程序分别部署到多台服务器上,而且独立为几个二级域名,由于Session存在实现原理上的局限性(例如PHP中Session默认以文件的形式保存在本地服务器的硬盘上),这使得网站用户不得不经常在几个频道间来回输入用户名和密码登录,另外,原本程序可以直接从用户Session变量中读取的资料(如昵称、积分、登录时间等),因为无法跨服务器同步更新Session变量,迫使开发人员必须实时读写数据库,从而增加了数据库的负担 解决网站跨服务器的Session共享问题的需求变得迫切起来,下面列举四种较为流行的方案: (1)基于Cookie的Session共享 其原理是将全站用户的Session信息加密、序列化后以Cookie的方式统一种植在根域名下(如.host.com)。当浏览器访问该根域名下的所有二级域名站点时,将与域名相对应的所有Cookie内容的特性传递给它,从而实现用户的Cookie化Session在多服务间的共享访问 这个方案的优点是无需额外的服务器资源;缺点是由于受HTTP协议头信息长度的限制,仅能够存储小部分的用户信息,同时Cookie化的Session内容需要进行安全加解密(如采用DES、RSA等进行明文加解密,再由MD5、SHA-1等算法进行防伪认证),另外它也会占用一定的带宽资源,因为浏览器会在请求当前域名下的任何资源时将本地Cookie附加在http头中传递到服务器上 (2)基于数据库的Session共享 把session信息存储在数据库中,通常使用内存表,以提高Session操作的读写效率 这个方案的实用性比较强,应用较为普遍。缺点在于Session的并发读写能力取决于MySQL数据库的性能,同时需要我们自己来实现Session淘汰逻辑,以便定时从数据表中更新、删除Session记录,当并发过高时容易出现表锁,对数据库造成较大压力 (3)基于Memcache的Session共享 Memcache是一款基于Libevent的多路异步I/O技术的内存共享系统,简单的Key+Value数据存储模式使其代码逻辑小巧高效,因此在并发处理能力上占据了绝对优势 Memcache的内存Hash表所特有的Expires数据过期淘汰机制,正好和Session的过期机制不谋而合,这就降低了删除过期Session数据的代码复杂度
(4)基于NFS的Session共享
NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。
这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的本地session目录即可,缺点是NFS依托 于复 杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。
关于session共享的解决方法的更多相关文章
- iis7中session丢失的解决方法小结
这篇文章主要介绍了在windows server 2008系统中,session丢失的解决方法,供大家学习参考 问题描述: Windows Server 2008 +IIS +ASP.net +SQL ...
- 网站启动SSL, http变为https后,session验证码错误解决方法
网站启动SSL, http变为https后,session验证码错误解决方法 最近公司需要后台启动安全证书,证书安装完毕后,后台老提示 验证码错误,经过几天的研究,此问题已经得到有效解决,现把方法 ...
- Win8无法访问xp共享的解决方法——win8网上邻居访问别的xp电脑要用户名和密码取消方法
新装win8,原来的win7正常连接xp下载机的共享,但在win8下进网上邻居却无法访问xp的共享,显示”用户名或密码不正确”,而密码明明是对的如图所示: 解决方法: 按Win+R启动运行,输secp ...
- asp.net 负载均衡下session存储的解决方法
转自:http://www.cnblogs.com/david100zhang/archive/2011/12/28/2304917.html 在WEB场中,动态网页往往会因为几台主机做了负载而产生S ...
- nginx导致的session丢失的解决方法
nginx把同一用户的请求分发到了不同的服务器,如果不做处理,就会导致session丢失. 1.粘性IP: 在nginx配置文件中,增加配置, 对IP进行HASH后,散列到服务器. 这个实现最简单.但 ...
- 空间session失效的解决方法
今天访问自己的网站的时候(by thinkphp),突然发现身份验证失效了,Session无法跨页,而且登陆的时候总是提示验证码错误(验证码也是通过Session传递的),才意识到可能是Session ...
- asp.net session丢失的解决方法小结
现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionSt ...
- 同一台服务器部署多个WEB应用,SESSION冲突的解决方法
由于一台服务器上使用Tomcat部署多个WEB项目,而项目因为用到框架都是一样的,导致同时运行,session相互冲突,这个登录后,那个就得重新登录,造成了使用不方便,解决办法如下: 在server. ...
- Win10局域网内无法共享的解决方法分享(开启Server和ComputerBrowser服务,其它文章也不错)
局域网共享是办公环境下经常使用的,而有些用户反应在升级到win10系统后,网络总是无法共享,给用户带来了很大的困扰,如果你也遇上这样的情况,并通过一些方法无较后,不妨尝试下小编提供的方法. 如果在Wi ...
随机推荐
- Spring第五篇【cglib、手动实现AOP编程】
前言 到目前为止,已经简单学习了Spring的Core模块.也会怎么与Struts2框架进行整合了-.于是我们就开启了Spring的AOP模块了-在讲解AOP模块之前,首先我们来讲解一下cglib代理 ...
- Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】
回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...
- 利用ASCII码生成指定规则的字符串
/** * 上送终端编号的后两位生成规则 总共可以生成 (36*36-1)1295个编号 * 01...09 0A...0Z * 10...19 1A...1Z * ............... * ...
- Spring MVC知识点整理
网上Spring MVC相关知识点的介绍已经有很多了,但是大部分文章都是介绍其中的一部分知识点. 本文希望能够向读者做一个基本整体的介绍,首先我们先来了解下Spring MVC的基础接口和组件. ...
- Mybatis(1)
properties 标签的作用引入外部properties 文件的内容typeAliases 的作用可以用package这个标签批量给这个包下的所有类起一个别名 name属性写包的名字. 默认别名为 ...
- 【个人笔记】《知了堂》MySQL中的数据类型
MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) ...
- 动易CMS - 设为首页代码和加入收藏代码(兼容各种浏览器)
注意: 这里虽然说是兼容,但是有些浏览器的设置就是不支持用js来把页面设为首页,加入收藏夹,只能让用户手动去在浏览器或者按键去设置这些功能,这里说的兼容是指当浏览器有这个设置的时候js会有提示. ...
- swift 开发学习问题
1 UITableViewController 问题: [UITableView dequeueReusableCellWithIdentifier:forIndexPath:], unable to ...
- TTabControl
1.TTabControl 组件的典型用法TTabControl 组件使用起来,根本不会使程序简单化,所以不提倡使用此组件,可以用TPageControl组件代替.与多页组件不同的是,虽然Tab 组件 ...
- 【重点突破】——Cookie的使用
cookie:小甜饼 cookie:保存客户端浏览器中一个纯文本文件 版本高的浏览器可查看 F12->Resource 左下方cookie 查看 cookie作用: 保存:[安全性要 ...