-
背景
Tomcat集群,session 共享主要三种方法 (本文以tomcat7为例):
a)使用 filter 方法存储,memcached-session-manager(推荐使用此方法,不只局限于tomcat)。b)使用 tomcat session manager 方法存储(效率较低)。c)使用 terracotta 服务器共享(较复杂)。
推荐使用memcached-session-manager这个开源项目,http://code.google.com/p/memcached-session-manager/ ,下面简称MSM
- 原理
MSM(memcached-session-manager) 支持tomcat6 和tomcat7 ,利用 Value(Tomcat 阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的, 支持 sticky 和 non-sticky 模式。
Sticky 模式:tomcat session 为 主session, memcached 为备 session。Request请求到来时, 从memcached加载备 session到 tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。
Non-Sticky模式:tomcat session 为 中转session, memcached1 为主 session,memcached 2 为备session。Request请求到来时,从memcached 2加载备 session 到 tomcat,(当 容器 中还是没有session 则从memcached1加载主 session 到 tomcat, 这种情况是只有一个memcached节点,或者有memcached2 出错时),Request请求结束时,将tomcat session更新至主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的。
- 实现
couchbase-client-1.4.4.jar
Tomcat context.xml中Context节点增加:
Sticky 模式:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"/>
Non-Sticky模式:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
sticky="false"
requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"/>
Tomcat server.xml中修改:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7-1">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7-2">
- 测试
下载msm.war(源码是msm.zip),分别部署到已经下载的8081、8082端口号的tomcat下,
访问地址:http://localhost:8081/msm/add_session.jsp,session中添加userName信息:
session ID:7020AB049428A7BF3D4105CF373CC2B4-n1.tomcat7-1
session userName:7020AB049428A7BF3D4105CF373CC2B4-n1.tomcat7-1 HanMeimei
相关推荐
`memcached-session-manager`是Java的一个库,用于在基于Tomcat的Web应用中实现基于Memcached的session共享,这在分布式环境中尤为重要。 标题中的"session共享 memcached-session-manager 1.9.6 jar"指的正是这个...
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,实现会话共享
3. **Memcached-Session-Manager**:这是用于Tomcat的第三方模块,使得可以将用户的session数据存储在memcached服务器上,实现session的分布式管理,适合多服务器环境,提供高可用性和负载均衡。 4. **Java 1.8**:...
MSM--memcached session manager是一个高可用的Tomcat session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用memcached存取Session,以实现高可用。对于非黏性Session,...
完全可以根据github的要求来配置,我只是没分了~ 官网地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#add-memcached-session-manager-jars-to-tomcat
Memcached-session-manager使用说明及相关jar包(tomcat7版) 依照文档部署即可实现多服务器多tomcat session共享,jar包中是tomcat7集成所需要的jar包,序列化工具用的是java默认的序列化工具,若要使用其他版本的...
为了优化这个问题,我们可以使用`memcached-session-manager`,它是一个专门为Tomcat设计的插件,使得Tomcat能够将用户的session数据存储在Memcached服务器上,实现session的分布式管理。 本文将详细介绍如何在...
【描述】:“Memcached-session-manager所需的jar包-tomcat7-kryo序列”意味着为了实现Tomcat7服务器对用户会话的高效存储和管理,开发者选择了Memcached-session-manager这一中间件,并且采用了Kryo序列化技术。...
描述部分为空,但根据标题可以推测,该教程可能涵盖了如何配置和集成`memcached-session-manager`到Tomcat服务器,以及如何利用这个工具来有效地分发和备份session数据,防止单个服务器故障导致session丢失。...
memcached-session-manager-tc7.jar实现Tomcat+redis session共享, 解压该文件,将里面的jar包丢Tomcat7目录lib下进行相关配置即可(配置网上有),由官方git地址:...
自测适用于tomcat7,其他tomcat没有测试 asm kryo kryo-serializer kryo-serializers memcached-session-manager memcached-session-manager-tc7 minlog objenesis reflectasm spymemcached
Memcached-Session-Manager是解决这个问题的一个优秀解决方案,它允许我们将用户的Session数据存储在内存缓存系统——Memcached中,从而实现跨Tomcat实例的Session共享。下面将详细介绍Memcached-Session-Manager的...
适应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
tomcat8+memcached session共享所需的jar包, memcached-session-manager memcached-session-manager-tc8 msm-kryo-serializer spymemcached kryo-serializers所有jar包都有
memcached-session-manager(MSM) Tomcat集群session共享示例
Memcached-session-manager是Java应用程序,用于在Tomcat或其他基于Servlet的容器中管理会话,并将其存储在Memcached中,以实现会话的分布式和高可用性。 首先,我们需要理解会话管理在Web应用中的重要性。会话允许...
压缩包里是我自己下载源码测试打包的memcached-session-manager-1.9.3 for tomcat6相关jar文件,序列化采用的是kryo-serializer。我的运行环境是:JDK1.6+TOMCAT6.0.45,MSM加Tomcat有一个特别大的坑是如果Tomcat版本是...
`memcached-session-manager`通过将Tomcat的会话数据分布到多个Memcached节点,实现了会话复制和故障转移,从而提高了服务的可用性和响应速度。 **配置步骤** 1. **安装依赖**: 首先需要在项目中引入`memcached-...