tomcat redis session共享 超时时间怎么控制

 我来答
若以下回答无法解决问题,邀请你更新回答
佳雅得0f
2016-07-19 · TA获得超过134个赞
知道答主
回答量:62
采纳率:0%
帮助的人:20.8万
展开全部
目前,为了使web能适应大规模的访问,需要实现应用的集群部署。集群最有效的方案就是负载均衡,而实现负载均衡用户没一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无论用户的请求被转发到哪个服务器上都能保证用户的正常使用,即需要实现session的共享机制。
在集群系统下实现session统一的有如下几种方案:
(1) 应用服务器间的session复制共享(如tomcat自带session共享)
(2) 基于cache DB缓存的session共享

应用服务器间的session复制共享(Tomcat自带的功能)

session复制共享,主要是指集群环境下,多台应用服务器之间同步session,使session保持一致,对外透明。 如果其中一台服务器发生故障,根据负载均衡的原理,web服务器(apache/nginx)会遍历寻找可用节点,分发请求,由于session已同步,故能保证用户的session信息不会丢失。

此方案的不足之处:
技术复杂,必须在同一种中间件之间完成(如:tomcat-tomcat之间).
session复制带来的性能损失会快速增加.特别是当session中保存了较大的对象,而且对象变化较快时, 性能下降更加显著. 这种特性使得web应用的水平扩展受到了限制。
Session内容序列化(serialize),会消耗系统性能。
Session内容通过广播同步给成员,会造成网络流量瓶颈,即便是内网瓶颈。
基于 Memcached 缓存的 session 共享

即使用cacheDB存取session信息,应用服务器接受新请求将session信息保存在cache DB中,当应用服务器发生故障时,web服务器(apache/nginx)会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去cache DB中查找,如果找到则复制到本机,这样实现session共享和高可用。
目前有开源的msm用于解决tomcat之间的session共享:Memcached_Session_Manager(MSM)
http://code.google.com/p/memcached-session-manager/
一个高可用的Tomcat session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用memcached存取Session,以实现高可用。
特性
支持Tomcat6、Tomcat7支持黏性、非黏性Session
无单一故障点
可处理tomcat故障转移
可处理memcached故障转移
插件式session序列化
允许异步保存session,以提升响应速度
只有当session有修改时,才会将session写回memcached
JMX管理&监控
该方案的不足之处:
memcache支持的数据结构比较单一
memcache的内存必须足够大,否则会出现用户session从Cache中被清除
需要定期的刷新缓存
服务器故障时,存在于内存的memcache数据将会丢失
为了解决基于memcache中存在的不足,故提出了下面的一种解决方案:

基于redis缓存的session共享

结合上面的分析后,由 redis 负责 session 数据的存储,而我们自己实现的 session manager 将负责 session 生命周期的管理。利用 redis 自身的key过期时间机智,我们不再需要定期刷新和做其他额外的处理。
截止到2015-09-20 前是不支持Tomcat8的,开源git 地址:https://github.com/jcoleman/tomcat-redis-session-manager

因为我们使用redis 来存储Session,所以前提是redis已经安装和配置完成。(本文不进行redis 的安装配置说明)
使用步骤:
1、将 tomcat-redis-session-manager-1.2.jar 、jedis-2.6.1.jar、commons-pool2-2.2.jar 三个jar包拷贝到tomcat7/lib中。
2、在Tomcat 的conf/context.xml 文件里增加如下内容(或者在server.xml的context块中添加):
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式