Zookeeper3.5.7版本——选举机制(非第一次启动)

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper3.5.7版本——选举机制(非第一次启动)相关的知识,希望对你有一定的参考价值。

目录

一、ZooKeeper集群中哪些情况会进入Leader选举

  • ZooKeeper集群服务器初始化启动时,进入Leader选举。

  • ZooKeeper集群服务器运行期间无法和Leader保持连接时,进入Leader选举。例如:下图中服务器5挂掉之后,无法与Leader保持连接时。

二、当一台机器进入Leader选举流程时,当前集群的两种状态

2.1、集群中本来就已经存在一个Leader

  • 对于已经存在Leader的情况,机器试图去选举Leader时,会被告知当前服务器的Leader信息,对于该机器(即服务器5)来说,仅仅需要和Leader机器建立连接,并进行状态同步即可。

2.2、集群中确实不存在Leader

  • 假设ZooKeeper由5台服务器组成,SID分别为1、2、3、4、5,ZXID分别为8、8、8、7、7,并且此时SID为3的服务器是Leader。某一时刻,3和5服务器出现故障,因此开始进行Leader选举。

  • SID为1、2、4的机器投票情况

    服务器EPOCHZXIDSID
    服务器1181
    服务器2182
    服务器3174
  • 选举Leader规则

    ①EPOCH(即每个Leader任期的代号)大的直接胜出

    ②EPOCH相同,事务id(即ZXID)大的胜出

    ③事务id相同,服务器id(即SID)大的胜出

三、Zookeeper中的一些概念了解

3.1、SID

  • SID服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致

3.2、ZXID

  • ZXID事务ID。用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关。

3.3、Epoch

  • Epoch每个Leader任期的代号。没有Leader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加

以上是关于Zookeeper3.5.7版本——选举机制(非第一次启动)的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper3.5.7版本——Zookeeper的概述工作机制特点数据结构及应用场景

Zookeeper3.5.7版本——集群启动停止脚本

Zookeeper3.5.7版本——单机部署(linux环境-centos7)

Zookeeper3.5.7版本——集群部署(linux环境-centos7)

Zookeeper3.5.7版本——客户端 API 操作(代码示例)

Zookeeper3.5.7版本——客户端命令行操作(节点类型)