开发者学堂课程【大数据 ZooKeeper 快速入门: ZooKeeper 集群选举:概念&全新集群选举】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/549/detail/7572
ZooKeeper 集群选举:概念&全新集群选举
目录:
一、zookeeper 选举机制概念
二、全新集群选举
课时概要:下面进行学习 zookeeper 选举机制,所谓选举机制就是在集群当中有 leader 角色和 follower 角色,通过选举来决定 Leader
一、Zookeeper 选举机制
zookeeper 默认的算法是 FastLeaderElection,采用投票数大于半数则胜出的逻辑。
1.概念
(1)服务器 ID
搭建 zookeeper 集群配置 myID,与之对应,数值越大,权重越大
比如有三台服务器,编号分别是1,2,3。
编号越大在选择算法中的权重越大。
(2)选举状态
在集群选举时,有如下状态:
LOOKING,竞选状态。
FOLLOWING,随从状态,同步leader 状态,参与投票。OBSERVING,观察状态,同步 leader 状态,不参与投票。
LEADING,领导者状态。
(3)数据 ID
服务器中存放的最新数据 version。
值越大说明数据越新,在选举算法中数据越新权重越大。逻辑时钟,值越大数据越新
(4)逻辑时钟
也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。
2. 选举机制流程
通俗来讲,分为两种选举:全新集群和非全新集群
全新集群选举即任何数据都没有即为全新集群
二、全新集群选举
1. 概述
全新集群选举:假设现在有5台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动。过程如下:
(1)服务器 1 启动,给自己投票,然后发投票信息给其他服务器,由于其他服务器没有启动,所以它收不到反馈信息,但是由于投票还没有到达半数(服务器 1 怎么知道一共有多少台服务器参与选举呢, 那是因为在zk配置文件中配置了集群信息,所有配置了3888端口的服务器均会参与投票,假设这5台都参与投票,则超过半数应为至少3台服务器参与投票。),所以服务器 1 的状态一直处于 LOOKING。
(2)服务器 2 启动, 给自己投票,然后与其他服务投票信息交换结果, 由于服务器 2 的编号大于服务器 1, 所以服务器 2 胜出,但是由于投票仍未到达半数,所以服务器 2 同样处于 LOOKING 状态。
(3)服务器 3 启动, 给自己投票,然后与其他服务投票信息交换结果, 由于服务器 3 的编号大于服务器 2,1,所以服务器 3胜出, 并且此时投票数正好大于半数, 所以选举结束,服务器 3 处于LEADING 状态, 服务器 1, 服务器 2 处于 FOLLOWING 状态。
(4)服务器 4 启动, 给自己投票, 同时与之前的服务器 1 ,2,3交换信息,尽管服务器 4 的编号最大,但之前服务器 3 已经胜出,所以服务器 4 只能处于 FOLLOWING 状态。
(5)服务器 5 启动, 同上。FOLLOWING 状态。
2.特点
(1)每个机器都给自己投票
(2)投票时过半,选举结束
五台机器,zookeeper 配置文件修改好之后,启动 zookeeper。
先安装顺序启动,先给自己投票,去比较以下投票结果,自己有一票处于 looking 观望状态;
启动第二台机器依旧给自己投一票,根据启动先后,第二台服务器权重大于第一台服务器,所有第二台的服务器有2票,第三台服务器启动也给自己投一票,然后权重大于前两台,有3票,大于半数直接获胜,称为 Leader,其他的为 following,第四台服务器编号大也不参与投票,因为投票结束。