zk选举过程

zk集群的运行模式

zk选举过程

1.名词解释:

client:使用zk集群服务的客户端

leader:zk集群真正对外服务的机器,一个zk集群只有一台leader服务器

flower:zk集群中除Leader服务器的其他服务器

zk集群中每个机器都是通过tcp实现连接,通过心跳的机制检测服务是否正常

2.Leader选举

在zk集群运行的过程中,免不了会出现集群节点挂掉的情况

集群节点挂掉分为两种情况1.flower节点挂掉 2.leader节点挂掉

flower节点挂掉后不会对集群产生影响,还是通过leader节点对外服务

leader节点挂掉后就会发生leader选举

选举的过程分为四步

1)变更状态

leader节点挂掉后,所有flower节点将自己从FLOWING状态转为LOOKING状态

2)每个server节点发起投票

投票内容为(myid,zxid)

3)接收每个节点发来的投票

集群中每台机器都会接收到其他机器的投票信息,首先会判断投票的有效性,是否是本轮投票,是否来自LOOKING状态的机器

4)处理投票

优先检查ZXID,ZXID较大的优先作为LEADER

如果ZXID相同的话,那么就比较myid,myid较大的作为leader

5)统计投票信息

每次投票后会统计所有投票,判断是否有过半的机器收到了相同的投票信息

6)改变服务状态

一旦确定了Leader,Leader服务器会将自身状态改为LEADING,而fllower会降自己的状态改为FLLOWING

名词解释:

SID:服务器id

就是配置在myid文件中的整型数字,要求集群中唯一

ZXID:事务id

用来标识一次服务器状态的变更,在某一个时刻,不同机器的zxid可能是不同的

VOTE:投票

Leader选举

QUORUM:过半机器数