官方网站:http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
当用户数量和集群数量达到一定规模后,Session 复制就可能成为性能瓶颈。于是人们提出了 从第三方缓存恢复失效节点数据的方案,开源产品 Memcached-Session-Manager(下面简称MSM)就是基于这个思想。
MSM是一个高可用的Tomcat session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用memcached存取Session,以实现高可用。
对于非黏性Session,memcached直接存储session。
除memcached外,还可以其他缓存组件如memcachedb, membase等。
一、特性
支持Tomcat6、Tomcat7
支持黏性、非黏性Session
无单一故障点
可处理tomcat故障转移
可处理memcached故障转移
插件式session序列化
允许异步保存session,以提升响应速度
只有当session有修改时,才会将session写回memcached
JMX管理&监控
二、MSM解决的问题
假设你有一个Tomcat集群,使用黏性session,如何应对单点故障问题?为了应对更多的并发量和可用性,你可以不断的增加Tomcat节点,但是单点故障仍旧会是个问题:如果使用黏性Session,一个Tomcat故障时,其他Tomcat并不能接管故障Tomcat节点的Session。
解决此问题的思路就是将黏性Session同时保存在Memcached中,如果单个Tomcat发生故障,集群中的其他Tomcat可以从Memcached中得到Session信息。
【注】对于非黏性Session,MSM V1.4.0及以后版本已经支持。
三、Sticky Session 模式下的工作原理
Tomcat 的本地 session 为主 session,Memcached 中的 session 为备 session。
第一步,所有 Tomcat 节点都需要安装 MSM;每一个 Tomcat 会有自己的本地 session。
第二步,当一个请求执行完毕之后,如果对应的 session 在本地不存在(即这是某一个用户的第一次请求),则将该 session 复制一份至 Memcached。
第三步,当该 session 的下一个请求到达时,会使用 Tomcat 的本地 session。请求处理结束之后,session 的变化会同步更新到 Memcached,保证数据一致。
第四步,如果当前 Tomcat 节点失效,下一个请求会被路由给其他 Tomcat。这个 Tomcat 发现请求所对应的 session 并不存在,于是它将查询 Memcached,如果查询到了,则恢复将其保存到本地session。此次请求结束,如果session被修改,送回Memcached备份。
这样就完成了容错处理。
四、Non-sticky Session 模式下的工作原理
Tomcat 的本地session为中转session,memcache1 为主 session,memcache2为备 session。
第一步,收到请求,加载备 session 到本地容器;
备 session 加载失败,则从主 session 加载;
第二步,请求处理结束之后,session 的变化会同步更新到 memcache1和 memcache2,并清除Tomcat 的本地 session 。
session data 要想存入 memcache,必须能序列化和反序列化。
上边介绍的是处理Tomcat故障转移,MSM又是如何处理Memcached故障转移呢?
如果一个Memcached故障,当前Memcached中的Session会转移到其他Memcached节点,同时,JSESSIONID被修改并送回浏览器。
如果使用黏性Session,应确保loadbalancer中配置生成的JSESSIONID无任何后缀。
SESSIONID的格式
MSM知道Memcached节点列表,这些节点标识会存储在SESSIONID中,SESSIONID值类似:602F7397FBE4D9932E59A9D0E52FE178-n1 【其中n1为Memcached节点标识】
相关推荐
memcached-1.9.6,libevent-2.1.12-stable.tar memcached-session-manager-1.9.6,msm-kryo-serializer-1.9.6.jar,tomcat8.5,实现会话共享
自测适用于tomcat7,其他tomcat没有测试 asm kryo kryo-serializer kryo-serializers memcached-session-manager memcached-session-manager-tc7 minlog objenesis reflectasm spymemcached
Memcached-session-manager使用说明及相关jar包(tomcat7版) 依照文档部署即可实现多服务器多tomcat session共享,jar包中是tomcat7集成所需要的jar包,序列化工具用的是java默认的序列化工具,若要使用其他版本的...
memcached-session-manager-1.6.5.jar
本lib包包含:javolution-5.5.1.jar、kryo-1.03.jar、kryo-serializers-0.10.jar、memcached-2.5.jar、memcached-session-manager-1.5.1.jar、memcached-session-manager-tc7-1.5.1.jar、minlog-1.2.jar、msm-...
memcached-session-manager-tc6-1.6.3.jar
memcached-session-manager-1.8.1.jar
memcached-session-manager-1.6.5.jar
memcached-session-manager-tc7
完全可以根据github的要求来配置,我只是没分了~ 官网地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#add-memcached-session-manager-jars-to-tomcat
适应MSM的整合包,有 flexjson-3.3 msm-flexjson-serializer-1.9.6 msm-spymemcached-2.11.3 memcached-session-manager-1.9.6 memcached-session-manager-tc8-1.9.6
tomcat-7.0.54配合使用的memcached-session-manager-1.6.1的整套jar包
memcached-session-manager
memcached-session-manager-tc7-1.6.5.jar
网上下载过N种jar版本,启动tomcat报各种错误;浪费了很多时间;本资源经tomcat7、tomcat8测试,均正常实现负载均衡,session共享功能。
memcached-session-manager_4_tomcat8 用在centos7 下的tomcat 8.0.33 java 1.8 测试成功