zookeeper选举机制(四种)
目录1.首先要知道集群中节点的状态2.集群中的选举机制3.什么情况下需要进行选举1..集群中的从节点数量不足以通过半数校验,主节点会自己挂掉,选举新的主节点2.集群启动时,需要进行主节点的选举(五台机器)3.集群正常启动,leader因为故障歇菜了4.加入了新的follower1.首先要知道集群中节点的状态leader,领导者,也就是master主节点,follower,跟随者,也就是从节点sla
目录
1..集群中的从节点数量不足以通过半数校验,主节点会自己挂掉,选举新的主节点
1.首先要知道集群中节点的状态
(1)Server id:服务器ID
(2)Zxid:事务ID
(3)Epoch:逻辑时钟
2.集群中的选举机制
3.什么情况下需要进行选举
1.集群中的从节点数量不足以通过半数校验,主节点会自己挂掉,选举新的主节点
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
更多推荐
所有评论(0)