MSM搭建(Memcached_Session_Manager)--解决集群session共享
一、环境
二、memcached搭建
三、tomcat配置
四、nginx配置
五、说明
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 。以达到主备同步之目的。
Manager标签属性说明:
className:此属性是必须的。
memcachedNodes:此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节 点的定义格式为<id>:<host>:<port>。 多个之间用空格或半角逗号隔开(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。如果你设置单个memcache节点<id>是可选的,所以它允许设置为<host>:<port>(memcachedNodes="localhost:11211")。
failoverNodes:可选项,属性只能用在非粘连Session机制中。
此属性必须包含memcached节点的Id,此节点是Tomcat作为备份使用。多个之间用空格或逗号隔开
memcachedProtocol:可选项,默认为text。出属性指明memcached使用的存储协议。只支持text或者binary。
sticky: 可选项,默认为true。指定使用粘性的还是非粘性的Session机制。
lockingMode: 可选项, 此属性只对非粘性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 可选项
enableStatistics: 可选项,默认true,用来指定是否进行统计。
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。
MSM搭建(Memcached_Session_Manager)--解决集群session共享相关推荐
- Redis解决老项目集群Session共享案例与回顾
老项目突然之间客户要用了而且用户量还不少,后端移动端都需要给升级.第一改进的时候做了移动端与后端的服务分流,这次升级为分布式集群模式.分布式集群模式需要解决Session共享问题和数据一致性分布式锁处 ...
- Nginx+memcached+tomcat配置集群session共享负载均衡
Nginx+memcached+tomcat配置集群session共享负载均衡 配置环境: windows xp下 jdk1.7.0_10 nginx-1.2.6 (附下载) m ...
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
一,环境说明 操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本, Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http:// ...
- mysql集群session_PHP集群session共享
集群的概念没有多复杂,其实就是多台电脑为了同一个目标在一起工作.在Web应用中,就是多个服务器提供一个站点的服务. 搭建PHP集群的第一步就是设置负载均衡.首先我们需要三台主机: Nginx负载:19 ...
- php 集群 session共享,Session共享:php和redis集群如何实现Session共享
本篇文章给大家带来的内容是关于Session共享:php和redis集群如何实现Session共享,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.redis 数据库集群安装软件版 ...
- tomcat集群session共享
在部署cas系统的时候,遇到个问题,在tomcat集群部署cas系统,不能在一边服务器实现了登陆而在另一侧服务器还是没登录的.所以要实现tomcat集群的session的共享,从而实现高可用. 了解到 ...
- spring-session + redis 实现集群 session 共享
2019独角兽企业重金招聘Python工程师标准>>> 目前市面上实现session共享的方案有很多,其中比较常用的是使用Tomcat.Jetty等web服务器提供的session共 ...
- Jetty9.2.2集群Session共享
为什么80%的码农都做不了架构师?>>> 针对Jetty就不过多的介绍了,自行研究去吧! 1.准备环境 MySQL数据库:下载地址:自行百度. jetty-distributi ...
- mysql集群session_Jetty9.2.2集群Session共享
针对Jetty就不过多的介绍了,自行研究去吧! 1.准备环境 MySQL数据库:下载地址:自行百度. jetty-distribution-9.2.2:下载地址:http://download.ecl ...
最新文章
- java 小波去噪原理_小波去噪的基本知识
- hi3519av100 2.0版本sdk编译提示 cannot find uuid library required for mkfs.ubifs
- vscode安装和使用
- matlab 与dsp联合仿真,matlab和DSP联合开发前景很大?
- swingworker_使用SwingWorker的Java Swing中的多线程
- HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法
- 从地理围栏看物联网安防
- 第十五天 图【下】(大结局)
- 27 学java_自学Java第27天
- CSDN总部落户长沙,共建中国开发者产业中心城市!
- SCOM 2012知识分享-17:创建并管理组
- php 查询条件 session,PHP获取不到SESSION信息之一般情况解决方案
- 主板检测卡c5_用诊断卡 搞定主板故障
- 一图秒懂!“天使投资、VC、PE、A轮、B轮、C轮融资”的关系
- 云锁安装Linux服务器云锁安装说明
- python 群发邮件数量限制_用邮件群发平台群发邮件的数量有限制吗?一般可以发多少?...
- 打工就是 “演戏”,你可以认真,但别太当真
- 梧桐树定制福满满养老年金,给你养老生活源源不断的现金流!
- Encoder-Decoder 框架
- 网络字节序与主机字节序的相互转换