zookeeper选举机制简介说明
集群节点中状态
leader:领导者 master主节点 follower:跟随者 从节点slave observer:观察者 特殊的从节点 不参与主节点选举 只提供读操作 looking:是一个临时状态 在集群选举master过程中 所有的follower节点都会去竞选master 集群中必须有主节点,否则无法正常工作 所以在没有主节点时就会发生选举 以下三条是一些概念: 1.Server id:服务器ID 2.Zxid:事务ID 3.Epoch:逻辑时钟
2.集群中的选举机制
谁的票数多,谁就是老大,就是主节点。
3.什么情况下需要进行选举
1.集群中的从节点数量不足以通过半数校验,主节点会自己挂掉,选举新的主节点 假如有5台服务器,主节点可以收到5张票,假如有3个slaver挂了,就剩一个主节点,一个从节点,测试选举没有超过一半,则master 自杀 2.集群启动时,需要进行主节点的选举(五台机器) 每个节点都有自己携带的唯一id
1.启动第一台机器1,发起选举,自己投票给自己,票数不过半,选举失败,服务器1保持looking状态。 2.启动第二台机器2,发起选举,1和2都先给自己投一票,1发现2 比自己的id大,所以把自己的票也投给服务器2,此时服务器2有2票,服务器1有0票,票数不过半,选举失败。 服务器1,2均保持looking 状态 3.启动第三台机器3,发起选举,1,2,3都先给自己投上一票,但是1和2发现服务器3的id比自己大,所以把自己的票都投给服务器3,次数服务器3票数过半,选举成功,服务器3当选leader 服务器1,2变为follower,服务器3变为leader. 此时已经选举成功了,后面两台机器的选举不会改变结果 4.启动第四台机器 发起一次选举,此时服务器1,2,3是folllower 状态,不会更改选票信息 此时:服务器3为3票,服务器4为1票。服务器4少数服从多数,更改选票信息为服务器3。 服务器4更改状态为follower 5.启动第五台机器 与服务器4一样投票给3,此时服务器3一共5票,服务器5为0票。 服务器5更改状态为follower
3.集群正常启动,leader因为故障停止服务
此情景中每个节点都有自己的myid和zxid,选举规则就是谁的数据最新鲜,其他人就会投票给他 zxid是事务id,事务id越大,代表数据越大,代表当前节点存储的数据越新 1.第一次投票都会投给自己 2.然后每台机器都会把自己的票发给其他机器,如果发现了其他机器的zxid比自己大,将会重新投票,并都会投给xzid最大的那台机器。此后,zxid最大的服务器就会当选为leader。
4.加入了新的follower
此时发生选举并不会影响主节点的改变
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。