分布式Session共享(二):tomcat+memcached实现session共享

一、前言

本文主要测试memcached实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等。

二、环境配置

本测试在Window下进行

nameversionport
Tomcat17.0.61127.0.0.1:8083
Tomcat27.0.61127.0.0.1:8084
Memcached1.4.2127.0.0.1:11211

 

 

 

 -

三、配置memcached-session-manager

3.1 获取jar包

首先需要Session管理相关的包

  memcached-session-manager-1.9.2.jar

  memcached-session-manager-tc7-1.9.2.jar

因为用到memcached,所以还需要

  spymemcached-2.10.3.jar

序列化(只测试了两种方式,二选一即可)

kryo序列化方案(都说kryo序列化效率高)

  asm-5.0.4.jar

  kryo-3.0.3.jar

  kryo-serializers-0.34.jar

  minlog-1.3.0.jar

  msm-kryo-serializer-1.9.2.jar

  objenesis-1.2.jar

  reflectasm-1.11.1.jar

javolution序列化方案

  javolution-5.4.3.1.jar

  msm-javolution-serializer-1.9.2.jar

  msm-javolution-serializer-cglib-1.3.0.jar

  msm-javolution-serializer-jodatime-1.3.0.jar

打包下载:

memcached-session-manager-1.9.2_By_kryo-serializer.rar

memcached-session-manager-1.9.2_By_javolution-serializer.rar

3.2 导入Jar包

把以上生成的jar放入tomcat的lib目录下,打开Context.xml,

如果采用javolution序列化方式,添加如下代码:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
           memcachedNodes="n1:localhost:11211"   
            lockingMode="auto"
            sticky="false" 
            requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
            sessionBackupAsync= "false"   
            sessionBackupTimeout= "100"    
            copyCollectionsForSerialization="true"   
            transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"    
                />

 如果采用的是kryo序列化方式,添加如下代码:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
           memcachedNodes="n1:localhost:11211"   
            lockingMode="auto"
            sticky="false" 
            requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
            sessionBackupAsync= "false"   
            sessionBackupTimeout= "100"    
            copyCollectionsForSerialization="true"   
            transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    
                />

3.3 测试结果

依次启动memcached,tomcat1,tomcat2

在浏览器中分别打开:

  http://localhost:8083/examples/servlets/servlet/SessionExample

Session ID: 8BB1C837F4423CE4C4F1393D14C110C5-n1 

  http://localhost:8084/examples/servlets/servlet/SessionExample

Session ID: 8BB1C837F4423CE4C4F1393D14C110C5-n1 

cmd进入命令提示符,输入

  telnet 127.0.0.1 11211

连接memcached主机,输入

  stats items 

列出存入的数据列表

输入 state cachedump 5 0 查看key值

发现,三处SessionID是一致的。

 

参考:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration


 

相关系列:

分布式Session共享(一):tomcat+redis实现session共享

转载于:https://www.cnblogs.com/notDog/p/5341219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值