分布式Session共享(二):tomcat+memcached實現session共享


一、前言

本文主要測試memcached實現session共享的實現方式,不討論如何讓nginx參與實現負載均衡等。

二、環境配置

本測試在Window下進行

name version port
Tomcat1 7.0.61 127.0.0.1:8083
Tomcat2 7.0.61 127.0.0.1:8084
Memcached 1.4.2 127.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共享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM