博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Zookeeper】——Leader选举
阅读量:2821 次
发布时间:2019-05-13

本文共 636 字,大约阅读时间需要 2 分钟。

一、选举步骤

1、初始化Leader选举

a、根据自身的SID(服务器ID)、最新的ZXID和当前的服务器epoch来生成一个初始化投票

b、根据zoo.cfg中的配置,创建Leader选举算法

c、启动Leader选举端口的监听,等待集群中其他服务创建连接

2、注册JMX服务

3、检测当前服务器状态

4Leader选举

选举过程:集中所有机器,互相之间相互投票,选举产生最合适的机器成为Leader,其余成为Follower或者是Observe

选举算法:集群中哪个机器的数据越新(通常根据每个服务器处理过的最大ZXID来比较确定其数据是否更新),越可能成为leader。如果集群中所有的机器处理ZXID一致的话,SID最大的服务器成为Leader

 

 

具体Leader选举流程

 

1、每个server会发出一个投票

2、接收来自各个服务器的投票

每个服务器都会接收来自其他服务器的投票,并判断投票的有效性,检查投票是否来自looking状态的服务器。

3、处理投票

4、统计投票

5、改变服务器状态

followerfollowing

leaderleading

 

如果leader宕机后,所有的服务的状态都会变成looking

 

 

名词解释:

 

SID(服务器ID):

是一个数字,用来唯一标识一台Zookeepermyid的值一致。

 

ZXID(事务ID

用来唯一标识一次服务器状态的变更。在某一时刻,集群中每台机器的ZXID值不一定全都一致。

 

VOTE(投票)

转载地址:http://qgzhd.baihongyu.com/

你可能感兴趣的文章
知道Mysql中事务ACID的原理吗?
查看>>
如何在Redis中查找大key
查看>>
Cron表达式语法详解
查看>>
Redis 数据结构
查看>>
详解 JVM Garbage First(G1) 垃圾收集器
查看>>
redis安装
查看>>
关于T4模板中,这Mysql.Data引用不成功的问题解决方案
查看>>
MySQL 5.7 update误操作后进行数据恢复
查看>>
MySQL数据库的备份及恢复
查看>>
未能成功创建对应的DAL对象,请在BLL业务类构造函数中调用base.Init(**,**)方法,如base.Init(this.GetType().FullName的解决方案
查看>>
什么是RPC
查看>>
解决: 未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Data,
查看>>
SQLServer数据库优化与管理——等待篇
查看>>
SQLServer数据库优化与管理——锁,阻塞,死锁篇
查看>>
SQLServer数据库优化与管理——TempDB
查看>>
SQLServer数据库优化与管理——工具定位瓶颈
查看>>
PLC通信组件通讯源代码
查看>>
Node JS启动webserver服务
查看>>
SQL SERVER死锁的追踪和处理
查看>>
python读取合并单元格并拆分合并单元格写出
查看>>