课程名称
探秘 MySQL 多版本并发控制原理
课程章节
第八章 选举流程
主讲老师
城南大师兄
学习内容:
选举信息
服务器角色概览
Leader
一个Zookeeper集群同一时间只有一个Leader。所有的写操作必须要通过Leader完成,再由Leader将写操作广播给其他服务器
Follower
一个Zookeeper集群可以存在多个Follower。Follower可直接处理并返回客户端的读请求,同时会将写请求转发给Leader处理,并且负责在Leader处理写请求时对请求进行投票
Observer
功能与Follower类似,但是无投票权
服务器状态信息
LOOKING
寻找Leader状态。当服务器处于该状态时,他会认为当前集群中没有Leader,因此需要进入Leader状态
FOLLOWER
跟随者状态,表明当前服务器角色是Follower
LEADING
领导者状态,表明当前服务器角色是Leader
OBSERVING
观察者状态,表明当前服务器角色是Observer
投票信息
leader
被选举Leader的sid
zxid
被选举Leader的事务id
sid
当前服务器的sid
electionEpoch
当前投票的轮次
peerEpoch
当前服务器的Epoch
选票PK
优先级Epoch > Zxid > Sid
选票终止条件
当某一选票数占集群中参与竞选节点(除observer外)数量的一半以上,选举结束
选举流程
选票初始化
服务器会先初始化自己的选举轮次 logicaclock ++,
广播选票
然后将自己的选票广播,并且从获取一张选票
获取选票
获取选票的state,如果是locking的状态
判断选票选举轮次,如果轮次相等,则进入选票pk环节
将获胜的选票广播
##### 获取的选票是leading或Following
验证选票
看投票的是否到达选举终止条件