zookeeper ZAB协议
2020-04-23 09:58:14 84 举报
zookeeper ZAB协议三阶段(选举、恢复、广播)
作者其他创作
大纲/内容
更新其他节点的投票为自己的投票继续发送给其他节点进行投票
l.lastZxid>=f.lastZxid
3.commit
1、leader把请求包装成proposal。2、leader提交proposal到各个follow的FIFO队列中。3、follow根据队列中的顺序把proposal写入磁盘。4、follow写入磁盘成功后相应确认。5、leader收到半数以上follow的ack确认则发起提交。
发送候选LEADER的epoch给所有FOLLOW节点
1.proposal
N
l.epoch>f.epoch
FOLLOW节点
坚持自己的投票
2.ACK
FIFO
Y
全量复制
BROADCAST Phase(广播阶段)
每个根据选举参数比较自己和其他节点发过来的选举
FOLLOW
Fast Leader Election(快速选举)
f.lastZxid<l.history.oldThreshold小于最小的提交的提议
重新选举
大于
logical_clock==election_epoch
小于
每个非Observe节点的状态都更新为LOKING
logical_clock大于election_epoch则抛弃其他服务器过来的投票,如果小于则重置自己的logical_clock
每个选举的节点都选举自己为leader并发送选举到其他节点span style=\"font-size: inherit;\
比较自己的zxid和其他服务器发送来的zxid
比较自己的server_id和其他服务器发送过来的server_id
Fast Leader Election(快速选举)拥有最新Proposal history (lastZxid最大)的节点作为 Leader
LEADER包装成提议(proposal)
同步相差的部分
Client端写请求
等于
follow中止未提交的提议
LEADER节点
发送他们最新的lastZxid 给 Leader
开始选举logical_clock+1(当集群启动或者master挂掉的时候开始选举)
收获集群中半数以上的节点的投票则成为候选leader
Recovery Phase(恢复阶段)
0 条评论
下一页