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

    zookeeper集群角色

    leader

    leader是zookeeper集群的核心。

    1. 事务请求的唯一调度者和处理者,保证集群事务处理的顺序性
    2. 集群内部各个服务器的调度者

    follower

    1. 处理客户端非事务请求,以及转发事务请求给leader服务器
    2. 参与事务请求提议(proposal)的投票(客户端的一个事务请求,需要半数服务器投票通过以后才能通知leader commit; leader会发起一个提案,要求follower投票)
    3. 参与leader选举的投票

    observer

    观察zookeeper集群中最新状态的变化并将这些状态同步到observer服务器上

    增加observer不影响集群中事务处理能力,同时还能提升集群的非事务处理能力

    zookeeper的集群组成

    zookeeper一般是由 2n+1台服务器组成

    leader选举

     

    leaderElection/AuthFastLeaderElection/FastLeaderElection

    QuorumPeer   startLeaderElection

    源码地址:https://github.com/apache/zookeeper.git

    需要的条件: jdk 1.7以上 、ant 、idea

    FastLeaderElection

    serverid : 在配置server集群的时候,给定服务器的标识id(myid)

    zxid  : 服务器在运行时产生的数据ID, zxid的值越大,表示数据越新

    Epoch: 选举的轮数

    server的状态:Looking、 Following、Observering、Leading

    第一次初始化启动的时候: LOOKING

    1. 所有在集群中的server都会推荐自己为leader,然后把(myid、zxid、epoch)作为广播信息,广播给集群中的其他server, 然后等待其他服务器返回
    2. 每个服务器都会接收来自集群中的其他服务器的投票。集群中的每个服务器在接受到投票后,开始判断投票的有效性
      1. 判断逻辑时钟(Epoch) ,如果Epoch大于自己当前的Epoch,说明自己保存的Epoch是过期。更新Epoch,同时clear其他服务器发送过来的选举数据。判断是否需要更新当前自己的选举情况
      2. 如果Epoch小于目前的Epoch,说明对方的epoch过期了,也就意味着对方服务器的选举轮数是过期的。这个时候,只需要讲自己的信息发送给对方
  • 相关阅读:
    第8章 传输层(4)_可靠传输
    第8章 传输层(3)_TCP协议
    第8章 传输层(2)_UDP协议
    第8章 传输层(1)_TCP/UDP协议的应用场景
    【Sqlsever系列】日期和时间
    【SqlServer系列】聚合函数
    【Sqlserver系列】CAST和CONVERT
    【SqlServer系列】AS的用法
    【博客目录】SqlServer篇
    【SqlServer系列】集合运算
  • 原文地址:https://www.cnblogs.com/yintingting/p/6576580.html
Copyright © 2011-2022 走看看