密码:
网络营销 it新闻 军事新闻 社会新闻 it技术 网站优化 游戏资讯 公司资讯
MSM搭建(Memcached_Session_Manager解决集群session共享及配置属性解释
发布日期:2018-02-28 阅读数:234 来源:互联网 由金功呈网站建设公司整理 【关闭】



一、环境


    tomcat7三台,nginx(负载均衡),memcached(1.4.0)
需要的jar


二、memcached搭建
    需要安装libevent

三、tomcat配置
在tomcate的conf文件下的content.xml添加(非粘性):
 
 
 
 
 
 
 
 
                />

四、nginx配置
user nobody;
worker_processes 4;
    worker_connections 512;
    upstream msm{
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
    }
    server{
        listen 8080;
        location /{
            #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $proxy_add_x_forwarded_for;
                        #禁用缓存
                        proxy_buffering off;
                         #反向代理的地址
http://msm;
        }
    }


  MSM(memcached-session-manager) 支持tomcat6 和tomcat7 ,利用 Value(Tomcat 阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的, 支持 sticky 和 non-sticky 模式。
      黏性(sticky)session:
      非黏性( non-sticky)session:
          Sticky 模式: tomcat session 为 主session, memcached 为备 session。Request请求到来时, 从memcached加载备 session到 tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。
           Non-Sticky模式:tomcat session 为 中转session, memcached1 为主 sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备 session 到 tomcat,(当 容器 中还是没有session 则从memcached1加载主 session 到 tomcat, 这种情况是只有一个memcached节点,或者有memcached1 出错时),Request请求结束时,将tomcat session更新至主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的。

此属性是必须的。
此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节 点的定义格式为<id>:<host>:<port>。 多个之间用空格或半角逗号隔开(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。如果你设置单个memcache节点<id>是可选的,所以它允许设置为<host>:<port>(memcachedNodes="localhost:11211")。
可选项,属性只能用在非粘连Session机制中。
 此属性必须包含memcached节点的Id,此节点是Tomcat作为备份使用。多个之间用空格或逗号隔开
可选项,默认为text。出属性指明memcached使用的存储协议。只支持text或者binary。
指定使用粘性的还是非粘性的Session机制。
 此属性只对非粘性Session有用,默认为none。
指定非粘性Session的锁定策略。他的只有
       (1)、none:从来不加锁
       (2)、all: 当请求时对Session锁定,直到请求结束
       (3)、auto:对只读的request不加锁,对非只读的request加锁
       (4)、uriPattern:<regexp>: 使用正则表达式来比较requestRUI + "?" + queryString来决定是否加锁,
requestUriIgnorePattern: 可选项
此属性是那些不能改备份Session的请求的正则表达式。如果像css,JavaScript,图片等静态文件被同一个Tomcat和同一个应用上下文来提供,这些
请求也会通过memcached-session-manager。但是这些请求在一个http会话中几乎没什么改变,所以他们没必要触发Session备份。所以那些静态文件
没必要触发Session备份,你就可以使用此属性定义。此属性必须符合Java regex正则规范。
sessionBackupAsync 可选项,默认true
指定Session是否应该被异步保存到Memcached中。 如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout
设置的过期时间起作用。
backupThreadCount 可选项,默认为CPU内核数。
用来异步保存Session的线程数(如果sessionBackupAsync="true")。
sessionBackupTimeout 可选项,默认100,单位毫秒
设置备份一个Session所用的时间,如果操作超过时间那么保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒
sessionAttributeFilter 可选项 从1.5.0版本有
此属性是用来控制Session中的那个属性值保存到Memcached中的正则表达式。郑则表达式被用来匹配Session中属性名称。如sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"属性保存到Memcached中。
依赖于选择的序列化策略。
transcoderFactoryClass 可选,默认为 de.javakaffee.web.msm.JavaSerializationTranscoderFactory此属性值是创建序列化和反序列化保存到Memcached中的Session的编码转换器的工厂类名。这个指定的类必须实现了de.javakaffee.web.msm.TranscoderFactory
和提供一个无参的构造方法。例如其他的有效的实现在其他packages/jars中提供如:msm-kryo-serializer,msm- xstrea-serializer和msm-javolution-serializer.
copyCollectionsForSerialization 可选项,默认false。
customConverter 可选项
用来指定是否进行统计。
 enabled 可选项,默认true
指定Session保存到Memcached中是否可用和是否可以通过JMX进行改变。只用于粘性Session。
配置$CATALINA_HOME/conf/server.xml
<Engine name=
"Catalina"defaultHost="localhost"jvmRoute="tomcat2">  
   注意每台tomcat的jvmroute参数都不能一样
返回sessionid :011F1CAEAF5AE925F4124D94785AFE41-n1 .tomcat2
 n1 表示memcached ; .tomcat2表示配置jvmRoute。

广州金功呈网站建设网微信二维码
  • 深圳市一键一家网络科技有限公司官方网址:http://www.songhu9.com.cn
  • QQ:316675593,电话号码:13660626274
  • 业务范围:公司网站建设、管理软件研发、软件网站二次开发、400电话、电商平台研发、公众号研发!
  • 免责申明:本站内容均来源于网络,版权归原创所有,如有任何版权方面的问题,请与我们联系处理!