`

Memcached-session-manager概述

 
阅读更多

    官方网站:http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

 

    当用户数量和集群数量达到一定规模后,Session 复制就可能成为性能瓶颈。于是人们提出了 从第三方缓存恢复失效节点数据的方案,开源产品 Memcached-Session-Manager(下面简称MSM)就是基于这个思想。

MSM是一个高可用的Tomcat session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用memcached存取Session,以实现高可用。

对于非黏性Sessionmemcached直接存储session

memcached外,还可以其他缓存组件如memcachedbmembase等。

 

一、特性                                                                  

   支持Tomcat6Tomcat7

   支持黏性、非黏性Session

   无单一故障点

   可处理tomcat故障转移

   可处理memcached故障转移

   插件式session序列化

   允许异步保存session,以提升响应速度

   只有当session有修改时,才会将session写回memcached

   JMX管理&监控

 

二、MSM解决的问题                                                                                                                              

假设你有一个Tomcat集群,使用黏性session,如何应对单点故障问题?为了应对更多的并发量和可用性,你可以不断的增加Tomcat节点,但是单点故障仍旧会是个问题:如果使用黏性Session,一个Tomcat故障时,其他Tomcat并不能接管故障Tomcat节点的Session

解决此问题的思路就是将黏性Session同时保存在Memcached中,如果单个Tomcat发生故障,集群中的其他Tomcat可以从Memcached中得到Session信息。

   【注】对于非黏性SessionMSM V1.4.0及以后版本已经支持

 

三、Sticky Session 模式下的工作原理                                       

  Tomcat 的本地 session  为主 sessionMemcached 中的 session 为备 session

    第一步,所有 Tomcat 节点都需要安装 MSM;每一个 Tomcat 会有自己的本地 session

    第二步,当一个请求执行完毕之后,如果对应的 session 在本地不存在(即这是某一个用户的第一次请求),则将该 session 复制一份至 Memcached

    第三步,当该 session 的下一个请求到达时,会使用 Tomcat 的本地 session。请求处理结束之后,session 的变化会同步更新到 Memcached,保证数据一致。

    第四步,如果当前 Tomcat 节点失效,下一个请求会被路由给其他 Tomcat。这个 Tomcat 发现请求所对应的 session 并不存在,于是它将查询 Memcached,如果查询到了,则恢复将其保存到本地session此次请求结束,如果session被修改,送回Memcached备份。

这样就完成了容错处理。

 

四、Non-sticky Session 模式下的工作原理                                    

Tomcat 的本地session为中转sessionmemcache1 为主 sessionmemcache2为备 session

第一步,收到请求,加载备 session 到本地容器;

session 加载失败,则从主 session 加载;

第二步,请求处理结束之后,session 的变化会同步更新到 memcache1 memcache2,并清除Tomcat 的本地 session

session data 要想存入 memcache,必须能序列化和反序列化。

 

上边介绍的是处理Tomcat故障转移,MSM又是如何处理Memcached故障转移呢?

如果一个Memcached故障,当前Memcached中的Session会转移到其他Memcached节点,同时,JSESSIONID被修改并送回浏览器。

如果使用黏性Session,应确保loadbalancer中配置生成的JSESSIONID无任何后缀。

SESSIONID的格式

 

MSM知道Memcached节点列表,这些节点标识会存储在SESSIONID中,SESSIONID值类似:602F7397FBE4D9932E59A9D0E52FE178-n1 【其中n1Memcached节点标识】

 

 

分享到:
评论

相关推荐

    初学SpringSession讲义大全.docx

    1. 使用容器扩展插件:可以使用容器扩展插件来实现 session 共享,如 tomcat-redis-session-manager 插件、jetty-session-redis 插件、memcached-session-manager 插件。 2. 使用 Nginx 负载均衡的 ip_hash 策略:...

    session共享tomcat7 memcached 文档

    Memcached Session Manager (MSM) 概述 - **MSM**是一个专为Tomcat设计的Session共享解决方案,它可以将Session数据存储在Memcached中,以提高系统的可用性和扩展性。 - **特性**包括但不限于: - 支持多种版本的...

    tomcat集群安装配置_session.doc

    ### Tomcat集群安装配置_session知识点概述 #### 一、项目背景及环境介绍 根据文档提供的信息,本项目是由西安辉盛科技发展有限责任公司发起的,旨在实现Tomcat集群的搭建,以便于支持高并发访问场景下的应用服务...

    jetty-nosql-memcached:码头的内存缓存会话管理器(基于jetty-nosql)

    基于jetty-nosql的Jetty的SessionManager实现。 安装 jetty-nosql-memcached是Jetty的扩展。 您必须将jar安装到jetty的${jetty.home}/lib/ext 。 可以在Maven Central上找到内置的jetty-nosql-memcached罐。 您可以...

    zend2.3api手册

    **一、框架概述** Zend Framework 2.3 是一个基于组件的 PHP 开发框架,旨在提供高效、可扩展性和灵活性。它的设计原则是遵循“Don't Repeat Yourself”(DRY)和“Keep It Simple, Stupid”(KISS)理念,为开发...

Global site tag (gtag.js) - Google Analytics