zookeeper概览及系列目录

本文深入解析ZooKeeper集群中领导者选举的FastLeader算法,通过实例演示在全新集群和非全新集群环境下如何选取主leader,揭示了在不同服务器启动顺序下选举过程的细节。
1.zookeeper的使用示例

zk的处理流程:

************* zkCluster ***********
*                                 *
*       注册   监听事情   回调函数   *
***********************************
 /|\             /|\
/                   \
ZKFC                ZKFC
activeNN           standbyNN
***********************************
注:ZFKC作为zookeeper的客户端,向zookeeper注册,回调函数是ZKFC的。
2.对外与对内

对内:
server编码id 1 2 3 4 5
启动时:如果同时启动,原则上找serverid最大的为leader,即server5为leader。但是实际上通常如下情况:

zookeeper全新集群是如何选取主leader的?

以一个简单的例子来说明整个选举的过程.
假设有五台服务器组成的zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的.假设这些服务器依序启动,来看看会发生什么.

  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一样,当小弟.
    以上就是fastleader算法的简要分析,还有一些异常情况的处理,比如某台服务器宕机之后的处理,当leader宕机之后的处理等等,又是另外一种情况,见下文。
zookeeper非全新集群是如何选取主leader的? 见链接中8

参考链接:

ZooKeeper学习之路 (十)Hadoop的HA集群的机架感知
ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集群
ZooKeeper学习之路 (八)ZooKeeper原理解析
ZooKeeper学习之路 (七)ZooKeeper设计特点及典型应用场景
ZooKeeper学习之路 (六)ZooKeeper API的简单使用(二)级联删除与创建
ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查
ZooKeeper学习之路 (四)ZooKeeper开发环境eclipse配置
Zookeeper学习之路 (三)shell操作
Zookeeper学习之路 (二)集群搭建
Zookeeper学习之路 (一)初识
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值