2023-01-12
集群 leader ○
选举制度的说明
ZooKeeper是一个分布式协调服务组件,但它本身也是一个集群,并且是一个主从架构的集群。与HDFS类似的是,这个集群中也是需要一个主节点和若干个从节点的。但是与HDFS不同,HDFS的主节点NameNode是需要我们在配置文件中指定的,而ZooKeeper集群的主节点并不是我们手动指定的,而是所有的节点启动之后自己选举出来的!因此,我们就需要了解一下ZooKeeper集群中的选举制度到底是什么?主节点为什么可以当选老大!
ZooKeeper集群中,节点的角色大体有两种:Leader 和 Follower。其中Leader为主节点,Follower为从节点。
选举中的几个概念
Leader
Leader是ZooKeeper集群工作的核心,是ZooKeeper集群的主节点。也是事物请求(写操作)的唯一调度和处理者,保证集群事物处理的顺序性;集群内部各个服务器的调度者。对于 create 、 setData 、 delete 等有写操作的请求,需要统一转发给Leader处理。Leader需要决定编号、执行操作,这个过程称为一个事物。
Follower
Follower是ZooKeeper集群中的从节点,有以下的功能:
1、处理客户端非事物请求(读操作),转发事物请求给Leader(写操作)。
2、参与集群Leader选举投票
投票相关
●myid
○我们在搭建ZooKeeper集群的时候需要设置服务器的ID值,这个值在选举的投票中有一定的权重占比。
●zxid
○事物ID,ZooKeeper会为每一个更新的操作分配一个事物ID。
○事物ID是一个64位的数字,且是全局单调递增的。
○在一个节点的状态信息中会看到这个值。
●epoch
○逻辑时钟。
在进行选举的时候,epoch > zxid > myid
状态相关
●LOOKING:竞选状态
●FOLLOWING:随从状态,同步leader状态,参与投票
●OBSERVING:观察状态,同步leader状态,不参与投票
●LEADING:领导状态
选举发生的时机
●启动ZooKeeper集群的时候
●ZooKeeper集群运行中,Leader失联
选举过程
启动集群选举
我们以3个节点的ZooKeeper集群为例,启动的顺序是qianfeng01, qianfeng02, qianfeng03
1qianfeng01启动,投自己一票。由于未满足过半的条件,进入到LOOKING状态。
2qianfeng02启动,投自己一票。现在活跃的节点已经过半,归票:
○优先比较Epoch,谁的大,谁当选Leader
○如果Epoch相同,比较zxid,谁的大,谁当选Leader
○如果zxid也相同,比较myid,谁的大,谁当选Leader
3qianfeng03启动,由于集群中已经出现了Leader,因此qianfeng03直接进入FOLLOWING状态,成为Follower。
集群运行中,Leader失联后的选举
集群在运行的过程中,Leader失联了。例如: 集群启动之后,qianfeng02当选为Leader,现在已经失联...
●qianfeng01、qianfeng03会进入到LOOKING状态,开始投票,并每人都给自己投了一票。
●归票:
○优先比较Epoch,谁的大,谁当选Leader
○如果Epoch相同,比较zxid,谁的大,谁当选Leader
○如果zxid也相同,比较myid,谁的大,谁当选Leader
上一篇:分布式锁的实现(二)
下一篇:MySQL数据库的主从架构(一)
开班时间:2021-04-12(深圳)
开班盛况开班时间:2021-05-17(北京)
开班盛况开班时间:2021-03-22(杭州)
开班盛况开班时间:2021-04-26(北京)
开班盛况开班时间:2021-05-10(北京)
开班盛况开班时间:2021-02-22(北京)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2020-09-21(上海)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2019-07-22(北京)
开班盛况Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号