《Zookeeper》源码分析(十三)之 投票管理器

目录

  • QuorumVerifier
    • 数据结构
    • 构造函数
    • containsQuorum()
  • SyncedLearnerTracker
    • 功能

QuorumVerifier

QuorumVerifier用于保存集群选举服务器信息以及选举期间判断投票是否过半,它的创建过程如下:
《Zookeeper》源码分析(十三)之 投票管理器_第1张图片

默认创建的是它的实现类QuorumMaj

数据结构

《Zookeeper》源码分析(十三)之 投票管理器_第2张图片

构造函数

《Zookeeper》源码分析(十三)之 投票管理器_第3张图片

从参数读取server.开头的信息创建QuorumServer,每一个QuorumServer代表集群中的一个服务器,它的数据结构以及构造函数如下:
《Zookeeper》源码分析(十三)之 投票管理器_第4张图片

containsQuorum()

QuorumVerifier中用于判断过半的方法是containsQuorum()
在这里插入图片描述

SyncedLearnerTracker

在选举Leader的时候,SyncedLearnerTracker用来判断推举的Leader是否拥有足够的票数,它的构造函数如下:
《Zookeeper》源码分析(十三)之 投票管理器_第5张图片

功能

在判断投票是否过半的时候会先调用addQuorumVerifier()方法添加QuorumVerifier,在收到投票信息的时候会调用addAck()方法保存投票,然后调用hasAllQuorums()判断是否获取过半的票数,如果过半则选举成功,否则继续选举投票。
《Zookeeper》源码分析(十三)之 投票管理器_第6张图片

你可能感兴趣的:(Zookeeper,zookeeper,分布式,云原生)