【ZooKeeper Notes 24】Leader选举杂记1

简介:

无论使用哪种Leader选举方法,一个机器要想成为Leader,都必须具备以下两点:

- Leader一定是所有机器中zxid最新的。

- 集群中必须大于等于quorum台机器同意。


当一个Leader被选出后,那么其余的机器都会和这个机器来连接上,并开始同步状态。如果一个Follower落后的状态过多的话,那么就会将整个snapshot同步给他。


新的Leader会根据当前最大的zxid来确定下次开始的zxid。当所有的Follower已经和Leader保持同步之后,Leader会向所有的Follower发出“NEW_LEADER”的提议,一旦过半的机器接受了这个提议,

也就是说这个提议能够被提交,接下去Leader才被真正激活,并开始对外服务:开始接收新的请求并处理。


这个算法听起来有点复杂,但实际上,只要遵守一下5点就可以选出Leader

- Follower在和Leader保持同步之后,就会对“NEW_LEADER”提议响应ACK。

- A follower will only ACK a NEW_LEADER proposal with a given zxid from a single server.

- 一旦集群中已经有过半的机器响应了ACK, 那么Leader就会提交“NEW_LEADER”提议

- 一旦“NEW_LEADER”已经被提交,也就是说,Leader选举完毕,Leader确定后,之后Follower就会提交所有来自Leader的状态变更。

- 在“NEW_LEADER”提议被提交之前,也就是说在完成Leader选举之前,Leader将不再接收任何来自客户端的任何请求。


基于以上的5个规则,即使在Leader选举的时候出现问题,也不会有事。因为只要“NEW_LEADER”提议没有被过半的机器接受,那么就不会提交。因此,在这种情况下,剩下的所有机器会开始新一轮的Leader选举。




本文转自 nileader 51CTO博客,原文链接:http://blog.51cto.com/nileader/982368,如需转载请自行联系原作者
相关文章
|
消息中间件 分布式计算 算法
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(上)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
1111 0
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
312 1
|
分布式计算 负载均衡 算法
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
216 1
|
存储 负载均衡 算法
分布式-Zookeeper-Master选举
分布式-Zookeeper-Master选举
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
276 0
|
存储 数据库
zookeeper 集群环境搭建及集群选举及数据同步机制
zookeeper 集群环境搭建及集群选举及数据同步机制
447 2
|
监控 算法 网络协议
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(下)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
235 1
|
6月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1