1.iphash。 根据ip固定分配到某个tomcat。事实证实基本不能用。手机上网ip频繁变化,nginx必须做为最前端服务器,面临关闭tomcat用户session失效问题。前端
2,安装nginx_upstream_jvm_route粘性模块。 根据JSESSIONID把用户分配到固定tomcat为第一种方案的改进版。解决ip变化和nginx做为非最前端服务器问题。缺点,须要编译安装nginx,且对版本有要求。一样没法解决tomcat关闭session失效问题。 点击查看 nginx
3,使用tomcat自身的session集群复制。 没实践过,据说此方案只在2到3个tomcat的时候好用,多tomcat的话因为须要每一个tomcat都复制其余全部tomcat的session会形成性能的严重降低。至于实际是否是这样,在新版本的tomcat有没有解决这个问题就不得而知了。redis
4,session memched mannerge把tomcat的session集中保存到memche缓存中。 此方案比较好,缺点是手动配置比较麻烦,由于使用到的jar包比较多,在配置过程发生比较多的版本冲突等问题。联系使用此办法的时候使用maven下载依赖包再把所有依赖包拉到tomcat的lib下。spring
5,spring session 伟大的spring实现的解决方案,原理和上面同样把session统一集中管理。可是他是在代码里面实现不依赖于tomcat容器。经过拦截器自定义了session的管理。尝试过spring session redis只须要加入少许的jar包以及简单的配置。固然前提是你的系统中已经使用了redis和spring一样会有版本冲突问题,可是幸亏这些问题都是在本地开发阶段就已经发现和解决。在新搭的系统框架建议使用此方案。毕竟如今redis已经成为装逼必须品了。什么你的系统没用spring?缓存
6,不使用session。 例如使用cookie代替session。但这个须要在项目开发阶段就采用此方案,并且我以为使用cookie代替session并非那么的稳当。tomcat