栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

简述zookeeper集群选举机制(zookeeper的选举)

简述zookeeper集群选举机制(zookeeper的选举)

上篇分析了ZK的搭建和基本操作,此次我们深入分析其原理,包括扩展性、可用性、一致性、可靠性、时序性等等。

1、扩展性原理:

此处原理参考:参考原理 

2、可靠性原理:

3、客户端数据写入过程:

 3.1、ClientA发起创建节点,数据传给FollowerA从节点,FollowerA没有创建权限,随后把数据经过2create(ooxx),传递给Leader主节点,主节点给其返回over-ok。

3.2、之后主节点开始两阶段提交,首先主节点向所有从节点发送log日志,如4-1:log,每个从节点均给主节点返回OK。

3.3、然后进入第二阶段,主节点向所有从节点以广播的形式写入数据,通知过半(正常情况下都会全部送到),如4-2 write ,成功后各从节点返回OK。

3.4、此后每个节点都有最新的数据,无论客户端请求到哪台服务器,都可以获取到最新的数据。

3.5、 这是在完美情况下的服务状态,如果同步到从节点数据没有过半,或者没有同步等情况,客户端下次取不到数据吗?这类特殊问题我们后期会详细分析。

4、leader挂了之后重新选举的策略:假设刚开始node4是leader突然挂了,剩下三台服务器迅速选出一个新的leader。

 

4.1、第一次启动集群时,所有节点的zxid都是零,参考myid,谁的myid大,谁就被选成leader。

4.2、leader挂了后,从节点开始选新的leader,此时谁的zxid大,谁就被选成leader,如果大家的zxid都一样大,这时就参考谁的myid大,谁就被选成leader。

4.3、比如node3首先发现leader挂了,就会通知node2、node1,由于node3的zxid是7,小于node1    、node2的zxid 8,被驳回。此时node1、node2也迅速给其他节点发起投票,由于他们俩的zxid都是8,只能参考myid,因此选node2为新的leader。

5、服务器命令演示leader选举过程:

5.1、刚开始四台服务器,node4是leader,其余都是从节点。

node4节点挂了:

其余三台迅速选出了新的leader是node3:

 此时如果node3挂了,还剩两台服务,数量没有过半,不能选出新的leader,即两台服务都会变成不可用状态。

其余服务状态: 

node2;

node1:

 但是服务的进程还是有的,只是停止了对外提供服务:

 此时启动node4,集群就立刻变成可用状态:

 并且node2变成了主节点:

 到此,ZK写入和选举策略的原理分享完毕,下一篇我们分析ZK监听的原理和实战,敬请期待!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号