• zookeeper选举


    什么时候开始进行选举

    1.服务器初始化启动的时候
    2.服务器运行期间连接不上leader的时候

    初始化选举过程

    进行leader选举至少需要两台服务器,我们这里举例为5台服务器(1,2,3,4,5)
    1.启动服务器1,第一次投票都先投给自己[1,0]。投票内容[myid,zxid],myid为服务器的唯一标识,zxid
    是事物请求的唯一标识,从0开始,选举出leader之后由leader分配,zxid由两部分组成,高32位记录事物请求所属的轮次
    ,低32位是请求次数。此时服务器1的支持率没有达到半数以上,保持Looking状态。
    2.启动服务器2,投第一票[2,0],然后与服务器1交换投票结果。
    3.服务器1收到服务器2的投票结果以后首先检查轮询次数是否一致,然后检查服务器状态是否为Looking状态。
    4.检查通过开始PK,首先比较zxid,都为0,(如果不同, 大的胜出),然后比较myid,大的胜出。
    5.服务器1更新投票结果为[2,0],服务2pk之后胜出,无需更新投票结果,服务器2拿到两票支持,支持率没有达到半数以上,继续Looking。
    6.启动服务器3,投第一票[3,0],然后与服务器1和2交换投票结果,pk完成后,服务器1投票结果[3,0],服务器2投票结果[3,0],服务器3投票结果[3,0],此时,支持率达到半数以上,服务器3当选为leader。状态为Leading,服务器1和2分别为Following
    7.启动服务器4和5,虽然myid大于3,但是由于3已经成为leader,他们就自动跟随了。

    服务器运行时选举过程

    1.leader挂了之后,follower更新状态为Looking,开始进行选举leader
    2.开始第一轮投票,跟启动时一样,都投给自己
    3.接收其他服务器的投票,检查有效性进行pk,与启动时一样。运行时服务器的zxid可能不同,还是大的胜出
    4.统计投票
    5.选出leader,更新状态(Leading和Following)

    服务器状态

    LOOKING:寻找leader的状态
    LEADING:leader领导者状态
    FOLLOWING:跟随着状态
    OBSERVING:观察者状态

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    关于http
    事件循环机制
    关于常问的输入URL到看到页面发生的全过程
    浅拷贝
    基础知识链接
  • 原文地址:https://www.cnblogs.com/Smilence1024/p/8534255.html
Copyright © 2020-2023  润新知