转自 http://blog.csdn.net/sh185/article/details/8494886
目前大多数大型网站的服务器都采用了分布式的部署方式,但是session是在服务器端保存的,如果用户跳转到其他服务器的话,session就会丢失,于是就有了分布式系统的session共享问题。
session共享有很多解决方法,比较常用的如下:
一、以cookie加密的方式保存在客户端.优点是减轻服务器端的压力,缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另外这种方式在用户禁止使用cookie的情况下无效.
二、服务器间同步。定时同步各个服务器的session信息,此方法可能有一定延时,用户体验也不是很好。
三、以某种媒介共享session信息,比如memcached,NFS等
本文主要介绍通过memcached共享的方式.
以memcached共享的方式实现的目前比较流行的有两种,一种是修改servlet容器,修改容器代码中的session相关代码,使其连接memcached,在memcached中创建和更新session.目前实现的有tomcat的插件,详见:http://code.google.com/p/memcached-session-manager/,优点是你不用考虑session共享的问题了,可以专注于你的程序开发,向正常使用session那样使用就完事了,缺点是如果你想改变session策略的话,必须重新部署每个服务器的servlet容器.而且修改容器代码存在一定的稳定性风险.如果不小心改坏了,就不爽了,另外如果servlet容器升级,必须做相应修改,也比较麻烦.
另外一种是使用过滤器的方式,可参照网上例子:http://laoer.iteye.com/blog/82565 的例子,此方式使用过滤器的方式重新对httpRequest 对象进行了包装,并加入memcached客户端,此方式的优点是:使用简单,把过滤器配置进去即可,另外比较灵活,因为它是再客户端实现的,配置比较灵活,而且服务器无关,你可以在任何支持servlet的容器上部署。缺点:当然他的缺点也是第一种方式的缺点,受制于memcached,比如:如果出现内存紧张的情况,根据memcached的LRU算法,有可能将用户的一部分session覆盖,从而导致部分session丢失.
笔者根据http://laoer.iteye.com/blog/82565的代码,重新写了一个过滤器,并添加session过期的功能,目前已在struts2中成功应用.详见附件.
分享到:
相关推荐
在was集群中,通常需要设置session共享,按照文档步骤可以完成session共享设置,解决你应用中的问题
SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...
主要为大家详细介绍了Springboot实现多服务器session共享,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
所以系统一旦引入shiro后,采用传统的tomcat session共享机制是无效的,必须采用面向shiro 的session共享。 网上针对“shiro session共享”的文章比较多,但是大同小异,基本是基于redis实现的。但是该套实现,代码...
PHP实现多服务器session共享之memcache共享
nginx+tomcat8+memcached session共享所需jar包 直接放到tomcat/lib下即可
C#不同域名之间的Session共享,挺简单的,也挺有用
springboot +shiro+redis实现session共享(方案二)1
大量的并发访问或数据流量分担到多台节点设备上分别处理,减少...但是负载均衡有一个问题就是不同的服务器间进行session共享问题的处理;肯定不可能每分配到一个服务上让用户进行一次登录,这样的用户体验会是极差的;
自己做的一个nginx+tomcat+redis完成session共享小例子,包括所需jar,适合初学者,希望大家一起学习交流
集群session共享jar包之tomcat8。集群插件,redis方式实现session共享插件
Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo
适配与Tomcat7、8、9的redis session共享jar包
linux.tomcat-session共享.redis.安装包
weblogic session共享的sql语句_mysql 官方网站提供了DB2、oracle、sqlserver、 如果想要那些数据库,就去官网上看吧, 我这个是mysql的。 都别下错了!
完整tomcat8内含session共享包,亲自测试可以使用,有问题可以私聊。
ssm+redis+nginx实现session共享和负载均衡,大家一起来研究吧
SpringBoot+MyBatis+SpringSession+Redis实现session共享及单点登录开发实例
此压缩包为tomcat8利用redis实现session共享所需要的jar包,包含(commons-pool2-2.6.0.jar、jedis-2.9.0.jar、tomcat-redis-session-manager.jar)直接将三个jar包复制Tomcat目录lib下面,在修改conf下context.xml...
tomcat集群session共享