Zookeeper 中的领导者选举的流程是怎样的?

对于 Zookeeper 集群,整个集群需要从集群节点中选出一个节点作为 Leader ,大体流程如下:
1.集群中各个节点首先都是观望状态,一开始都会投票给自己,认为自己比较适合作为 leader
2.然后相互交互投票,每个节点会收到其他节点发过来的选票,然后 pk ,先比较 zxid , zxid 大者获胜, zxid 如果相等则比较 myid , myid 大者获胜
3.一个节点收到其他节点发过来的选票,经过 PK 后,如果 PK 输了,则改票,此节点就会投给 zxid 或 myid 更大的节点,并将选票放入自己的投票箱中,并将新的选票发送给其他节点4.如果 pk 是平局则将接收到的选票放入自己的投票箱中
5.如果 pk 赢了,则忽略所接收到的选票
6.当然一个节点将一张选票放入到自己的投票箱之后,就会从投票箱中统计票数,看是否超过一半的节点都和自己所投的节点是一样的,如果超过半数,那么则认为当前自己所投的节点是 leader
7.集群中每个节点都会经过同样的流程, pk 的规则也是一样的,一旦改票就会告诉给其他服务器,所以最终各个节点中的投票箱中的选票也将是一样的,所以各个节点最终选出来的 leader 也是一样的,这样集群的 leader 就选举出来了

你可能感兴趣的:(java面试总结,java,面试)