zoukankan      html  css  js  c++  java
  • zookeeper的leader选举

    一、概念

    1.1 zookeeper集群的建立是为了保证数据同步,为保证数据同步,需有一个leader来管理。

    1.2 zookeeper集群中服务器的角色

    1)leader:领导者

    2)follower:跟随者,进行对leader的数据同步,参与leader的选举

    3)observer:观察者,不参与leader的选举

    1.3 zookeeper集群中服务器的状态

    1)leading:领导者leader的状态

    2)following:跟随者follower的状态

    3)looking:当需要选举leader时,所有非observer服务器的状态均转换为looking状态,进行leader选举

    4)observing:观察者observer的状态

    1.3 需要选举leader的场景

    1)服务器初始化启动

    2)服务器运行期间无法与leader保持连接

    3)超过半数的follower发生宕机

    1.4 专有名词解释

    1)myid(sid):服务器编号,在服务器的myid的文件里有注明

    2)zxid:服务器的事物id

    二、 选举原则

    假设有5台服务器

    1)服务器初始化启动 ,此时所有服务器的zxid均为0,此时只需选择sid最大的服务器作为leader即可,这里选择5号

    2)在服务器运行期间发生leader选举:

          假设5号为leader,此时宕机,且其他服务器的(sid,zxid)分别为(1,89),(2,92),(3,87),(4,88)

         ①所有非follower服务器将自己状态转换following为looking

         ②第一轮投票,所有服务器都默认将自己作为leader推荐人分别将自己的(sid,zxid)发送给其他的服务器。此时所有服务器的投票状态分别为:

             1号:(1,89)

             2号:(2,92)

             3号:(3,88)

             4号:(4,88)

          ③第二轮投票,所有服务器都接受到其他服务器的投票状态,并与自己的投票状态,比较过程如下:

                 step1:首先比较zxid,选择zxid最大的服务器(zxid越大,说明数据越新,被选举为leader的权重越大)

                 step2:若zsid相同,则继续比较sid,选择sid大的(sid越大,被选举为leader的权重越大)

                 第二轮的投票状态分别为:

                1号:(2,92)

                2号:(2,92)

                3号:(2,92)

                4号:(2,92)

                step3:当投票结构中某个服务器的得票数高于总票数的一半,则被选举为leader

         ④当新的leader被选举出来后,所有服务器要变更自己的状态

              1)leader(looking->leading)

              2)follower(looking->follwing)

  • 相关阅读:
    Atitit.Java exe bat  作为windows系统服务程序运行
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结
  • 原文地址:https://www.cnblogs.com/mercuryji/p/zookeeper_selectleader.html
Copyright © 2011-2022 走看看