zookeeper的选举机制

zk中有两种角色:Leader 和 Fllower

Leader是自己的集群各台电脑投票选举出来的。

事务:一通操作,要么同时成立,要么都不成立。

举例:Jack 和 Rose

Rose  给  Jack(小李子) 转钱
Rose  -100
Jack  +100如果中间数据有问题,直接回滚,回复到当初的样子
事务操作:新增,修改,删除等操作
非事务操作: 读数据

但凡跟数据相关的技术,都有事务。
mysql 有事务
jdbc 有事务
mybatis 有事务

zookeeper:

LeaderZookeeper 集群工作的核心。1、事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;
举例 : 比如添加了一个节点,删除了节点,修改了数据 都是事务操作。
2、集群内部各个服务器的调度者。
3、对于 create, setData, delete 等有写操作的请求,需要统一转发给leader 处理, leader 需要决定编号、执行操作,这个过程称为一个事务。类似于村长
Fllower- 处理客户端非事务(读操作)请求,转发事务请求(写操作)给 Leader;
- 参与集群 Leader 选举投票 2n-1台可以做集群投票。  1 3 5 7 9 ....
- 此外,针对访问量比较大的 zookeeper 集群, 还可新增观察者角色。
类似于村民

Observer- 观察者角色,观察 Zookeeper 集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给 Leader服务器进行处理。
- 不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。类似于外来人员(喝汤了)

选举的关键,看这三个值

epoch > zxid > myid

先比较 epoch  谁大谁是领导  --资历
逻辑时钟  参与过的选举的次数   类似于老党员。

zxid   如果epoch 相等,就看谁的zxid大,谁就是领导
zxid   代表的是事务的次数  如果这个值很大,就表示这个机器上的数据比较的新
如果zxid 也相等,就看每台电脑上的myid了,如果myid谁大谁是领导。

如何查看epoch呢?
 

我现在的集群中,有三台zk,为什么第二台是领导?
    zk01 1
    zk02 2
    zk03 3
启动第一台,第一台开始选举,自己投自己一票,因为超过半数才有效,所以zk01不是领导,此时的状态是选举中。
启动第二台,先投自己一票,然后第一台开始投票,比较两者之间谁的myid大,谁的大,就投给谁,zk02再得一票,第二台两票,超过了半数,领导出现了zk02.
启动第三台:发现有领导了,投了吧,当fllower吧。

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

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

相关文章

六:java 基础知识(6)-- Maven项目管理

目录 1. 引言 1.1 什么是 Maven 1.2 Maven 的优势 2. Maven 基础 2.1 Maven 的基本概念 2.2 Maven 的工作原理 2.3 Maven 的安装与配置 3. Maven 项目结构 3.1 Maven 项目的标准目录结构 3.2 POM 文件(pom.xml)概述 3.3 POM 文件的基本配置 4…

Centrifuge 5425R - 微量离心机技术数据详情——艾本德

离心机,作为实验室中的关键设备,扮演着分离、浓缩和纯化样品的重要角色。而在众多离心机型号中,Centrifuge 5425R 以其出色的性能和多功能性,成为了众多科研人员的首选。下面,我们就来详细了解一下这款微量离心机的技术…

【06】A-Maven项目SVN设置忽略文件

做Web项目开发时,运用的是Maven管理工具对项目进行管理,在项目构建的过程中自动生成了很多不需要SVN进行管理的文件,SVN在对源码进行版本管理时,需要将其忽略,本文给出了具体解决方案。 SVN设置忽略Maven项目中自动生成…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此&a…

革新汽车装配产线:MR30分布式IO模块引领智能制造新时代

在日新月异的汽车制造行业中,每一分每一秒的效率提升都意味着成本的降低与市场竞争力的增强。随着工业4.0时代的到来,智能化、自动化已成为汽车产线升级转型的关键词。在这场技术革命的浪潮中,MR30分布式IO模块以其高效、灵活、可靠的特点&am…

Qt第三课 ----------容器类控件

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

CodeQL学习笔记(4)-CodeQL for Java(程序元素)

最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与目前主流的这些OOP语言相比&…

动态规划28:376. 摆动序列

动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:376.…

【zlm】h264 vp9 尝试研究

目录 编译与使用libvpx 打包lib 解决方案一 libvpx直接引用 IVF格式 编译libvpx windows下编译libvpx 参考文章 编译与使用libvpx 我们用最新的: x86_64-win64-vs16 最简单的视频编码器:编译(libx264,libx265&#xff…

顺序表专题

目录 0. 什么是数据结构? 0. 为什么需要数据结构? 1.顺序表的概念及结构 2.顺序表分类: 3.动态顺序表的实现 4. 顺序表的应用 5. 顺序表的问题及思考 0. 什么是数据结构? 数据结构是由“数据”和“结构”两词结合而来 什…

关于使用svgIcon 菜单折叠 显示文字情况

使用的工具&#xff1a;vue2&#xff0c;ant design vue 问题&#xff1a; **解决&#xff1a;在<svg-icon> 外面包一层 <a-icon> ** 使用: 在 main.js 中&#xff1a;

【JAVA毕业设计】基于Vue和SpringBoot的师生健康管理系统

博主说明&#xff1a;本文项目编号 T 052 &#xff0c;文末自助获取源码 \color{red}{T052&#xff0c;文末自助获取源码} T052&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

双向链表专题

双向链表 1. 双向链表的定义和结构2. 双向链表的实现2.1 结构声明2.2 双向链表的初始化2.3 双向链表的打印2.4 尾插2.5 头插2.6 在指定位置之前插入2.7 在指定位置之后插入数据2.8 尾删2.9 头删2.10 删除指定位置的节点2.11 查找2.12 链表的销毁 3. 双向链表的细节 &#x1f52…

发票真伪查验方式-python数电票批量查验接口、发票ocr文字识别提取

在当今的商业环境中&#xff0c;确保交易的安全性和透明度是每个企业追求的目标。随着电子商务的迅猛发展&#xff0c;发票管理成为了企业财务管理中不可或缺的一环。面对海量的电子发票&#xff0c;企业财务也无需惊慌&#xff0c;翔云发票查验API接口&#xff0c;可以为企业提…

html+js+css实现拖拽式便签留言

前些日子在网上冲浪时&#xff0c;看到一个便签式留言墙&#xff0c;让人耳目一新。心想这个看着不错&#xff0c;额想要。于是便开始搜寻是否有相应开源插件&#xff0c;想将其引入自己的博客中。但是搜寻了一圈&#xff0c;都没有符合预期的,要么功能不符合。有的功能符合&am…

初识网络编程TCP/IP

目录 前言相关名词解释应用层协议——HTTP传输层协议socketTCP帧头格式三次握手、四次挥手 UDPTCP的socket实现 参考博文 前言 刚碰到网络编程&#xff0c;会出现一堆协议、概念、这层次那技术的&#xff0c;头都大了&#xff0c;还是得总结总结…… 相关名词解释 ✨✨网络…

Vue2进阶之Vue3高级用法

Vue3高级用法 响应式Vue2&#xff1a;Object.definePropertyObject.definePropertythis.$set设置响应式 Vue3&#xff1a;Proxy composition APIVue2 option API和Vue3 compositionAPIreactive和shallowReactivereadonly效果toRefs效果 生命周期main.jsindex.htmlLifeCycle.vue…

树叶分类竞赛(Baseline)以及kaggle的GPU使用

树叶分类竞赛(Baseline)-kaggle的GPU使用 文章目录 树叶分类竞赛(Baseline)-kaggle的GPU使用竞赛的步骤代码实现创建自定义dataset定义data_loader模型定义超参数训练模型预测和保存结果 kaggle使用 竞赛的步骤 本文来自于Neko Kiku提供的Baseline&#xff0c;感谢大佬提供代码…

与C语言的旅程之分支与循环(2)

与C语言的旅程之分支与循环 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构&#xff0c; 目录 与C语言的旅程之分支与循环 1. if语句 1.1 if ​编辑1.2 else 1.3 分⽀中包含多条语句 1.4 嵌套if 1.5 悬空else问题 2. 关系操作符…

springBoot 自动配置与starter

目录 一、自动配置 Springboot实现自动配置的核心机制 Conditional的作用是什么&#xff1f; 如何自定义自动配置&#xff1f; 步骤 例子分析 自动配置的优先级 如何禁用特定的自动配置&#xff1f; 二、starter 如何理解Spring Boot中的starter&#xff1f; 如何自…