Zookeeper的脑裂问题及解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper的脑裂问题及解决方案相关的知识,希望对你有一定的参考价值。

参考技术A 先抛出一个问题:Zookeeper3.4.6版本是否存在脑裂问题?

一,什么是脑裂

什么是脑裂呢?

下图是一个正常的Zookeeper集群,由7个节点组成。其中有1个Leader A和6个Follower。

当网络发送故障时,Follower D、Follower E、Follower F从集群中断开了,然后这3个节点认为Leader挂了,然后重新选了1个Leader,Follower E变成了Leader B,如下图,这就是脑裂。

上图有可能存在一个问题,因为Zookeeper集群的一个特性是:过半节点存活可用。如何理解。网上有一个说法:有100个节点组成的集群,如果被网络分割成50和50两个分区,那么整个集群是不可用的,因为不满足过半节点存活可用的原则。

二,Zookeeper3.4.6版本是否存在脑裂问题

首先,Zookeeper3.4.6不存在脑裂的问题。

为什么呢?

Zookeeper3.4.6的选举算法是FastLeaderElection,该算法的规则是投票超过半数的服务器才能当选为Leader。这个算法能够保证leader的唯一性。

架构实践分布式系统的“脑裂”到底是个什么玩意?

目录

 

什么是脑裂?

脑裂的避免方案

Zookeeper集群中的脑裂场景

过半机制

ZooKeeper集群节点为什么要部署成奇数?

解决脑裂的常见方法

方法一,Quorums(法定人数)方式

方法二,添加心跳线

以上是关于Zookeeper的脑裂问题及解决方案的主要内容,如果未能解决你的问题,请参考以下文章

AIX下解决POWERHA的脑裂问题

Redis 的脑裂现象和解决方案

Redis 的脑裂现象和解决方案

架构实践分布式系统的“脑裂”到底是个什么玩意?

redis集群(主从)脑裂及解决方案

架构实践分布式环境脑裂与Lease机制具体是什么?