Zookeeper的选举算法和脑裂问题深度讲解
ZK介绍 ZK = zookeeper ZK 是微服务解决方案中拥有服务注册发现最为核心的环境,是微服务的基石。作为 服务注册发现模块 ,并不是只有ZK一种产品,目前得到行业认可的还有:Eureka、Consul。 这里我们只聊ZK,这个工具本身很小zip包就几兆,安装非常傻瓜,能够支持集群部署。 官网地址: https://zookeeper.apache.org/ 背景 在集群环境下ZK的leader&follower的概念,已经节点异常ZK面临的问题以及如何解决。ZK本身是java语言开发,也开源到Github上但官方文档对内部介绍的很少,零散的博客很多,有些写的很不错。 提问: zookeeper选举算法中的过半票数才提供正常服务,这是什么逻辑? ZK集群单节点状态(每个节点有且只有一个状态),ZK的定位一定需要一个leader节点处于lading状态。 looking:寻找leader状态,当前集群没有leader,进入leader选举流程。 following:跟随者状态,接受leading节点同步和指挥。 leading:领导者状态。 observing:观察者状态,表名当前服务器是observer。 过半选举算法 ZK中有三种选举算法,分别是LeaderElection,FastLeaderElection,AuthLeaderElection