手记

【学习打卡】第二天 ZooKeeper选举

课程名称

探秘 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

验证选票

看投票的是否到达选举终止条件

1人推荐
随时随地看视频
慕课网APP