• 分布式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共享

  • 相关阅读:
    OAuth
    PHP获取客户端的真实IP
    负载均衡----实现配置篇(Nginx)
    在线时间戳转换
    使用curl进行模拟登录
    定时任务
    Matplotlib使用教程
    CentOS7.X安装PHP
    Python虚拟环境的搭建与使用
    CentOS7.X安装openssl
  • 原文地址:https://www.cnblogs.com/notDog/p/5341219.html
Copyright © 2020-2023  润新知