博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memached实现tomcat的session共享
阅读量:4320 次
发布时间:2019-06-06

本文共 1705 字,大约阅读时间需要 5 分钟。

由于项目服务器用的阿里云的ECS,Memcached也采用的阿里云。多个tomcat集群的session都存储在一个云memcached中。

配置步骤如下:

一、tomcat增加memcached支持的lib包

主要用到以下9个jar包,去http://code.google.com/p/memcached-session-manager可以下载(当然需要fanqiang)。

asm-3.2.jarkryo-1.04.jarkryo-serializers-0.11.jarmemcached-session-manager-1.9.2.jarmemcached-session-manager-tc7-1.9.2.jarminlog-1.2.jarmsm-kryo-serializer-1.8.2.jarreflectasm-1.01.jarspymemcached-2.10.3.jar

把以上9个jar包放到tomcat/lib目录下。

二、配置tomcat同步session到memcached中

有两种模式:sticky和no-sticky

sticky:负载均衡会根据用户会话,每次都分配到同一个集群节点上。用户每次获取会话数据都是从tomcat里面取得,tomcat会备份一个session到memcached。 这样可以保持获取session的最高效。
no-sticky:负载均衡不会管用户会话,而是按每次连接分别分发的方式,会话都保持在memcached上,每次读写都在memcached上。由于会远程访问数据,所以效率会低一些,但是这种却是最符合集群或集中缓存预期效果的。

我采用的是no-sticky模式,编辑tomcat下的conf目录下的context.xml文件,在<Context>与</Context>中增加如下内容:

 

配置完成以后重启tomcat,使配置生效。

三、测试session共享是否生效

在第一个tomcat实例中的webapps/ROOT目录下新建test.jsp页面,内容如下

<%@ page language="java" %>  TomcatA      

TomcatA

<% session.setAttribute("abc","abc"); %>
Session ID <%= session.getId() %>
Created on <%= session.getCreationTime() %>

同样在第二个tomcat实例中的webapps/ROOT目录下新建test.jsp页面,内容如下:

<%@ page language="java" %>  TomcatB      

TomcatB

<% session.setAttribute("abc","abc"); %>
Session ID <%= session.getId() %>
Created on <%= session.getCreationTime() %>

在上层的nginx中配置负载均衡及反向代理如上两个tomcat(过程略)

最终测试效果如下,可以看到,session共享成功,另外也可以去memcached中看到存储的session。

转载于:https://www.cnblogs.com/Eivll0m/p/6525741.html

你可能感兴趣的文章
团队博客目录
查看>>
linux的启动流程
查看>>
摩尔斯电码(Morse Code)Csharp实现
查看>>
C#NULL条件运算符
查看>>
使用GZIP压缩网页内容(一)
查看>>
《深入浅出MFC》第二章 C++的重要性质
查看>>
关于智能硬件设备shell安全设计
查看>>
homework1
查看>>
3选择结构程序设计
查看>>
Python学习 12day__高级语法
查看>>
关于做产品的一点思考
查看>>
超大地形的处理 (Terrain Visualization)【转自知乎】
查看>>
html知识2
查看>>
Python—面向对象01
查看>>
Android DDMS ADB Hierarchy Viewer Lint
查看>>
Linux命令学习(5):more和less
查看>>
Linux 三剑客之sed命令总结
查看>>
倒计时
查看>>
36.Altium Designer(Protel)网络连接方式Port和Net Label详解
查看>>
读《分布式一致性原理》CURATOR客户端3
查看>>