• 基于Memcached的tomcat集群session共享所用的jar


    多个tomcat各种序列化策略配置如下:
    一、java默认序列化tomcat配置
    conf/context.xml添加
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"    
    lockingMode="auto"
    sticky="false"
    requestUriIgnorePattern= ".*.(png|gif|jpg|css|js)$"   
    sessionBackupAsync= "false"  
    sessionBackupTimeout= "100"     
    transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"   
        />
    lib增加jar包:
    spymemcached-2.10.3.jar
    memcached-session-manager-1.7.0.jar
    memcached-session-manager-tc7-1.7.0.jar


    二、javolution序列化tomcat配置
    conf/context.xml添加
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
    lockingMode="auto"
    sticky="false"
    requestUriIgnorePattern= ".*.(png|gif|jpg|css|js)$"   
    sessionBackupAsync= "false"  
    sessionBackupTimeout= "100" 
    copyCollectionsForSerialization="true"  
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
        />
    lib增加jar包
    msm-javolution-serializer-cglib-1.3.0.jar
    msm-javolution-serializer-jodatime-1.3.0.jar
    spymemcached-2.10.3.jar
    javolution-5.4.3.1.jar
    msm-javolution-serializer-1.7.0.jar
    memcached-session-manager-1.7.0.jar
    memcached-session-manager-tc7-1.7.0.jar

    三、xstream序列化tomcat配置
    conf/context.xml添加
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
    lockingMode="auto"
    sticky="false"
    requestUriIgnorePattern= ".*.(png|gif|jpg|css|js)$"   
    sessionBackupAsync= "false"  
    sessionBackupTimeout= "100"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory"   
        />
    lib增加jar包
    xmlpull-1.1.3.1.jar
    xpp3_min-1.1.4c.jar
    xstream-1.4.6.jar
    msm-xstream-serializer-1.7.0.jar
    spymemcached-2.10.3.jar
    memcached-session-manager-1.7.0.jar
    memcached-session-manager-tc7-1.7.0.jar

    四、flexjson序列化tomcat配置
    conf/context.xml添加
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"    
    lockingMode="auto"
    sticky="false"
    requestUriIgnorePattern= ".*.(png|gif|jpg|css|js)$"   
    sessionBackupAsync= "false"  
    sessionBackupTimeout= "100"     
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.json.JSONTranscoderFactory"   
        />
    lib增加jar包
    flexjson-3.1.jar
    msm-flexjson-serializer-1.7.0.jar
    spymemcached-2.10.3.jar
    memcached-session-manager-1.7.0.jar
    memcached-session-manager-tc7-1.7.0.jar

    五、kryo序列化tomcat配置
    conf/context.xml添加
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
    lockingMode="auto"
    sticky="false"
    requestUriIgnorePattern= ".*.(png|gif|jpg|css|js)$"   
    sessionBackupAsync= "false"  
    sessionBackupTimeout= "100"   
    copyCollectionsForSerialization="true"  
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"   
        />
    lib增加jar包
    kryo-1.04.jar
    minlog-1.2.jar
    asm-3.2.jar
    reflectasm-1.01.jar
    kryo-serializers-0.11.jar
    msm-kryo-serializer-1.7.0.jar
    spymemcached-2.10.3.jar
    memcached-session-manager-1.7.0.jar
    memcached-session-manager-tc7-1.7.0.jar

    各种情况配置如上,据说kryo序列化效率比较快,未做测试。
    选其一中方式,部署2个tomcat端口分别是8080和8181
    启动后,访问刷新SessionID是否一致。
    http://127.0.0.1:8080/t.jsp
    SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
    SessionIP:127.0.0.1
    SessionPort:8080 

    http://127.0.0.1:8181/t.jsp
    SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
    SessionIP:127.0.0.1
    SessionPort:8181 
    测试结果SessionID一致。

    配置实例请参考:http://download.csdn.net/detail/tianwei7518/6832985

    session存储到memchached实现方案时。他主要功能是修改tomcat的session存储机制,使之能够把session序列化存放到memcached中。
    Manager标签属性说明
    1.className  必须
    类名:de.javakaffee.web.msm.MemcachedBackupSessionManager

    2.memcachedNodes  必须
    memcached节点:此属性应该包含所有运行的 memcached节点或者membase bucket的uri地址,每一个memcached节点的属性定义格式为<id>:<host>:<port>, 多个节点定义直接使用空格或者逗号分隔,形如:memcachedNodes="n1:app01:11211,n2:app02:11211",如果只 有单个的memcached节点,则<id>是可选项,只需配置<host>:<port>即可,形 如:memcachedNodes="localhost:11211"。
    如果我们配置的是membase,那么从1.6.0版本开始,我们可以配置指定一个或者多个membase bucket uris,形如:http://host1:8091/pools,http://host2:8091/pools。Bucket 名称和密码通过属性username,password来定义。membase buckets连接需要遵循memcached协议,传输数据通过二进制流方式。

    3.failoverNodes 可选项
    故障转移节点:可选项,对非黏性session不可用,属性必须包含memcached节点集群的所有ids。节点id之间用空格或者逗号分隔。

    4.username 可选项
    从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证,密码可以为空。

    5.password 可选项
    从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证,密码可以为空。

    6.memcachedProtocol    可选项
    定义memcached协议,默认使用text文本,出属性指明memcached使用的存储协议。只支持text或者binary。

    7.sticky    可选项
    定义session方式为黏性或非黏性,默认为true,多个tomcat时需使用非黏性

    8.lockingMode    可选项
    只有非黏性session才使用,默认值为none
    none: 从不对session进行锁定
    all: session将一直被锁定,知道请求结束
    auto: 对于只读请求,session将不会被锁定,如果是非只读请求,则session会被锁定
    uriPattern:<regexp>: 通过正则表达式的方式来对请求uri以及查询字符串进行匹配,只有匹配上的才会被锁定。
    9.requestUriIgnorePattern   可选项

    此属性是那些不能改备份Session的请求的正则表达式。如果像css,javascript,图片等静态文件被同一个Tomcat和同一个应用 上下文来提供,这些请求也会通过memcached-session-manager。但是这些请求在一个http会话中几乎没什么改变,所以他们没必要 触发Session备份。所以那些静态文件没必要触发Session备份,你就可以使用此属性定义。此属性必须符合java regex正则规范。
        如:".*.(png|gif|jpg|css|js)$"  

    10.sessionBackupAsync   可选项
    指定Session是否应该被异步保存到Memcached中。 如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout设置的过期时间起作用。

    11.backupThreadCount    可选项
     用来异步保存Session的线程数,(如果sessionBackupAsync="true")。默认值为cup的内核数。

    12.sessionBackupTimeout    可选项
     设置备份一个Session所用的时间,如果操作超过时间那么保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒

    13.operationTimeout    可选项
    从1.6.0版开始使用, 默认值为1000

    14.sessionAttributeFilter    可选项
     此属性是用来控制Session 中的那个属性值保存到Memcached中的正则表达式。郑则表达式被用来匹配Session中属性名称。如 sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"属性保存到Memcached中。依赖于选择的序列化策略。

    15.transcoderFactoryClass    可选项
     此属性值是创建序列化和反序列化 保存到Memcached中的Session的编码转换器的工厂类名。这个指定的类必须实现了 de.javakaffee.web.msm.TranscoderFactory和提供一个无参的构造方法。例如其他的有效的实现在其他 packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm- javolution-serializer.
    默认为 de.javakaffee.web.msm.JavaSerializationTranscoderFactory

    16.copyCollectionsForSerialization    可选项
    默认值为false。

    17.customConverter    可选项
    自己定义特殊的类注册到kryo自定义转换器中,实现序列化
    18.enableStatistics    可选项
     用来指定是否进行统计。 默认值为true。

    19.enabled   可选项
     指定Session保存到Memcached中是否可用和是否可以通过JMX进行改变。只用于粘性Session。 默认值为true。

  • 相关阅读:
    代理模式——JDK动态代理与CGLib原理及对比分析
    从混合云到分布式云 (上篇)
    年中盘点 | 2022年,PaaS 再升级
    Windows server 2012故障转移群集的安装、建立(含图解 itprobie
    matlab 程序发布 itprobie
    SQL Server 2019 无域搭建Always On环境 itprobie
    SQL SERVER 中常见的高可用方案 itprobie
    SQL Server发布订阅配置及实例讲解 itprobie
    在VMware虚拟机中安装windows server2016步骤详解(带图解)
    [SQL Server] 修改计算机名 itprobie
  • 原文地址:https://www.cnblogs.com/interdrp/p/4096466.html
Copyright © 2020-2023  润新知