Memcache学习笔记三:Memcache管理Tomcat的Session,Session共享
来源:互联网 发布:知乎怎么看匿名回答 编辑:程序博客网 时间:2024/06/10 15:43
Memcache学习笔记三:Memcache管理Tomcat的Session,Session共享
标签(空格分隔): Memcache Tomcat Session
一、了解黏性Session(stick Session)和非黏性Session(non-sticky Session)
这两个概念可以在集群分布式Session架构中很好的解释和理解,出现于应用服务器的集群环境中。如下图两种架构。 在理解这两者的特点之前我们先看看这两种架构。 第一种架构:应用服务器进行集群管理,客户端访问代理服务器,代理服务器进行分配哪台应用服务器进行相应请求,Session池进行每台应用服务器的Session复制备份,防止应用服务器宕机,在这种架构中,应用服务器(Tomcat)自己也管理Session,相当于Session池的“主节点”。有请求到达产生Session,Session池对Session进行备份。代理服务器采用的是IP分治策略,也就是对访问者的【IP进行Hsah算法】%【当前可用服务器台数】得到的结果分配到对应的应用服务器上。这样做的好处是尽量将同一个请求都有同一台服务器进行处理响应。但是同时也有问题存在,例如:在一个局域网里有很多客户端,但是使用的是同一个路由进行数据的转发,这样就会出现很多请求落到了同一个应用服务器上。当出现比较极限的情况,很多局域网都落到同一台应用服务器上,就出现了负载不均的状况。这种架构能够实现自动故障转移和Session共享。 第二种架构:代理服务器用于转发请求,应用服务器只是响应请求不对Session进行管理,Session池对应用服务器的Session统一进行管理。请求到达应用服务器拿到请求的Session,到Session池中查询有没有Session,有就拿到进行响应,没有就创建,同时添加到Session池中。这种架构也能够实现自动故障转移和Session共享。
黏性Session
黏性Session:是对于用户和应用服务器之间、应用服务器和缓存的集中管理或备份服务器之间的关系。如上图的第一种架构中就属于粘性Session,客户端和应用服务器有一定的关系。这种关系的Session就属于粘性Session。
非黏性Session
非黏性Session:像上图的第二种架构客户端和应用服务器没有任何Session的相关的联系,客户端有请求,应用服务器就去Session池中查询,有就进行响应,没有就创建、添加到Session池中,然后进行响应。
简单来讲就是:
黏性Session:当用户发出第一个请求后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的路由,以后该用户的所有请求都绑定到这个路由,用户只会与该server发生交互,这种策略被称为粘性session(sticky session)。反之则是非黏性Session。
二、进行配置
准备工作: 在window下进行配置 两台tomcat服务器 端口好设置为:8081、8082 一个简单测试应用
修改端口
//修改tom1的server.xml <Server port="8006" shutdown="SHUTDOWN"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> //修改tom2的server.xml <Server port="8007" shutdown="SHUTDOWN"> <Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
测试应用
//tom1的应用的三个jsp文件用于测试//add.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><% String name=request.getParameter("name"); session.setAttribute("name", name); %> //index.jsp 在body标签中表明是Tomcat1 //show.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><% String name=(String)session.getAttribute("name"); out.println("<h1>name:"+name+"</h1>"); out.println("<h1>sessionID:"+session.getId()+"</h1>"); %> //tom2的应用的三个jsp文件用于测试 index.jsp在body标签中表明是Tomcat2 //其他两个jsp与tom1相同
添加jar包
memcached-session-manager-tc6-1.9.7.jar //与使用tomcat版本必修相同,测试使用都是6kryo相关jar //序列化,序列化相关还有:flexjson、xstream等memcached-session-manager-1.9.7.jarspymemcached-2.11.1.jar
关键步骤
测试粘性Session
修改tom1和tom2的context.xml,在Context标签中添加如下代码<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.0.167:11211,n2:192.168.0.167:11212" failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
非粘性Session
修改tom1和tom2的context.xml,在Context标签中添加如下代码<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.0.167:11211,n2:192.168.0.167:11212" sticky="false" sessionBackupAsync="false" lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
结果自行测试,体会两者的区别
下一篇展示nginx代理服务器对tomcat的集群的管理。
0 0
- Memcache学习笔记三:Memcache管理Tomcat的Session,Session共享
- tomcat集群 memcache共享session
- Memcache 实现tomcat集群session共享
- tomcat用memcache进行session共享
- session共享之nginx+tomcat+memcache
- tomcat memcache session 共享配置相关
- memcache共享session
- memcache共享session
- memcache实现session共享
- memcache session共享
- tomcat 配置用memcache 管理tomcat的session
- php学习笔记(二十八)session的高级管理(基于数据库和memcache的)
- 使用memcache实现session共享
- 使用memcache实现session共享
- memcache方式实现session共享
- memcache(三)应用场景,session存入memcache
- nginx负载均衡 tomcat集群 memcache共享session
- nginx负载均衡 tomcat集群 memcache共享session
- ping 原理与ICMP协议
- caffe +MATLAB配置
- 堆和栈的区别
- Find K Pairs with Smallest Sums
- Post的简单用法
- Memcache学习笔记三:Memcache管理Tomcat的Session,Session共享
- 如何提高 matlab 计算速度 运算效率
- Linux文件系统
- C/C++ Windows API——ICMP
- 【PAT甲级】【C++】1006. Sign In and Sign Out (25)
- 【poj 3579】 Median
- Mysql5.6+官网版本安装配置
- nginx代理服务器的搭建
- 印度一公司推出租用拖拉机软件