nginx+tomcat集群session共享问题解决方案

本文探讨了多种Tomcat会话管理方案,包括IPHash、JVMRoute模块、Session集群复制、Memcached集中管理、Spring Session及无Session方式。每种方案均有优缺点,如Memcached管理Session虽优秀但仍需解决配置复杂的问题。

1.iphash。 根据ip固定分配到某个tomcat。事实证明基本不能用。手机上网ip频繁变化,nginx必须作为最前端服务器,面临关闭tomcat用户session失效问题。

2,安装nginx_upstream_jvm_route粘性模块。 根据JSESSIONID把用户分配到固定tomcat为第一种方案的改进版。解决ip变化和nginx作为非最前端服务器问题。缺点,需要编译安装nginx,且对版本有要求。同样无法解决tomcat关闭session失效问题。 点击查看

3,使用tomcat自身的session集群复制。 没实践过,听说此方案只在2到3个tomcat的时候好用,多tomcat的话由于需要每个tomcat都复制其他所有tomcat的session会造成性能的严重下降。至于实际是不是这样,在新版本的tomcat有没有解决这个问题就不得而知了。

4,session memched mannerge把tomcat的session集中保存到memche缓存中。 此方案比较好,缺点是手动配置比较麻烦,因为使用到的jar包比较多,在配置过程发生比较多的版本冲突等问题。联系使用此办法的时候使用maven下载依赖包再把全部依赖包拉到tomcat的lib下。

5,spring session 伟大的spring实现的解决方案,原理和上面一样把session统一集中管理。但是他是在代码里面实现不依赖于tomcat容器。通过拦截器自定义了session的管理。尝试过spring session redis只需要加入少量的jar包以及简单的配置。当然前提是你的系统中已经使用了redis和spring同样会有版本冲突问题,但是幸好这些问题都是在本地开发阶段就已经发现和解决。在新搭的系统框架建议使用此方案。毕竟现在redis已经成为装逼必须品了。什么你的系统没用spring?

6,不使用session。 例如使用cookie代替session。但这个需要在项目开发阶段就采用此方案,而且我觉得使用cookie代替session并不是那么的妥当。

转载于:https://my.oschina.net/u/566297/blog/874267

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值