读书人

memcached-session-manager配备

发布时间: 2012-09-21 15:47:26 作者: rapoo

memcached-session-manager配置

声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-session-manager的介绍,具体参见官网:http://code.google.com/p/memcached-session-manager/,也可以参考:http://gong1208.iteye.com/blog/1596120

?

Introduction

如果为了简单使用,你只需要安装一个tomcat(6或者7)和memcached,在生产环境中可能会有多台tomcat服务器以及多台可用的memcached节点,并安装在不同的机器上,我们可以使用黏性session(sticky sessions)或者非黏性session(non-sticky sessions),memcached-session-manager (msm)?对这两种操作模式都支持。

下面给出一个黏性session模式的设置示例,此实例中安装了2个tomcat以及2个memcached。

Tomcat-1(t1)的首要选择是把session存储在memcached-2 (m2)上(m2是t1的一个普通节点),而m2是运行在另外的一台机器上。只有当m2不可用(宕机或无法访问)时,t1才会把session存储到memcached-1(m1,m1是t1的故障转移节点)上。使用这种配置,即使机器1宕机了session也不会丢失。具体如下图所示:

memcached-session-manager配备

我们如何设置才能实现呢?

?

Decide which serialization strategy to use

从1.1版开始,MSM就提供了多种可选的session序列化策略,默认的策略是使用java进行序列化,这种实现已经集成在memcached-session-manager.jar包中了,其它的策略则可以通过不同的jar包来提供实现。在下面的章节中,我们可以了解到每种策略所需要的jar包具体有哪些。

?

Configure tomcat

关于tomcat的配置主要包括两个方面,首先需要下载所需要的包,放到tomcat安装目录下的lib目录下(严格来说应该是$CATALINA_HOME/lib/)以及我们应用的WEB-INF/lib/?目录下,同时还需要修改$CATALINA_HOME/conf/context.xml文件,并在<Context>元素中添加memcached session管理的配置信息。

?

Add memcached-session-manager jars to tomcat

不管你选择哪种序列化策略,你都需要?memcached-session-manager-${version}.jar?,如果你使用的是tomcat6,则还需要下载?memcached-session-manager-tc6-${version}.jar?,如果使用的是tomcat7则下载?memcached-session-manager-tc7-${version}.jar?。同时还需要下载?spymemcached-2.7.3.jar.下载这完这些jar包后把jar包放到?$CATALINA_HOME/lib/目录

?

Add custom serializers to your webapp (optional)

如果只是使用java序列化的话,那么需要的jar包就是以上所列出的那些了,但是如果想使用自定义的序列化策略(通常性能会更佳),我们还需要下载相应的jar包并放到我们webapp下的WEB-INF/lib/目录中。

如果你的应用使用了maven来进行jar包管理,那么你只需要在pom.xml中加入相应的序列化策略依赖定义就可以了,具体的maven依赖定义如下(任选一种就oK了):

kryo-serializer:

<dependency>    <groupId>de.javakaffee.msm</groupId>    <artifactId>msm-kryo-serializer</artifactId>    <version>1.6.0</version>    <scope>runtime</scope></dependency>

javolution:

<dependency>    <groupId>de.javakaffee.msm</groupId>    <artifactId>msm-javolution-serializer</artifactId>    <version>1.6.0</version>    <scope>runtime</scope></dependency>

xstream:

<dependency>    <groupId>de.javakaffee.msm</groupId>    <artifactId>msm-xstream-serializer</artifactId>    <version>1.6.0</version>    <scope>runtime</scope></dependency>

flexjson:

<dependency>    <groupId>de.javakaffee.msm</groupId>    <artifactId>msm-flexjson-serializer</artifactId>    <version>1.6.0</version>    <scope>runtime</scope></dependency>

?

如果我们不是使用maven仓库来对依赖进行管理的话 ,我们需要针对每种策略下载单独需要的jar包,具体如下:

读书人网 >开源软件

热点推荐