zk 三个节点的情况下,挂掉节点会发生啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zk 三个节点的情况下,挂掉节点会发生啥?相关的知识,希望对你有一定的参考价值。

参考技术A

RT
现在准备做一个实验
现有三个节点,其中GP-1,GP-2为follower,GP-3为leader

先用 ls / 命令 查看当前存在的节点

现将GP-2中的zk关闭
此时在GP3上创建一个新的节点 create /zk "nodetest"

此时的GP-1中,新创建的节点被同步了,如下图所示

此时的GP-1还是follwer,而Gp3还是leader

首先我们将Gp-2重新启动,恢复现场
此时还是一样 Gp-1 GP-2是follower GP3是leader

然后我们将GP3关闭

而后,发现GP-2变成了leader

然后我们在刚才的zk节点下新建一个子节点

最后发现同步到GP-1了

(by the way,在此时关闭Gp-1,只剩一个节点时,GP-2直接报 拒绝连接 (Connection refused) zk服务就不可用了)

最后我们来实验只有两个节点同时启动的情况下
一开始会报路由错误,即CP3没有启动

然而,过了一会会,GP2变成leader了。。。。

综上,并不是说两个节点不能够使用,而是两个节点的情况下,只有收到半数以上节点的成功反馈就变成了只有收到全部节点的成功反馈,如果再挂掉一个就系统不可用
另外,网上说偶数个节点还是可能出现票数相同的情况,但根据zk的选举机制来看,概率很低
如果要出现偶数个节点票数相同的话,意味着有两个节点myId也是一样的,这其实应该是不可能的

以上是关于zk 三个节点的情况下,挂掉节点会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

redis集群搭建方法

Eureka系列Eureka自我保护机制

004 watch机制

Eureka的自我保护机制

springcloud Eureka自我保护机制

Zookeeper使用--Java API(转)