简单总结下leader选举 就是服务器先起2181端口,然后各个机器自己构建自己的票据,epoch,zxid,myid。所有机器构建好了之后,myid小的节点去链接myid大的机器,并且把自己的票据发过去,那端接收到了数据后会进行一个票据的比较,如果自己的票据没有人家发过来的大那么就把人家的票据写成自己的。反之发送自己的。他们之间的通信采用的是socket。第二轮甚至多轮后如果这时候的票据
过半了(某个机器的ID),那么他就是leader。选举完之后成为flower的节点要去主动连接leader,为数据同步做准呗。源码入口处是ZooKeeperServerMain.java的Main方法。感兴趣的可以自己研究看看。
这个票据比较的规则是先比较epoch,在比较zxid,在比较myId。
zookeeper实现leader选举的基本原理
最新推荐文章于 2022-09-03 10:09:15 发布