Zookeeper基础学习

1、Zookeeper的概念

Zookeeper是hadoop的一个子项目,是一个树行目录服务。

Zookeeper翻译过来就是动物管理员,他是用来管理Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,简称zk。

Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。

2、Zookeeper提供的主要功能

2.1、配置管理

集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。

Zookeeper很容易实现这种集中式的配置管理,例如将APP1的所有配置配置到/APP1 znode下,APP1所有机器一启动就对/APP1这个节点进行监控(zk.exist("/APP1",true)),并且实现回调方法Watcher,那么在zookeeper上/APP1 znode节点下数据发生变化的时候,每个机器都会收到通知,Watcher方法将会被执行,那么应用再取下数据即可(zk.getData("/APP1",false,null));

2.2、分布式锁

zookeeper实现分布式锁的原理就是多个节点同时在一个指定的节点下面创建临时会话顺序节点,谁创建的节点序号最小,谁就获得了锁,并且其他节点就会监听序号比自己小的节点,一旦序号比自己小的节点被删除了,其他节点就会得到相应的事件,然后查看自己是否为序号最小的节点,如果是,则获取锁

2.3、集群管理(当做注册中心)

(1)分布式环境中,实时掌握每个节点的状态是必要的。可根据节点实时状态做出一些调整。

(2)ZooKeeper可以实现实时监控节点状态变化。可将节点信息写入ZooKeeper上的一个2Node。监听这个DMode可获取它的实时状态变化。

(3)在集群选master,一旦master挂掉能够马上能从slave中选出一个maste。

3、Zookeeper的特点

  1. Zookeeper是由一个Leader和多个Follower组成的集群。
  2. 集群中只要有半数以上的节点存活,Zookeeper就能正常工作。
  3. 全局数据一致性,每个server上保存的数据都一样,客户端无论访问哪个节点,数据都一致。有几个节点就有几个副本。
  4. 更新请求顺序进行,来自同一个客户端的更新请求按其发送顺序一次执行。
  5. 数据更新的原子性,一次更新要么成功,要么失败。
  6. 实时性,在一定时间范围内,客户端能读到最新数据。

4、Zookeeper的角色

Zookeeper中的角色主要有以下三类,如下表所示:
在这里插入图片描述
在这里插入图片描述

每个Server在工作过程中有三种状态:
  LOOKING:当前Server不知道leader是谁,正在搜寻。
  LEADING:当前Server即为选举出来的leader。
  FOLLOWING:leader已经选举出来,当前Server与之同步。

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

5、Zookeeper选举机制

  (1)服务器1启动,此时只有它一台服务器启动了,投票先选自己,因为票数没有超过一半,所以与其他节点通信,但是它发出去的报文没有任何响应,所以它的选举状态一直是LOOKING状态。

(2)服务器2启动,也是投票先选自己,发现自己只有一票,然后它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1、2还是继续保持LOOKING状态。

(3)服务器3启动,根据前面的理论分析,服务器3成为服务器1、2、3中的老大,而与上面不同的是,此时有三台服务器选举了它,超过了总票数的一半,所以它成为了这次选举的Leader。

(4)服务器4启动,根据前面的分析,理论上服务器4应该是服务器1、2、3、4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了。

(5)服务器5启动,同4一样当小弟。

6、Zookeeper写数据流程

 

7、Zookeeper读数据流程

相比写数据流程,读数据流程就简单得多;因为每台server中数据一致性都一样,所以随便访问哪台server读数据就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值