tomcat+memcached集群
来源:互联网 发布:淘宝客入门视频教程 编辑:程序博客网 时间:2024/05/29 14:02
利用memcache来保存tomcat的session会话
前提条件:
1、memcached正常工作了
2、tomcat 正常工作了。
1、安装方法及安装包
javolution-5.4.3.1.jar
memcached-2.4.2.jar
memcached-session-manager-1.3.0.jar
msm-javolution-serializer-cglib-1.3.0.jar
msm-javolution-serializer-jodatime-1.3.0.jar
安装方法: 将这几个包放到/usr/local/tomcat6.0/lib里。
2、编辑tomcat的配置文件。 <这一点很重要,因为网上大多数文章都是说修改server.xml里配置;我试过但最终发现session的信息没有存入到memcache中,我意识到这可能是配置有问题。目前发现编辑context.xml这个文件,是可以立即将session丢入到memcache中的。>
vim /usr/local/tomcat6.0/conf/context.xml
<Context> <!-- 在这个字段下添加以下内容,在节点入请填入你的memcached服务器ip及端口号--> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.254.41.197:11211" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" /> </Context>
#serverworker.list = controller #控制器名称#========tomcat1========worker.tomcat1.port=8009 #ajp协议的端口,如果2个tomcat部署在同一个服务器中,那个ajp端口需要不同worker.tomcat1.host=127.0.0.1 #tomcat的所在主机的ip,如果是本机,则写本机的ip即可worker.tomcat1.type=ajp13 #协议类型worker.tomcat1.lbfactor=1 #负载因子#========tomcat2========worker.tomcat2.port=9009worker.tomcat2.host=127.0.0.1worker.tomcat2.type=ajp13worker.tomcat2.lbfactor=1 #如果2个tomcat,该参数相同,表示等比例,如果想tomcat负载多一点,只要把这个参数改的大一点即可,具体多少还是得看情况#========controller,负载均衡控制器========worker.controller.type=lbworker.controller.retries=3 #请求失败以后重试次数worker.controller.balance_workers=tomcat1,tomcat2 #controller控制的tomcat的名称,分别为tomcat1和tomcat2,由tomcat中的server.xml中设值worker.controller.sticky_session=false #回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理worker.controller.sticky_session_force=false #当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的tomcat,但是会丢失回话信息更详细的参数说明:http://tomcat.apache.org/connectors-doc/reference/workers.html
1、 session存储到memchached实现方案时。他主要功能是修改tomcat的session存储机制,使之能够把session序列化存放到memcached中。
2、Manager标签属性说明:
className
此属性是必须的。
memcachedNodes
此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节点的定义格式为::。
多个之间用空格或半角逗号隔开(如:memcachedNodes=”n1:localhost:11211,n2:localhost:11212”)。
如果你设置单个memcache节点是可选的,所以它允许设置为:(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:: 使用正则表达式来比较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。
- Nginx + Memcached + Tomcat 集群
- Nginx + Memcached + Tomcat 集群
- Nginx+Tomcat+Memcached集群
- Nginx+Tomcat+Memcached集群
- Nginx+Tomcat+Memcached集群
- Nginx+Tomcat+Memcached集群
- Nginx + Memcached + Tomcat 集群
- Nginx+Tomcat+Memcached集群
- Nginx + Tomcat + Memcached 集群
- tomcat+nginx +memcached集群
- Nginx+Tomcat+Memcached集群
- tomcat+memcached集群
- Nginx+Tomcat+Memcached集群
- Nginx + Memcached + Tomcat 集群
- tomcat使用memcached完成集群
- Nginx+Memcached+Tomcat集群配置
- tomcat使用memcached完成集群
- tomcat使用memcached完成集群
- Java初涉之9--二叉树及其前序,中序,后序的JAVA实现
- 单例的创建方法
- Linux脚本入门
- spotlight on windows 破解
- (3)散列函数设计:直接定址法
- tomcat+memcached集群
- 用 Swift、Foursquare API 和 Realm 創建一個咖啡屋 App
- 【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合
- linux yum命令详解
- (4)散列函数设计:除留余数法
- ROS 运动规划 (Motion Planning): MoveIt! 与 OMPL
- ftruncate函数详解
- android 控件布局
- (5)散列冲突处理:开放定址法