《Zookeeper》源码分析(十九)之 LearnerHandler

news2025/1/4 19:49:54

目录

  • LearnerCnxAcceptor
    • run()
  • LearnerCnxAcceptorHandler
    • run()
  • LearnerHandler
    • run()
    • syncFollower()
    • SNAP全量同步
    • startSendingPackets()

LearnerCnxAcceptor

Leader.lead()方法中创建并启动LearnerCnxAcceptor线程,该线程主要是建立LearnerCnxAcceptorHandler并将其放入线程池中等待执行,每一个LearnerCnxAcceptorHandler代表Leader服务器的一个服务器地址监听器。

run()

在这里插入图片描述

LearnerCnxAcceptorHandler

LearnerCnxAcceptorHandler监听来自集群中Learner服务器的连接,每监听到一个连接就创建一个LearnerHandler实例并将其启动。

run()

在这里插入图片描述

LearnerHandler

它是服务器的管理器,主要负责Follower/Observer服务器与Leader服务器之间的一系列网络通信,包括数据同步、请求转发和Proposal提议的投票等,它的工作流程如下:
在这里插入图片描述

run()

LearnerHandler的工作如下:
在这里插入图片描述

第1步至第16步都是在进行初始化工作,当这16步都结束后就进入leader与learner之间的发送请求与处理请求的过程,第17步在后文针对具体的请求再做详细的分析,接下来着重分析第9步中的syncFollower()、第10步、第12步中的startSendingPackets()。

syncFollower()

  1. 在开始数据同步之前,会收集leader服务器提议缓存队列中的最小ZXID和最大ZXID,以及learner服务器最后处理的ZXID
  2. 如果leader与learner最后一次处理的zxid相等,则只需要发送DIFF包
  3. 如果peeLastZxid大于maxCommittedLog,leader会发送TRUNC包要求learner回滚到zxid值为maxCommitedLog对应的事务操作
  4. 如果peeLastZxid介于maxCommittedLogminCommitedLog两者之间,则leader向learner发送(peeLastZxid, maxCommittedLog]之间的数据包进行同步
  5. 如果peeLastZxid小于minCommitedLog,则先发送事务日志获取所缺的数据,再发送内存数据库中的数据进行同步。如果事务日志中数据依旧不足,则需要从快照日志中进行全量同步
  6. 最后,将Leader中待提交的数据发送给learner
    在这里插入图片描述

SNAP全量同步

在这里插入图片描述

startSendingPackets()

在这里插入图片描述

至此,LeaderLearner的通信网络介绍到此结束。

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

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

相关文章

介绍两个js补环境项目

1. v-jstools 这个项目是一个浏览器插件,用来补环境的话,是非常好的一个插件。项目地址是:GitHub - cilame/v_jstools: https://github.com/cilame/v_jstools 这里是我的配置 这个是使用后的效果 可以看到,里面调用的环境都被检…

【ARM AMBA AXI 入门 10 - AXI 总线 DATA信号与 STRB 信号之间的关系 】

文章目录 AXI STRB 信号 AXI STRB 信号 AXI总线是ARM公司设计的高性能处理器接口,其中STRB和DATA信号在AXI协议中有特殊的含义和关系。 DATA信号:在AXI中,DATA信号用于在读写操作中传输实际的数据。数据的大小可以根据AXI接口的位宽来变化&…

Redis(缓存预热,缓存雪崩,缓存击穿,缓存穿透)

目录 一、缓存预热 二、缓存雪崩 三、缓存击穿 四、缓存穿透 一、缓存预热 开过车的都知道,冬天的时候启动我们的小汽车之后不要直接驾驶,先让车子发动机预热一段时间再启动。缓存预热是一样的道理。 缓存预热就是系统启动前,提前将相关的…

I2C读写eeprom的问题

接线 在配置I2C的时候要把IO的口设置为开漏模式,为什么要设置开漏模式呢? 答:I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况所以总线一般会…

基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码

基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于闪电搜索算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.闪电搜索优化BP神经网络2.1 BP神经网络参数设置2.2 闪电搜索算法应用 4.测试结果:5…

使用Linux本地快速搭建web网站,并内网穿透发布上线「内网穿透」

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…

最小二乘法,残差,线性模型-线性回归

目录 什么是最小二乘法 残差是什么意思 线性模型 线性回归 方法一:解析解法 代码实战: 方法二:数值解法 代码实战: 解析法(最小二乘)还是数值法(梯度下降),如何…

笔记:自注意力机制

1、和其他网络的比较 自注意力机制适合处理长文本,并行度好,在GPU上,CNN和Self-attention性能差不多,在TPU(Tensor Processing Uni)效果更好。 2、输入特点 原生的Transformer中nn.embeding输入需要非负整…

住宅IP代理与数据中心IP代理的区别,最详解

跨境业务中常见到浏览器指纹防关联,但说到底,最重要的指纹是您的IP地址。在多个账号使用相同的IP地址简直触犯了大忌,这样做往往会导致账号惨遭暂停。 现在越来越多的跨境业务场景需要用到IP代理,那么我们常见的数据中心代理与住…

Instagram最新防封教程,看这一篇就够了

Instagram一直以来都是海外社媒巨头,也是跨境外贸引流推广的必争之地。在庞大的用户量中,真正了解平台规则的却并不多。它有一系列的社区准则和使用条款,稍有不慎违反规定就会造成限流,甚至导致账号被封禁,进而造成客户…

C++学习--函数实现

##MakeFileMAIN :Examples/main.cpp#主文件目录MAIN.o:objs/main.o##目标文件目录cpp_srcs :$(shell find src -name "*.cpp")cpp_objs :$(patsubst src/%.cpp,objs/%.o,$(cpp_srcs))#加头文件的编译选项 include_dirs :/home/shenlan/Group/00.lsa/project/include …

无涯教程-PHP - eregi()函数

eregi() - 语法 int eregi(string pattern, string string, [array regs]); eregi()函数在pattern指定的整个字符串中搜索string指定的字符串,。搜索不区分大小写。 Eregi()在检查字符串的有效性时特别有用。 可选的输入参数regs包含一个由正则表达式中的括号分组的所有匹配…

制作酒店预订小程序的秘诀揭秘

如今,小程序已经成为各行各业的必备工具。酒店业也不例外,拥有一个能够进行酒店预订的小程序,不仅可以提供更加便捷的预订服务,还能够提升酒店的品牌形象和用户体验。而今天,我将教你如何在零基础的情况下,…

基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码

基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于哈里斯鹰算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.哈里斯鹰优化BP神经网络2.1 BP神经网络参数设置2.2 哈里斯鹰算法应用 4.测试结果:5…

oracle数据库总结

文章适合熟悉mysql,想学习oracle的选手,基本的语法都相差不大,但还是有区别的 一、oracle高水位线问题 1、什么是高水位线   简单来说,oracle存储数据的时候会分配空间,但是删除数据的时候并不会回收空间。这样的话…

行业追踪,2023-08-23

自动复盘 2023-08-23 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

DFX概述 | Design For X | Design For Excellent

Design for X (DFX) Methods 什么是“Design for X”? Design for eXcellence是一种在设计和制造领域中的不断发展的原则哲学。它采用了全面和系统的设计方法,关注产品的各个方面——从概念生成到最终交付。 它提供了良好的实践和设计指南&#xff0c…

ESD门禁管理系统的主要功能和优势

ESD门禁管理系统是一种用于控制和管理人员进出特定区域的系统。它通常由门禁控制器、门禁读卡器、门禁管理软件等组成。 ESD门禁管理系统的主要功能包括: 1. 门禁控制:通过门禁控制器实现对门禁设备的控制,如开关门、锁定门等。 2. 门禁验…

视频批量剪辑矩阵分发系统源码开源分享----基于PHP语言

批量剪辑视频矩阵分发: 短视频seo主要基于抖音短视频平台,为企业实现多账号管理,视频分发,视频批量剪辑,抖音小程序搭建,企业私域转化等,本文主要介绍短视频矩阵系统抖音小程序开发详细及注意事…

中项系统集成项目管理知识点汇总

中项系统集成项目管理知识点汇总 一、成本-进度二、十大管理及47个过程三、质量四、人力资源五、风险六、干系人沟通七、案例分析万能答案八、选择题知识点九、十大管理输入输出工具技术总结十大管理工具技术总结 一、成本-进度 针对进度滞后的绩效情况 /缩短工期,可…