16boke - 一路博客

tomcat+memcached集群

一、安装memcached

windows系统安装memcached

下载memcached的for win 32版本,下载到只有几十K大小,下载后输入命令安装命令:

c:\memcached\memcached.exe -d install

然后再输入如下命令把其作为win service常驻启动:

c:\memcached\memcached.exe -d start

其他详细的并没做了,因为部署在win上只是暂时开发测试用的,最终会部署在linux版本上.

http://pan.baidu.com/s/1o6TbLns

centos系统安装memcached:

http://www.16boke.com/article/detail/32

二、下载所需要的包

http://pan.baidu.com/s/1o6TbLns

三、Tomcat部署

tomcat采用tomcat7以上的版本,不然会报类找不到的错误,将上面的jar包放到tomcat中lib目录下,修改conf/context.xml

附上部分context.xml配置内容:

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  

        memcachedNodes="n1:localhost:11211,n2:localhost:11311"

        requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"   

        sessionBackupAsync="false"   

        sessionBackupTimeout="100"  

        transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  

        copyCollectionsForSerialization="false"/>

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备份,你就可以使用此属性定义。此属性必须符合javaregex正则规范。

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。