从单机到集群会话的管理之集群模式二(更大的集群)

原创 2015年11月05日 08:41:08

从单机到集群会话的管理之集群模式一》中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群。

下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体。前面各种模式的实现都无需负载均衡协助,所以图中都把负载均衡省略了。最常见的负载方式是前面用apache拖所有节点,它支持将类似“326257DA6DB76F8D2E38F2C4540D1DEA.tomcat1”的会话id进行分解,定位到tomcat集群中以tomcat1命名的节点上(这种方式称为Session Stick,由apache jk模块实现)。每个会话存在一个原件和一个备份,且备份与原件不会保存在同一个节点上,如下图,例如当客户端发起请求后通过负载均衡被分发到tomcat1实例节点上,生成一个包含.tomcat1后缀的会话标识,并且tomcat1节点根据一定策略选出此次会话对象备份的节点,然后将包含了{会话id,备份ip}的信息发送给tomcat2tomcat3tomcat4,如图中虚线所示,这样每个节点都有一个会话id、备份ip列表,即每个节点都有每个会话的备份ip地址。

完成上面一步后就是将会话内容备份到备份节点上,假如tomcat1s1s2两个会话的备份地址为tomcat2,则把会话对象备份到tomcat2中,类似的有tomcat2s3会话备份到tomcat4tomcat4s4s5两个对话备份到tomcat3,这样集群中所有的会话都已经有了一份备份。当tomcat1一直不出故障,由于Session Stick技术客户端将一直访问到tomcat1节点上,保证一直能获取到会话。而当tomcat1出故障了,这时tomcat也提供了一个failover机制,apache感知到后端集群tomcat1节点被移除了,这时它会把请求随机分配到其他任意节点上,接下去会有两种情况:

①刚好分到了备份节点tomcat2上,此时仍能获取到s1会话,除此之外,tomcat2还要另外做的事是将这个s1会话标记为原件且继续选取一个备份地址备份s1会话,这样一来又有了备份。

②假如分到了非备份节点tomcat3,此时肯定找不到s1会话,于是它将向集群所有节点发问,“请问谁有s1会话的备份ip地址信息?”,因为只有tomcat2s1的备份地址信息,它接收到询问后应答告知tomcat3节点s1会话的备份在tomcat2,根据这个信息就能查到s1会话了,并且tomcat3在自己本地生成s1会话并标为原件,tomcat2上的副本不变,这样一来同样能找到s1会话,正常完整整个请求处理。

 

   《从单机到集群会话的管理》系列文章从单机到集群分析了web服务器的会话管理的不同模型,包含了单机非持久化、单机文件持久化、单机数据库(缓存)持久化、集群数据库(缓存)、集群全节点复制、集群原件副本备份等等。分析了不同模型的工作原理及优点不足,深入理解各种会话管理模式对于实际项目的会话方案选型有很大的帮助。




==========广告时间==========

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

=========================

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

从单机到集群会话的管理之集群模式一

为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群;另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台机器的处理能力已经不...

zookeeper+dubbo+dubbo管理集群的简要配置[单机]

dubbo是阿里的一个开源soa框架,详细介绍http://code.alibabatech.com/wiki/display/dubbo/Home-zh zookeeper是Hadoop的子项目,...

分布式服务管理框架-Zookeeper安装与配置(单机、集群)

Zookeeper 分布式服务框架是 Apache Hadoop 下的一个子项目,它主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理...

分布式服务管理框架-Zookeeper安装与配置(单机、集群)

Zookeeper 分布式服务框架是 Apache Hadoop 下的一个子项目,它主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理...
  • xyang81
  • xyang81
  • 2016年11月03日 00:10
  • 1400

学习淘淘商城第三十三课(使用Spring来管理Redis单机版和集群版)

我们知道Jedis在处理Redis的单机版和集群版时是完全不同的,有可能在开发的时候使用的是单机版,但是当项目上线后使用的则是集群版。这就需要能够方便的在单机版和集群版之间进行切换。我们的做法便是定义...

zookeeper+dubbo+dubbo管理集群的简要配置[单机]

 zookeeper+dubbo+dubbo管理集群的简要配置[单机]   注:zookeeper集群是myid文件是没有后缀名的。 转自: http://www.verydem...

Kafka单机、集群模式安装详解(一)

本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 1. 所需要的环境Kafka需要以下...
  • Lnho2015
  • Lnho2015
  • 2016年05月09日 14:41
  • 14729

Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(2)

2.安装rsync 我们的Ubuntu 12.10版本默认安装了rsync,我们可以通过以下命令来安装或者更新rsync 3.安装hadoop,家林把下载下来的最新稳定版本的hadoop保...

Zookeeper单机及集群安装配置

  • 2017年04月25日 13:45
  • 160KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从单机到集群会话的管理之集群模式二(更大的集群)
举报原因:
原因补充:

(最多只允许输入30个字)