基于zookeeper高可靠性分布式理论概述(推荐)_zookeeper理论及使用

2020-02-27 其他范文 下载本文

基于zookeeper高可靠性分布式理论概述(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“zookeeper理论及使用”。

北大青鸟中关村

基于zookeeper高可靠性分布式理论概述

» Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、Server 之间状态同步等。» Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型

» 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

» 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 » 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 » ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用 » Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.» HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.» 特性 »

» Zookeeper是简单的» Zookeeper是富有表现力的» Zookeeper具有高可用性

» Zookeeper采用松耦合交互方式

» Zookeeper是一个资源库 »

» Zookeeper是一个由多个server组成的集群 » 一个leader,多个follower

北大青鸟中关村

» 每个server保存一份数据副本 » 全局数据一致 » 分布式读写

» 更新请求转发,由leader实施 » 角色

» 领导者(leader),负责进行投票的发起和决议,更新系统状态

» 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票

» Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

» 客户端(client),请求发起方

工作原理

» Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。»

一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分的followers支持

» 广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。» 当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。

Leader选举

» 每个Server启动以后都询问其它的Server它要投票给谁。

北大青鸟中关村

» 对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上一次处理事务的zxid(系统启动时每个server都会推荐自己)» 收到所有Server回复以后,就计算出zxid最大的哪个Server,并将这个Server相关信息设置成下一次要投票的Server。

计算这过程中获得票数最多的的sever为获胜者,如果获胜者的票数超过半数,则改server被选为leader。否则,继续这个过程,直到leader被选举出来。

» leader就会开始等待server连接

» Follower连接leader,将最大的zxid发送给leader » Leader根据follower的zxid确定同步点

» 完成同步后通知follower 已经成为uptodate状态

» Follower收到uptodate消息后,又可以重新接受client的请求进行服务了

***************************************************

zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下: 1.tickTime:CS通信心跳时间

Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

tickTime以毫秒为单位。tickTime=2000 2.initLimit:LF初始通信时限

集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。initLimit=5 3.syncLimit:LF同步通信时限

集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。syncLimit=2 4.dataDir:数据文件目录

Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。

dataDir=/home/michael/opt/zookeeper/data 5.clientPort:客户端连接端口

客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。clientPort=2181 6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)

这个配置项的书写格式比较特殊,规则如下: server.N=YYY:A:B

北大青鸟中关村

server.1=itcast05:2888:3888 server.2=itcast06:2888:3888 server.3=itcast07:2888:3888

《基于zookeeper高可靠性分布式理论概述(推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于zookeeper高可靠性分布式理论概述(推荐)
点击下载文档
相关专题 zookeeper理论及使用 分布式 高可靠性 理论 zookeeper理论及使用 分布式 高可靠性 理论
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文