zookeeper选主流程的疑问

2.1 选主流程
当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。Zk的选举算法有两种:一种是基于basic paxos实现的,另外一种是基于fast paxos算法实现的。系统默认的选举算法为fast paxos。先介绍basic paxos流程:

1 .选举线程由当前Server发起选举的线程担任,其主要功能是对投票结果进行统计,并选出推荐的Server;

2 .选举线程首先向所有Server发起一次询问(包括自己);

3 .选举线程收到回复后,验证是否是自己发起的询问(验证zxid是否一致),然后获取对方的id(myid),并存储到当前询问对象列表中,最后获取对方提议的leader相关信息(id,zxid),并将这些信息存储到当次选举的投票记录表中;

  1. 收到所有Server回复以后,就计算出zxid最大的那个Server,并将这个Server相关信息设置成下一次要投票的Server;

  2. 线程将当前zxid最大的Server设置为当前Server要推荐的Leader,如果此时获胜的Server获得n/2 + 1的Server票数, 设置当前推荐的leader为获胜的Server,将根据获胜的Server相关信息设置自己的状态,否则,继续这个过程,直到leader被选举出来。

通过流程分析我们可以得出:要使Leader获得多数Server的支持,则Server总数必须是奇数2n+1,且存活的Server的数目不得少于n+1.

每个Server启动后都会重复以上流程。在恢复模式下,如果是刚从崩溃状态恢复的或者刚启动的server还会从磁盘快照中恢复数据和会话信息,zk会记录事务日志并定期进行快照,方便在恢复时进行状态恢复。选主的具体流程图如下所示:

问题如下:
1、"当前Server发起选举的线程担任",当前Server是哪一个?还是所有的
2、”获取对方提议的leader相关信息(id,zxid)“ 对方是怎么提议的?此时每个机器只认识自己id,难道都是提自己?因为不是选村长,大家都认识对方能力

实在不明白,求教

3

1个回答

这两个问题也是我想问的

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
详解zookeeper集群选主机制
zookeeper作为分布式协调工具,具有很广泛的应用,zookeeper集群选主机制究竟如何实现?下面来进行分析。 在Zookeeper集群中,主要分为三者角色,而每一个节点同时只能扮演一种角色,这三种角色分别是: (1). Leader 接受所有Follower的提案请求并统一协调发起提案的投票,负责与所有的Follower进行内部的数据交换(同步); (2). Follower 直接为客户...
Zookeeper选主流程和同步流程
Zookeeper的核心是原子广播(Zab:Zookeeper Atomic Broadcast),该机制保证各个Server之间的同步。Zab协议有两种模式,分别是恢复模式和广播模式。 恢复模式:当Leader挂掉或者启动Server时,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server的完成了和leader的状态同步以后,恢复模式就结束了。 广播模式:状态同步保证了Leade...
【Elasticsearch选主流程】
Reference
二、ZAB协议概述与选主流程详解
因编辑原因图片不显示,请戳GitHub原文: https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ ZAB协议 ZAB协议是专门为zookeeper...
死磕Elasticsearch(二)选主流程
文章目录1 选举算法2 相关配置3 流程概述4 流程分析4.1 选举临时Master流程 1 选举算法      elasticsearch的选举算法是基于Bully算法改造的。      Bully是Leader选举的基本算法之一。 它假定所有节点都有一个惟一的ID,该ID对节点进行排序。 任何时候的当前Leader都是参与集群的最高id节点。 该算法的优点是易于实现,但是,当拥有最大 id...
zookeeper的选主过程
Leader选举   Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。 服务器初始化启动。 服务器运行期间无法和Leader保持连接。   下面就两种情况进行分析讲解。 1. 服务器启动时期的Leader选举   在集群初始化阶段,当有一台服务器Server1启动时,该Server1处于Lookin...
Zookeeper自动选主
zookeeper,一个致力于分布式应用程序协调服务的框架。 使用场景包括: 1、配置中心 2、命名服务(RPC的使用场景,Eureka也是个不错的选择) 3、通知协调(基于zk的发布订阅功能) 4、心跳检测 5、Master选举(抢占式,类似redis的setnx,只能创建一个,创建成功的抢占成功) 6、锁 上面很多场景都是基于zk的watcher监听机制,当监听的节点发生变更会...
如何选数据库的疑问
我现在在设计一个自动化系统,里面有一块关于数据库的设计,我最初的考虑是用Access,但是这样一来,历史数据就需要存成文件形式了,因为每天都有好几个历史数据表(文件)会生成,后来有朋友说用SQL Server比较合理,因为Windows读取文件的速度不快,用数据表的形式比较好,但是我有个疑问,我的基本参数表不多,数据量也不大,历史数据有日月年数据,数据量会不小,有SQL Server是不是最好的选择???我对数据库的经验不多,所以不敢贸然决定,怕以后出现问题不好解决。
Zookeeper实现分布式锁和选主
Zookeeper可以用来实现Distributed lock(分布式锁)和leader election(选主)。分布式锁和选主虽然用在不同的场景,但是2者的机制是相同的。
sap主流程
sap主流程<br>sap主流程<br>sap主流程
nginx主流程
nginx主流程
SDWebImage的主流程
SDWebImage提供了UIImageView的分类来实现从网络端下载数据并缓存到内存和磁盘。非常的流行,现在就主流程分析下. 主要的学习链接 :https://www.jianshu.com/p/6183c28df078   SDWebImage有如下特点: 提供了UIImageView和UIButton的分类。以支持加载网络图片并缓存。 一个异步的图片下载器 提供异步的内存和磁盘缓...
zookeeper最基础的一些疑问
非计算机专业,小白一枚,最近刚看zookeeper,以前从未接触过这方面的东西,故有些很基础的问题想问一下各位大虾!n问题一:在windows系统上已经安装好zookeeper,搭建好了伪集群(配了3个Zookeeper 实例),并运行起来nserver.1=127.0.0.1:2887:3887nserver.2=127.0.0.1:2888:3888nserver.3=127.0.0.1:2889:3889n想知道这三个server哪个是leader,哪个是follow和observer,或者怎么配置3个server使之分别成为leader、follow和observer又或者这3个都不是?nn问题二、现在假设我有3个应用,分别为app1,app2和app3,应用之间通过rpc或者rest通信,如果我想把着3个应用部署到zookeeper上面应该怎么弄?是把3个应用部署在同一台server上还是3个分别部署在不同的server或者其他?具体怎么操作?n1、如果3个部署在同一个server上,那么部署在哪一个server上?如果此时的这个server挂掉后zookeeper会怎么处理?n2、如果部署在不同的server上,那么其中的一个server挂掉后zookeeper会怎么处理?nn附,以上一些说法很有可能不正确,望各位大虾看在本人小白的份上勿怪
第三方支付主流程全览
支付公司产品架构一般分为纵层和横层。横层一般为风控、运营管理、商户会员管理、内部erp等系统;纵层主要跟支付业务相关,一般粗略分为业务层、通用层、核心层,由业务层统一提供支付解决方案。此次我主要讲跟支付业务主相关的层即纵层。
ijkPlayer主流程分析
这是一个跨平台的播放器ijkplayer,iOS上集成看【如何快速的开发一个完整的iOS直播app】(原理篇)。 为了学习ijkplayer的代码,最好的还是使用workspace来集成,关于worksapce我有一篇简单介绍iOS使用Workspace来管理多项目。这样可以点击函数名查看源码,也可以设置断点,修改源码测试等等。 ###主架构 每个类型的数据流构建各自的packet和frame缓...
ETL主流程(书摘备查)
-
Spring IOC原理
容器初始化 容器的初始化首先是在对应的构造器中进行,在applicationContext的实现类构造器中,首先对参数路径中的${}进行了处理,用系统变量替换(setConfigLocations方法)然后调用refresh方法(这个就是最核心的容器初始化方法)。 1、Resource定位: 在refresh方法中调用obtainFreshBeanFactory方法告诉子类刷新beanfacto...
flv分析工具主流程实现
本系列教程通过分析flv、amf、及rtmp码流,在不参照任何开源框架和不借用任何开源代码的情况下,实现rtmp协议库(推流和拉流功能),代码自产率为100%。
uboot 主流程分析
1.uboot入口函数main_loop所在位置: uboot_tiny4412/common/main.c2.分析入口函数的流程void main_loop (void) { ////////////////////////////////////// unsigned int OmPin; OmPin = INF_REG3_REG; ///////////////////////
surgemq主流程及优缺点
主流程 Server Listen tcp端口 for循环Accept Accept后go handleConnection(conn) handleConnection创建srv service,srv相当于client 在service中又go了3个goroutine:processor(),receiver(),sender() service中创建了in buffer和out bu...
Zookeeper选举算法( FastLeader选主)
FastLeader选主算法:        看网上关于 zookeeper选主节点fast算法的描述,虽然有几篇写的非常不错,但是总感觉描述的差一些,因此打算写一个我认为的较为详细的版本让大家提点意见。当然如果有Paxos基础那自然看起来非常很简单。         具体的FAST算法流程如下所示: 下面详细解释一下这个流程: 首先给出几个名词定义: (1)Server
opensips源码主流程分析
opensips 源码的主流程分析,根据此分析,可以掌握opensips源码的主脉络,便于进行更深入的学习和修改。
datadog collectd的主流程分析
2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...
nginx源码浅析--主流程
Nginx启动主流程 1、ngx_strerror_init初始化所有系统错误字符串。 2、ngx_get_options获取命令行参数(-s等)。 3、ngx_time_init(线程安全,精确到毫秒级别) 调用ngx_time_update。上锁,获取当前时间并提前设置好相关字符串变量,从而方便后面使用。 4、ngx_regex_init 5
从零单排--主流程
主流程 安装jdk (总结: jdk的作用) 安装tomcat (总结: tomcat作用) 安装mysql () 安装IEDA (总结: IDEA作用) 写一个ERP项目 安装PowerfDesigner 数据库设计 (使用PowerDesigner设计, 权限设计, user-role-pmsn) 导出到mysql(powerdesigner导出; navicat运行导出文件) jav...
ERP主流程体验
ERP课程实验指导,想学ERP的来看看。
CPD主流程基础概念
CPD主流程缩略语和基础概念 五个阶段:概念、计划、开发与测试、验证与发布、生命周期管理 四个决策评审(DR):概念DR、计划DR、发布DR、生命周期终止DR 六个技术评审(TR):TR1、TR2、TR3、TR4、TR5、TR6
nutch主流程代码阅读心得。
之前对nutch进行些分析,打算在基础上进行一些应用,不过最近忙着,也没弄出个所以然,先把阅读心得贴出来,里边可能有不少理解上的错误,仅供参考用,万一突然有人转载了,请保留blog出处 。也希望能认识跟多对此话题感兴趣的朋友。   主要类分析:一、org.apache.nutch.crawl.Injector:     1,注入url.txt     2,url标准化     3,...
k8s kubelet 主流程图解
k8s 版本:1.3  下图是以前看代码整理出来的。syncPod 本身也是非常复杂的逻辑,关于syncPod的上下游后续再补上。
libevent 主流程解析
struct event_base {     /** Function pointers and other data to describe this event_base's      * backend. */     const struct eventop *evsel;//这是IO事件分离器,参考static const struct eventop *eventops[]。我
Nginx源码分析(一)主流程分析
    突然间对http服务器燃起了兴趣,于是乎去研究nginx源码,下面简单介绍以下第一阶段研究成果,主要是关于nginx是如何启动http服务的。    首先在nginx.c中,有main函数,在main函数当中,调用了nginx_init_cycle函数,该函数在nginx_cycle.c中定义,是一个需要重点关注的对象。因为一系列重要的初始化过程都在该函数中完成,其中tcp服务的liste...
Glide 源码解析 之 加载主流程
引子 基本使用: A = Glide.with(activity) .load(url) .into(image); 复制代码流程概述 抽象出 Request、Target: 封装url到Request中,封装imageView到Target中,Request和Target相互持有; 调用Engine.load()启动加载; @startuml : Glide.with...
【OVS2.5源码解读】datapath主流程分析
我们知道,ovs为了提高效率,数据包会先在内核层datapath进行流表项匹配处理,对于匹配失败,或者是匹配到表项的action为发向用户层时,才会去用户层继续查找匹配。对于在用户层匹配成功的数据包会按照表项action相应处理,并向内核层下发一条匹配到的表项,方便以后类似数据包直接在内核层完成匹配转发。 网络报文到达主机后,最终会到达协议栈的netif_receive_skb函数,该函数会...
关于大学进工作室选方向的疑问
本人还是在校的一名软件工程的学生,因为大三要选关于工作室的问题。在大二之前已经学过了C++和java的先行课,工作室的课程也是在这两门之间选择。但是,学院总不能给我们一个正确的定义,到底C++和java在工作的时候到底是主攻那些哪些方面的?上次问过老师,我们学校的C++工作室是主攻网络编程这方面,所以就有同学疑问到:难道这样学好了就能当黑客吗?很多同学都是选java的工作室,因为他们说怕C++中的指针之类的编程题目。求大神指点,能不能详细说说这两门以后的就业方向和主攻方面呢?谢谢啦。
JBPM入门代码
[code=&quot;java&quot;] package test; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.db.GraphSession; import org.jbpm.db.TaskMgmtSession; impor...
Android 图片加载框架Glide主流程源码分析
下一篇 Android 图片加载框架Glide缓存原理源码分析Glide图片加载框架最近比较火,谷歌官方强烈推荐,使用也比较简单,功能强大,支持网络图片本地图片的加载,支持静态图片和动态图片。反正一句话就是很火很牛,我们需要它。github地址:https://github.com/bumptech/glide   点击打开链接这里采用的Glide4.4版本进行分析,现在直接根据加载方法开始分析吧...
Kaldi-MFCC模块源码主流程分析
那么趁着这个机会,研究一下kaldi源码中MFCC部分的内容。不说废话,我们从 compute-mfcc-feats.cc开始讲解,这里是个main函数,需要携带参数,具体使用样例如下: 1.compute-mfcc-feats: 其实看到这里我是一脸懵逼的,并不知道该如何用,没办法硬着头皮往下看。 这句看起来好似定义了一个类,要想知道它到底在干什么,我们找到ParseOptions...
Spring源码分析之getBean主流程分析
当我们通过向Spring容器获取某个bean的时候,总是调用Spring中重载的各种getBean方法。那么,getBean中的流程是什么样的? 通过本文,你将对getBean方法的主流程有一个详细的认识。 入口当然是getBean方法: public Object getBean(String name) throws BeansException { return doGetBe...
Spring源码分析之createBean主流程分析
我们知道,在调用getBean获取bean实例的实例,首先会从缓存中获取bean实例,如果没有获取到,就会去创建bean的时候。关于获取bean实例,可以参考Spring源码分析之getBean主流程分析,而本文将会对创建bean实例的主流程来做一个分析。而入口,当然是createBean(AbstractAutowireCapableBeanFactory)的方法。 下面来看源码: pro...
XGBoost解析系列--源码主流程
前言 入口过程 Train过程 1 Train主框架 2 UpdateOneIter流程 21 LazyInitDMatrix过程 22 PredictRaw过程 23 obj_-GetGradient过程 24 gbm_-DoBoost过程 241 分裂过程 242 剪枝过程0.前言  本文介绍XGBoost的源代码流程,先梳理源码主干流程,方便读者理解,结合函数名进行说明具体逻辑与功能。如果读者
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑