zoukankan      html  css  js  c++  java
  • zookeeper选举机制

    1.选举机制

    • 1 所谓zookeeper选举机制是指在zookeeper集群中,
    • 2 有leader角色,有fellower角色,是如何进行角色分配的;
    • 3 zookeeper默认的算法是FastLeaderElection 采用投票数大于半数则胜出

    2.概念

    2.1.服务器id

    • 1 1.比如有三台服务器,编号分别为1,2,3;
    • 2 2.编号越大在选择算法中的权重越大

    2.2.选举状态

    • 1 1.LOOKING 精选状态   
    • 2 2.FOLLOWING 随从状态 同步leader状态 参入投票
    • 3 3.OBSERVING 观察状态 同步leader状态 不参入投票
    • 4 4.LEADING 领导者状态

    2.3.数据ID

    • 1 1.服务器中存放的最新数据version
    • 2 2.值越大说明数据越新,在选举算法中数据越大权重越大

    2.4.逻辑时钟

    • 1 1.逻辑时钟也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的;
    • 2 2.每投完一次票这个数据就会增加,然后与接受到的其他服务器返回的投票信息中的数值相比; 根据不同的值做出不同的判断;

    3.全新集群选举

    3.1.概念
    1.一个zookeeper集群刚刚搭建起来,没有任何数据,他的选举,就叫全新集群选举

    3.2.样例

    假设目前有5台服务器,每台服务器均没有数据,他们的编号分别是1,2,3,4,5,
    按照编号一次启动,选举过程如下:

    3.2.1.服务器1启动

    • 1 1.服务器1启动,给自己投票,然后发投票信息,由于其他机器还没有启动, 所以服务器器1收不到反馈信息,服务器1的状态一致属于Looking;

    在这里插入图片描述

    3.2.2 服务器2启动

    • 1 1.服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出, 票数为1+1(其中一票来自服务器1的那票)但此时投票数没有大于半数, 所以两个服务器的状态依然是Looking;

    在这里插入图片描述

    3.2.3.服务器3启动

    • 1 1.服务器3启动,给自己投票,同时与之前启动的服务器1,2,交换信息,由于服务器3的编号最大, 所以服务器3胜出(自己的1票+前面两个的2票),此时投票数正好是大于半数,所以服务器3称 为领导者服务器1,2称为小弟

    在这里插入图片描述

    3.2.4.服务器4启动

    • 1 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大, 但之前服务器3已经胜出,所以服务器4只能为小弟;

    3.2.5.服务器5启动

    • 1 后面的逻辑同服务器4称为小弟

    4.非全新集群选举

    1.对于运行正常的zookeeper集群,中途有机器down掉,需要重新选举时,选举过程中就需要加入数据id,服务器id和逻辑时钟
    2.数据id:数据新的version就大,数据每次更新都会来更新version:
    3.服务器id:就是我们配置的myid中的值,每个机器一个
    4.逻辑时钟:这个值从0开始递增,每次选举对应一个值,如果在同一次选中,这个值是一致的;
    逻辑时钟越小,说明该服务器有可能存在选举的过程中,该服务down机等故障,说明该机器不够稳定;

    这样选举的标准就变为

    1.逻辑时钟小的选举结果被忽略,重新投票
    2.同一逻辑时钟后,数据id大的胜出
    3.数据id相同的情况下,服务器id大的胜出, 根据上面的规则选出leader

    原文链接:https://blog.csdn.net/u014636209/article/details/85521836

  • 相关阅读:
    POJ 1141 括号匹配 DP
    881. Boats to Save People
    870. Advantage Shuffle
    874. Walking Robot Simulation
    文件操作
    861. Score After Flipping Matrix
    860. Lemonade Change
    842. Split Array into Fibonacci Sequence
    765. Couples Holding Hands
    763. Partition Labels
  • 原文地址:https://www.cnblogs.com/comw/p/14553260.html
Copyright © 2011-2022 走看看