zk投票过程
2019-04-19 13:28:47 0 举报
zookeeper的leader选举过程
作者其他创作
大纲/内容
是否observer服务器
与自己的投票pk 判断是否要更新投票 然后再发送到其他的机器
leader sid 2
zk1(myid 1)
sid3是leader
zxid 9
判断是否有过半的机器收到相同的投票
sid 2 zxid 0
zk3(myid 3)
zxid 10
zxid9
开始投的是 zxid 10 别的节点传输过来的值是 zxid 9 不需要投票
投出zxid 10
N
sid 3 zxid 0
Y
优先检查ZXID,ZXID较大者优先为Leader如果ZXID相同,检查SID,SID较大者优先为Leader(容器启动的时候zxid相同 所以选举sid大的 myid3为leader)
leader sid3
重新投票
某个投票达到一半的要求,则认为该投票提出者可以成为Leader
选举中心
zxid10是leader
开始投的是 zxid 9 别的节点传输过来的值是 zxid10 需要投票 投出zxid10
开始投的是自己sid3 别的节点传输过来的值是sid2 3大于2所以不需要要更新自己的投票
zk2(myid 2)
服务启动的时候投票
状态变更成looking
不做任何改变
当Leader宕机后
有
开始投的是自己sid2 别的节点传输过来的值是sid1 2大于1所以不需要更新自己的投票 sid2
leader sid1
zxid 10
sid3
开始投的是自己sid1 别的节点传输过来的值是sid3 3大于1所以要更新自己的投票sid3
sid2
运行时的投票
判断投票有效性,包括验证是否是来自Looking状态的服务器
sid 1 zxid 0
0 条评论
下一页