【ZooKeeper Notes 24】Leader选举杂记1

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

无论使用哪种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,如需转载请自行联系原作者
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5月前
|
存储 负载均衡 算法
深入浅出Zookeeper源码(七):Leader选举
对于一个分布式集群来说,保证数据写入一致性最简单的方式就是依靠一个节点来调度和管理其他节点。在分布式系统中我们一般称其为Leader。
169 6
|
4月前
|
消息中间件 分布式计算 算法
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(上)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
55 0
|
8月前
|
存储 算法 Java
准备跳槽必看的这道【Java面试题】:谈谈你对Zookeeper 选举原理的理解
一位工作了 7 年的程序员,最近在面试时被问到一个关于Zookeeper的问题。因为平时很少研究,所以面试的时候只能一直说:不知道,不知道,不知道。当时,他感觉很尴尬,面试还没结束,就已经知道应该被Pass了。于是又来问我,希望我能分享一期这样的视频。
68 2
|
6月前
|
算法 Linux
分布式系列教程(14) -分布式协调工具Zookeeper(集群选举策略)
分布式系列教程(14) -分布式协调工具Zookeeper(集群选举策略)
58 0
|
6月前
|
Java 开发工具 Maven
分布式系列教程(12) -分布式协调工具Zookeeper(选举与哨兵机制)
分布式系列教程(12) -分布式协调工具Zookeeper(选举与哨兵机制)
47 0
|
4月前
|
监控 算法 网络协议
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(下)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
35 1
|
9月前
|
存储 负载均衡 算法
|
21天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
32 2
|
4月前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
70 0
|
2月前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
90 1