《Zookeeper》源码分析(十七)之 LeaderZooKeeperServer

news2024/11/15 15:24:36

目录

  • LeaderZooKeeperServer
    • 类结构
    • 创建LeaderZooKeeperServer
    • 加载初始化数据loadData()
    • 启动LeaderZooKeeperServer
      • setupRequestProcessors()

LeaderZooKeeperServer

类结构

ZooKeeperServer主要是设置了一系列Processor处理器,对于不同的服务器角色有不同的实例类型
在这里插入图片描述

创建LeaderZooKeeperServer

在第十六篇文章中提到创建Leader的时候会先创建LeaderZooKeeperServer实例,它的源码过程如下:
在这里插入图片描述

加载初始化数据loadData()

当服务器成为Leader后进入lead()核心代码时会执行该方法。
在这里插入图片描述

启动LeaderZooKeeperServer

当Leader完成投票过半、与learner完成数据同步之后会启动LeaderZooKeeperServer实例,
在这里插入图片描述

在这个过程中最主要的是第6步,该步骤中会创建Leader的一系列处理器,用于处理请求。

setupRequestProcessors()

在这里插入图片描述

最终创建的处理器链如下:
在这里插入图片描述

  1. PrepRequestProcessor,该处理器会对事务请求,如创建节点、更新数据、删除节点等,进行一系列预处理,包括创建事务请求头、事务体、会话检查、ACL检查、版本检查等。它是Leader的第一个请求处理器。
  2. ProposalRequestProcessor,它是Leader服务器的事务投票处理器,对于非事务请求,它会将请求直接传递给CommitProcessor;对于事务请求,它还会根据请求类型创建对应Proposal提议,发送给集群中所有的Follower服务器进行事务投票,此外,它还会交给SyncRequestProcessor进行事务日志的记录。
  3. SyncRequestProcessor,事务日志记录处理器,将事务请求记录到事务日志文件中,同时在一定条件下触发数据快照。
  4. AckRequestProcessor,Leader特有的处理器,当SyncRequestProcessor完成记录后向Leader发送ACK反馈。
  5. CommitProcessor,对于非事务请求会直接传递到下一个处理器,对于事务请求会等待ProposalRequestProcessor发出的Proposal投票,直到获得足够投票可以提交Proposal为止。
  6. ToBeAppliedRequestProcessorCommitProcessor处理过的proposal会被保存到Leader.toBeApplied队列中,然后由ToBeAppliedRequestProcessor逐个交给FinalRequestProcessor处理。
  7. FinalRequestProcessor,主要负责收尾工作,如创建客户端请求的响应、将事务应用到内存数据库中。

后续会针对具体的请求来详细分析这一系列的Processor的工作,本章只需了解LeaderZooKeeperServer的核心工作,即创建Leader一系列请求处理器。

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

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

相关文章

论文导读 | Operations Research近期文章精选

推文作者:张曦予 编者按 本期我们选取了七月后半月来自Operations Research的一篇文章以及来自Management Science的四篇文章以飨读者,内容涉及多个方面,我们选取的文章包含了各个方面对于管理以及运筹进行研究的文章,如研究疲劳对…

更新清华软件源时报错:Certificate verification failed: The certificate is NOT trusted.

场景: 在下载libapriltag-dev依赖时,Linux给报了一个错误:E: Unable to locate package libapriltag-dev 。这个错误经常会出现,无法在现有的软件源里找到该安装包或者该依赖,这个时候,首先我们就需要先检查…

服务运营 | MSOR文章精选:远程医疗服务中的统计与运筹(一)

推文作者:蔡君洋,Guo 编者按 《哈佛商业评论》在今年1月20日发表了《是时候巩固远程医疗在美国医疗保健中的地位了(It’s Time to Cement Telehealth’s Place in U.S. Health Care)》一文。文章指出,在COVID-19大流行…

4.SpringCloud 基本架构

1.SpringCloud概述 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,…

设置前端项目站标 favicon.ico

1、首先我们需要准备一个小图标利用在线ico工具制作 .ico 的文件 在线工具favicon制作 - 在线工具favicon在线制作,icon制作,网站图标,网站图标制作,ico图标制作https://tool.lu/favicon/选择自己想要制作的小图标,然后选择48*48的下载就可以了 将下载的文件名改为f…

leetcode 123. 买卖股票的最佳时机 III

2023.8.21 本题限制了买卖次数:最多买卖两次。 与之前的股票问题相比,dp数组的第二个维度需要设置四个状态: 第一次持有股票第一次不持有股票第二次持有股票第二次不持有股票 ps:持有股票不等于购买股票!&#xff01…

【Git版本控制工具使用---讲解一】

Git版本控制工具使用 安装设置用户名签名和邮箱Git常用的命令 初始化本地库查看本地状态Git 命令添加暂存区提交本地库查看版本信息修改文件版本穿梭 安装 首先根据自身电脑的配置选择性的安装是32位的还是64位的Git版本控制工具 我这边安装的是64位的 以下是我安装的时候的过…

jmeter HTTP信息头管理器

首先,打开JMeter并创建一个新的测试计划。右键单击测试计划,选择"添加" > “线程组”,然后在线程组上右键单击,选择"添加" > “Sampler” > “HTTP请求”。 在HTTP请求中填写服务器的URL和其他必要…

深入浅出带你玩转栈与队列——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 目录 1.栈 1.1栈的概念及结构 1.2栈的结构特征图 ​编辑 1.3栈的实现 1.3.1栈的初始化 1.3.2进栈 1.3.3出栈 1.3.4销毁内存 1.3.5判断栈是否为空 1.3.5栈底元素的读取 1.3.6栈中大小 1.4栈实现所有接口 2…

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-BiL…

增强数字风险防护管理,天际友盟牵头正式发布GDN·全球数字风险阻断网络

随着数字化进程的加快,企业对于数字风险防护管理的需求与日俱增,其数字足迹、数字资产,甚至高管的个人形象都可能成为不法分子的攻击目标。保护关键数字资产与数据免受外部威胁,提升在线业务运营稳健性的价值毋庸置疑。 8月18日&a…

QQ音乐刷时长和音响力工具-无需密码

QQ音乐刷等级是一款安卓端的QQ音乐刷时长和音响力工具,使用时无需密码登录,直接输入qq号码即可,支持微信账号,每提交一次可以刷99分钟的听歌时长,实时到账,刷的听歌时长可以增加听歌排行榜跟音响力(就是QQ音…

辅助笔记-安装Ubantu20.04.1虚拟机

安装Ubantu20.04.1虚拟机 文章目录 安装Ubantu20.04.1虚拟机步骤一:检查BIOS虚拟化支持步骤二:VMware17安装虚拟机步骤1:新建虚拟机步骤2:验证虚拟机能否上网 步骤三:设置Ubantu语言为中文步骤四:软件仓库镜…

江西景德镇陶瓷三维扫描工艺品瓷器数字化3D打印-CASAIM中科广电

江西景德镇陶瓷是中国著名的传统陶瓷产地,其瓷器作为文化遗产具有重要的历史和艺术价值。对于陶瓷工艺品瓷器的三维扫描和数字化,利用三维激光扫描和3D打印相结合的方式助力文物数字化及复原领域是目前主流的发展趋势。 1. 三维激光扫描操作:…

编织梦想:SpringBoot AOP 教程与自定义日志切面完整实战

什么是 AOP AOP 是指通过预编译方式和运行期动态代理的方式,在不修改源代码的情况下对程序进行功能增强的一种技术。AOP 不是面向对象编程(OOP)的替代品,而是 OOP 的补充和扩展。它是一个新的维度,用来表达横切问题&a…

一文看懂群晖 NAS 安装 Mysql 远程访问连接

文章目录 1. 安装Mysql2. 安装phpMyAdmin3. 修改User 表4. 本地测试连接5. 安装cpolar6. 配置公网访问地址7. 固定连接公网地址 群晖安装MySQL具有高效、安全、可靠、灵活等优势,可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#…

spring boot 3使用 elasticsearch 提供搜索建议

业务场景 用户输入内容&#xff0c;快速返回建议&#xff0c;示例效果如下 技术选型 spring boot 3elasticsearch server 7.17.4spring data elasticsearch 5.0.1elasticsearch-java-api 8.5.3 pom.xml <dependency><groupId>org.springframework.boot</gr…

如何快速搭建一个预约系统?

如何快速搭建一个预约系统 ? 线上预约系统的出现&#xff0c;为解决线下排队拥堵问题提供了便利和解决方案。通过线上预约&#xff0c;人们可以提前预约时间段&#xff0c;避免了到场后需要长时间等待的情况。以下是线上预约解决线下排队拥堵问题的几个场景&#xff1a; 餐厅…

深入完整的带你了解java对象的比较

目录 元素的比较 1.基本类型的比较 2.对象比较的问题 1.运行结果 2.疑问 3.原因 对象的比较 1.覆写基类的equals 2.基于Comparble接口类的比较 3.基于比较器比较 4.三种方式对比 元素的比较 1.基本类型的比较 在Java 中&#xff0c;基本类型的对象可以直接比较大…

52所韩国大学联合退出QS世界大学排名

因今年QS的全新评估指标&#xff0c;令韩国大学在世界大学的排名中大幅下降&#xff0c;因此韩国52所大学联合发表声明&#xff0c;将不再参加QS世界大学排名。下面知识人网小编做详细介绍。 今年6月28日&#xff0c;QS教育集团正式发布了2024年世界大学排名&#xff0c;见“排…