全国咨询/投诉热线:400-618-4000

Zookeeper分布式系统的集群架构介绍

更新时间:2020年11月03日14时06分 来源:传智播客 浏览次数:

      把复杂的东西简单化,是不变的技术追求。在过去,很多大型系统依赖一个类似的系统来进行分布式协调,一旦运行这个系统的服务器宕机,那么整个分布式系统将无法正常运行,为了解决这个问题,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,解决分布式集群中应用系统的一致性问题,例如如何避免同时操作同一数据造成脏读的问题等。
 Zookeeper对外提供一个类似于文件系统的层次化的数据存储服务,为了保证整个Zookeeper集群的容错性和高性能,每一个Zookeeper集群都是由多台服务器节点(Server)组成,这些节点通过复制保证各个服务器节点之间的数据一致。只要当这些服务器节点过半数节点可用,那么整个Zookeeper集群就可用。下面我们来学习Zookeeper的集群架构,如图1所示。
图1 Zookeeper集群架构图
  从图1我们可以看出,Zookeeper集群是一个主从集群,它一般是由一个Leader(领导者)和多个Follower(跟随者)组成。此外,针对访问量比较大的Zookeeper集群,还可新增Observer(观察者)。Zookeeper集群中的三种角色各司其职,共同完成分布式协调服务。下面我们针对Zookeeper集群中的三种角色进行简单介绍。
  1.Leader
  它是Zookeeper集群工作的核心,也是事务性请求(写操作)的唯一调度和处理者,它保证集群事务处理的顺序性,同时负责进行投票的发起和决议,以及更新系统状态。
  2.Follower
  它负责处理客户端的非事务(读操作)请求,如果接收到客户端发来的事务性请求,则会转发给Leader,让Leader进行处理,同时还负责在Leader选举过程中参与投票。
  3.Observer
  它负责观察Zookeeper集群的最新状态的变化,并且将这些状态进行同步。对于非事务性请求可以进行独立处理;对于事务性请求,则会转发给Leader服务器进行处理。它不会参与任何形式的投票,只提供非事务性的服务,通常用于在不影响集群事务处理能力的前提下,提升集群的非事务处理能力(提高集群读的能力,也降低了集群选主的复杂程度)。


猜你喜欢:

什么是Scala?Scala发展历程简介

什么是Sqoop,Sqoop在开发中起到什么作用?