Zookeeper的脑裂问题及解决方案

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


一,什么是脑裂


什么是脑裂呢?


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

图片发自简书App


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


图片发自简书App


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


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


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

为什么呢?

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容