文档章节

Tomcat集群session管理解决方案(关于sticky session、session replication与使用memcached缓存session)

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 977
阅读 33
收藏 1
点赞 0
评论 0

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7641714 ,转载请注明出处!


提要:本文主要的写作目的是解释集群方案中的一些重要的概念,然后引入另一种session管理机制:基于缓存的session管理。本文并不讲述如何配置apache和tomcat来实现集群和负载均衡,关于这方面内容,可参考我的另一篇文章:Linux下搭建tomcat集群全记录


1.实现应用服务器集群需要解决那些问题?


对于所有的应用服务器集群来说,都需要解决两个最基本也是最核心的问题:

1. 如何分散访问请求到集群的各个结点
2. 如何通过一种session管理策略,确保某一个结点失效后,其session数据能由其他结点获取以便其他结点接替失效结点,实现集群的容错(failover)

对于第一个问题,最简单最直白的想法当然是均匀散列请求到各结点,但是对于应用服务器而言,由于有session的存在,一种更好的处理方式是同一个session的相关请求分发到同一个结点进行处理,这就是所谓的“粘性ssession”(sticky session)方式的负载均衡,而前者就称之为:“非粘性ssession”(non-sticky session)方式的负载均衡.

对于第二个问题,多数的应该服务器(包括Tomcat在内)使用的是session复制(session replication)机制,即结点之间通过组播方式将各自的session发到其他所有结点上,如果其中一个访问出错,则另外结点仍然具有有效的session内容,从而能正常接管其session。由于服务器内置了session复制机制的实现,因而使用这种方案非常简单,只需要做简单的配置即可完成,但是其缺点也是很明显的,由于大量的session信息需要复制,在用户数量和集群数量达到一定规模后,session复制就有可能成为性能瓶颈。于是人们想到了别外一种解决策略:通过第三方缓存来存放sessiono数据,如果某一结点失效,被委任接替失效结点的服务器可以从缓存中恢复session.基于这种思想,在google code上有一款开源产品:memcached-session-manager。

2.memcached-session-manager的工作原理


首先,所有的tomcat节点需要安装memcached-session-manager,每一个tomcat会有自己的本地session,当一个请求执行完毕之后,如果对应的session之前不存在(也就是说这是某个用户的第一次请求),则将该session拷贝一份副本至memcached缓存,当该session的下一个请求到达时,会使用tomcat的本地session,请求处理结束之后,session的变化会同步更新到memcached缓存中对应的session里,从而确保本地session和缓存中的session始终保持一致。如果当前结点失效,下一个请求会被路由给另外一个tomcat处理,这个tomcat发现请求所属的session并不存在,于是它将查询memcached缓存,并将查询到的session恢复到本地,这样就完成了容错处理。(以上是sticky session模式为背景的解释,memcached-session-manager也支持non-sticky session。)

由于以缓存为基础的session管理不需要大量的数据复制,其性能表现更好,具有更好的伸缩性。


最后补充一点:实际上,除去有服务器端管理session,还有另一个种截然不同的管理方式,即将session作为cookie的一部分经过压缩和加密后存放在用户的本地浏览器上!

本文转载自:http://blog.csdn.net/bluishglc/article/details/7641714

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
MSM-Memcached_Session_Manager介绍及使用

我们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在tomcat下,假如我们部署了10台tomcat服务器,那这10台t...

凡尘里的一根葱 ⋅ 2015/11/06 ⋅ 0

MSM--Memcached_Session_Manager介绍及使用

MSM--MemcachedSessionManager介绍及使用 我们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在tomcat下,假...

偶是小娃 ⋅ 2012/12/19 ⋅ 0

基于MSM实现nginx负载均衡+tomcat集群+memcached(session共享)

Session共享的方案介绍 Session 共享有多种解决方法,常用的有四种:客户端 Cookie 保存、服务器间 Session 同步、使用集群管理 Session(如本文要介绍的Memcached Session Manager) 、把 ...

jaychang ⋅ 2016/01/20 ⋅ 7

分布式session

@郑昀汇总 与分布式缓存在高并发和高可用下所要解决问题差不多。 一.图示: 二.高并发下分布式Session需解决的问题: 透明处理存储介质的故障转移 动态增删节点,减小“缓存颠簸”问题 保证数...

mn_1127 ⋅ 2014/03/21 ⋅ 0

tomcat集群扩展session集中管理,Memcached-session-manager...

tomcat集群扩展session集中管理,Memcached-session-manager使用总结 博客分类: tomcat集群 ha javatomcatwebhasession manager最近在研究tomcat做负载均衡的时候如何实现ha,还有就是不采用...

gezy ⋅ 2013/05/17 ⋅ 0

Tomcat基于MSM+Memcached实现Session共享

前言 在Tomcat集群中,当一个节点出现故障,其他节点该如何接管故障节点的Session信息呢?本文带来的解决方案是基于MSM+Memcached实现Session共享。 相关介绍 MSM MSM–Memcached Session M...

eddy_linux ⋅ 2015/11/16 ⋅ 0

Tomcat集群方案

一、 需求 多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个: 1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较...

nubo ⋅ 2013/03/01 ⋅ 6

memcached-session-manager配置

Introduction 如果为了简单使用,你只需要安装一个tomcat(6或者7)和memcached,在生产环境中可能会有多台tomcat服务器以及多台可用的memcached节点,并安装在不同的机器上,我们可以使用黏...

偶是小娃 ⋅ 2012/12/19 ⋅ 0

企业网站架构之Nginx+tomcat+memcached集群

nginx+tomcat+memcached应用 系统环境:RHEL6.4 x64 iptables -F and selinux is disabled 主机角色:node1 :192.168.0.24 :lnmp环境 tomcat memcached node2 :192.168.0.99 : tomcat memcache......

Andy-xu ⋅ 2014/08/11 ⋅ 0

分布式集群系统下的高可用session解决方案

目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。 目前,在集群系统下实现session统一的有如下几种方案:...

凯文加内特 ⋅ 2015/03/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux中的端口大全

1 被LANA定义的端口 端口 名称 描述 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 d...

寰宇01 ⋅ 21分钟前 ⋅ 0

Confluence 6 如何备份存储文件和页面信息

备份的 ZIP 文件包含有 entities.xml,这个 XML 文件包含有 Confluence 的所有页面内容和存储附件的目录。 备份 Zip 文件结构 页面的附件是存储在附件存储目录中的,通过页面和附件 ID 进行识...

honeymose ⋅ 23分钟前 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 27分钟前 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 33分钟前 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 34分钟前 ⋅ 0

oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

背景 6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 重要变化: 基于Spring Boot 2.0.X 不兼容 Spring Boot 1.5.X 期间踩过几个坑,分享出来给大伙,主要是关于...

冷冷gg ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 理发师小姐姐的魔法

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @冰冰棒- :分享田馥甄的单曲《My Love》 《My Love》- 田馥甄 手机党少年们想听歌,请使劲儿戳(这里) @Li-Wang :哎,头发又长了。。。又要...

小小编辑 ⋅ 今天 ⋅ 9

Kafka1.0.X_消费者API详解2

偏移量由消费者管理 kafka Consumer Api还提供了自己存储offset的功能,将offset和data做到原子性,可以让消费具有Exactly Once 的语义,比kafka默认的At-least Once更强大 消费者从指定分区...

特拉仔 ⋅ 今天 ⋅ 0

NEO智能合约之发布和升级(二)

接NEO智能合约之发布和升级(一),我们接下来说说智能合约的升级功能。 一 准备工作 合约的升级需要在合约内预先设置好升级接口,以方便在升级时调用。接下来我们对NEO智能合约之发布和升级...

红烧飞鱼 ⋅ 今天 ⋅ 0

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部