《Zookeeper》源码分析(十三)之 投票管理器

news2024/11/23 7:46:16

目录

  • QuorumVerifier
    • 数据结构
    • 构造函数
    • containsQuorum()
  • SyncedLearnerTracker
    • 功能

QuorumVerifier

QuorumVerifier用于保存集群选举服务器信息以及选举期间判断投票是否过半,它的创建过程如下:
在这里插入图片描述

默认创建的是它的实现类QuorumMaj

数据结构

在这里插入图片描述

构造函数

在这里插入图片描述

从参数读取server.开头的信息创建QuorumServer,每一个QuorumServer代表集群中的一个服务器,它的数据结构以及构造函数如下:
在这里插入图片描述

containsQuorum()

QuorumVerifier中用于判断过半的方法是containsQuorum()
在这里插入图片描述

SyncedLearnerTracker

在选举Leader的时候,SyncedLearnerTracker用来判断推举的Leader是否拥有足够的票数,它的构造函数如下:
在这里插入图片描述

功能

在判断投票是否过半的时候会先调用addQuorumVerifier()方法添加QuorumVerifier,在收到投票信息的时候会调用addAck()方法保存投票,然后调用hasAllQuorums()判断是否获取过半的票数,如果过半则选举成功,否则继续选举投票。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch的客户端操作

ElasticSearch的客户端操作 1、客户端介绍 官方文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 实际开发中,有多种方式操作Elasticsearch: 客户端工具:发送http请求(RESTful风格)操作…

C语言入门_Day 6布尔数与比较运算

目录 前言 1.布尔数 2.比较运算 3.易错点 4.思维导图 前言 除了算术计算以外,编程语言中还会大量使用比较运算,并会根据比较运算的结果是“真”还是“假”,来执行不同的代码。 当你想买一杯奶茶,准备支付的时候,支…

Reis过期删除策略

介绍 在Redis中,我们可以为键值对设置有效期,现在面临一个问题,如果一个键值对过期了,那么我们应该怎么删除呢? 我们目前有三种方案: 定时删除:在设置键的过期时间的同时,为此键设…

特殊链表(循环单链表,循环双链表,静态链表)

目录 1.循环单链表的初始化 2.循环双链表 3. 静态链表 (1)静态链表的初始化 (2)静态链表的插入 1.循环单链表的初始化 typedef int ElemType; typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L) {L(LNode*)malloc(…

【兔子王赠书第1期】数据结构与算法有必要区分嘛?

文章目录 数据结构与算法有必要区分嘛好书推荐《数据结构与算法(Python语言实现)》粉丝福利 | 评论免费送书 数据结构与算法有必要区分嘛 数据结构与算法,是计算机科学的基础课程,对于初学者来说,常常会有些困惑&…

企业微信电脑端开启chrome调试

首先: Mac端调试开启的快捷键:control shift command d Window端调试开启的快捷键: control shift alt d 这边以Mac为例,我们可以在电脑顶部看到调试的入口: 然后我们点击 『浏览器、webView相关』菜单,勾选上…

【Vue】Vue 使用 Print.js 打印选中区域的html,用到的是Element ui table表格,解决页面样式不出现或者table表格样式错乱问题!!!

步骤 1. 下载 Print.js 插件 npm install print-js --save2.main.js文件中导入 Print.js 插件 import print from print-js页面使用 需求:打击打印按钮,文字内容以及表格中的内容 vue Print.js打印页面样式不出现 解决方案 加上这句就好了&#xff…

“代码驭宠而行“:探索Python的魔法世界,开启编程奇幻之旅!

文章目录 🍀引言🍀第一步:安装Python和开发环境🍀第二步:掌握基本语法🍀第三步:使用Python库和模块🍀第四步:实践项目和练习🍀第五步:学习进阶主题…

vue使用jsplumb 流程图

安装jsPlumb库&#xff1a;在Vue项目中使用npm或yarn安装jsPlumb库。 npm install jsplumb 创建一个Vue组件&#xff1a;创建一个Vue组件来容纳jsPlumb的功能和呈现。 <template><div style"margin: 20px"><div style"margin: 20px">&l…

20款美规奔驰GLS450更换AMG GLS63原厂刹车卡钳,刹车效果强悍无比

对于M.Benz的车迷来说&#xff0c;AMG必定是他们的圣物&#xff0c;经过AMG改装的成品无一不是拥有动力强横&#xff0c;目操控性、舒适性都能够兼备的。下面所介绍的这套制动系统&#xff0c;便是由AMG出品的大六活塞卡钳及大直径开孔刹车碟&#xff0c;所组成的制动套件。

UE4/5Niagara粒子特效学习(使用UE5.1,适合新手)

目录 创建空模板 创建粒子 粒子的基础属性 粒子的生命周期 颜色 大小设置 生成的位置 Skeletal Mesh Location的效果&#xff1a; Shape Location 添加速度 添加Noise力场 在生成中添加&#xff1a; 效果&#xff1a; ​编辑 在更新中添加&#xff1a; 效果&…

CSS变形与动画(三):animation帧动画详解(用法 + 四个例子)

文章目录 animation 帧动画使用定义例子1 字母例子2 水滴例子3 会动的边框例子4 旋转木马 animation 帧动画 定义好后作用于需要变化的标签上。 使用 animation-name 设置动画名称 animation-duration: 设置动画的持续时间 animation-timing-function 设置动画渐变速度 anim…

[C++] 迭代器失效示例

迭代器失效&#xff1a; 如果迭代器失效&#xff0c;那么就不能再使用这个迭代器。 如果使用&#xff0c;那么结果是未定义的。 我们以模拟实现vector的insert为例。 一、野指针 1、insert实现 这里的pos会变成野指针。 当扩完容后&#xff0c;由于空间的改变&#xff0…

Docker 网络之 ipvlan 和 macvlan

Docker ipvlan 和 macvlan 引言 本文讲解了Docker 网络模式中的 ipvlan 和 macvlan 的区别,目前自己在生产环境中使用的 ipvlan 模式非常问题.也解决了实际业务问题. IPvlan L2 mode example ipvlan 无需网卡混杂模式 , 运行如下命令后可以生成一个 vlan 子接口 , 会和主网…

不懂瞎指挥,就会闯大祸

不懂瞎指挥&#xff0c;就会闯大祸 【安志强趣讲《孙子兵法》第12讲】 【原文】 故君之所以患于军者三&#xff1a;不知军之不可以进而谓之进&#xff0c;不知军之不可以退而谓之退&#xff0c;是谓縻军&#xff1b; 【注释】 患&#xff0c;危害、贻害。 縻&#xff08;m&…

算法通关村第十关 | 归并排序

1. 归并排序原理 归并排序&#xff08;MERARE-SORT&#xff09;简单来说就是将大的序列先视为若干个比较小的数组&#xff0c;分成比较小的结构&#xff0c;然后是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治策略&#xff08;分就是将问题分成一些小的问题分…

【Unity每日一记】计时器——各种方法的实现

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

如何使用CSS实现一个响应式图片网格布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式图片网格布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…

【ARM】Day5 uart总线, LED点亮实验(C语言实现)

1. 思维导图 2. LED点灯实验&#xff08;C语言实现&#xff09; gpio.h #ifndef _LED_H__ //防止头文件重复包含_ #define _LED_H__//RCC_MP_AHB4ENSETR寄存器封装 #define RCC_MP_AHB4ENSETR (*(volatile unsigned int*)0x50000A28)//GPIO使用封装结构体 typedef struct{v…