《Zookeeper》源码分析(二十)之 Follower

目录

  • Follower
    • 创建Follower实例
    • followLeader()
    • findLeader()
    • connectToLeader()
    • registerWithLeader()
    • syncWithLeader()
  • FollowerZooKeeperServer

Follower

Leader选举结束后,成为Follower的服务器开始进行Follower的工作,过程如下:
在这里插入图片描述

Leader的过程类似,第一步创建Follower实例,第二步开始执行工作followerLeader()

创建Follower实例

在这里插入图片描述

followLeader()

LeaderLearnerHandler中,当LeaderFollower建立连接后发生的工作流程如下:
在这里插入图片描述

在LearnerHandler的run()方法中我们已经分析了左边Leader的工作,Follower的followLeader()方法则是右边的工作,源码过程如下:
在这里插入图片描述

接下来具体分析第1步~第4步,第5步则会在后文具体请求时再分析。

findLeader()

在这里插入图片描述

connectToLeader()

在这里插入图片描述

在这一步中最关键的是设置了leaderIs与leaderOs,后续Follower与Leader收发信息时都直接使用这两个变量。

registerWithLeader()

当Follower与Leader成功建立连接后,Follower就开始向Leader注册自己的信息,在这个过程中包括发送身份信息、确认epoch
在这里插入图片描述

syncWithLeader()

当Follower与Leader确认完选举轮次epoch之后就要开始进行数据同步:

  1. 首先收到来自Leader的一个确认同步类型的包,即差异化同步DIFF、全量同步SNAP、回滚同步TRUNC
  2. 接收来自Leader的数据,即PROPOSAL,每一个PROPOSAL之后跟随一个COMMIT
  3. 数据同步结束后会收到NEWLEADER包,确认Leader
  4. Leader确认结束之后会收到UPTODATE,表明Follower已经与Leader同步,可以开始处理来自客户端的请求

源码过程如下:
在这里插入图片描述

Follower的初始化工作介绍到此结束。

FollowerZooKeeperServer

它的作用与LeaderLeaderZooKeeperServer类似,所以我们只介绍它定义的Processor
在这里插入图片描述

FollowerRequestProcessor:它的工作主要是识别出当前请求是否为事务请求,如果是事务请求,在提交给CommitProcessor后会继续将其发送给Leader进行处理。

SendAckRequestProcessor:在SyncRequestProcessor完成事务日志记录后会通过SendAckRequestProcessor向Leader发送对Proposal的反馈信息,与Leader的AckRequestProcessor本地操作不同,它是一个远程反馈。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汉诺塔问题--夏令营

题目 tips: 1.本题只用多试几次,由数据推导规律即可 2.汉诺塔问题分析 这里的递归函数是(n,a,b,c)指n个盘子从a移到c,且凭借b 递归边界是n1 原始思想:要想把n个盘子从a移到c,若n1则直接move a到c n>…

【LUBAN】【功能验证】至简投屏功能之Android有线连接方式测试

1、概述 至简投屏功能之Android有线连接方式支持至简自带应用至加的投屏功能和谷歌官方的Android auto功能。 支持的功能范围列举如下: 1、屏幕投屏(支持自动旋转屏)2、音视频播放(抖音、百度地图等)3、车机反控手机…

vue中使用echarts三维的项目

需要安装 echarts 同时引入 echarts-gl 我安装的版本: "echarts": "^5.3.2", "echarts-gl": "^2.0.9", 效果 : 安装后main.js引入 import Vue from "vue"; import * as echarts from "echart…

车联网技术介绍

上图是目前车联网架构图,基于“云-管-端”的车联网系统架构以支持车联网应用的实现, “云”是指 V2X 基础平台、高基于精度定位平台等基础能力,可实现车辆动态厘米级定位,这将满足现阶段以及未来车联网应用场景的定位精度需求。 “…

滑动验证组件---设置movable-view组件的x属性在微信小程序端失效的问题

场景 采用uniapp的movable-view组件实现滑动验证组件。 流程 滑块未滑到最右端时,回弹到原点滑块滑到最右端时,则显示滑动结束,不可再滑动 问题 频繁设置uniapp的movable-view组件的x属性,在H5端正常,但在微信小程…

Linux —— 进程间通信(System V)

目录 一,共享内存 申请共享内存 shmget 控制共享内存 shmctl 关联共享内存 shmat / 去联共享内存 shmdt 二,消息队列 创建或打开消息队列 msgget 发送消息 msgsnd / 接收消息 msgrcv 控制消息 msgctl 三,信号量 创建或打开信号量 s…

【esp32】GPIO引脚功能使用集合

本文主要介绍 esp32 这块芯片的GPIO 口功能使用以及软硬件设计注意事项 📋 个人简介 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页…

Mac操作系统Safari 17全新升级:秋季推出全部特性

苹果的内置浏览器可能是Mac上最常用的应用程序(是的,甚至比Finder、超级Mac Geeks还要多)。因此,苹果总是为其浏览器Safari添加有用的新功能。在今年秋天与macOS Sonoma一起推出的第17版中,Safari可以帮助你提高工作效…

【HCIP】15.MPLS基础

多协议标签交换 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。 通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。 术语 MPLS域(MPLS Domain):一系列…

C语言学习笔记(完整版)

文章目录 算法算法的基本概念算法的特征算法的优劣 描述算法三种基本结构流程图N-S流程图伪代码 常量和变量了解数据类型常量整形常量实型常量字符型常量转义字符符号常量 变量整形变量实型变量字符型变量 表达式与运算符赋值运算符和赋值表达式变量赋初值强制类型转换 算术运算…

行式存储与列式存储

1.概述 数据处理大致可分为两大类,联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。 OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库记录的增、删…

LAMP配置与应用

web资源类型: 静态资源:原始形式与响应内容一致,在客户端浏览器执行 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端 LAMP架构组成: L:linux …

翻倍以链表形式表示的数字

题目: 示例: 思路: 有点相似于:链表相加II,这道题我们仍然有进位,但不同的是,链表相加我们选择了开辟新节点,这道题我们选择反转两次链表,开始一次,结束一次…

测试工具coverage的高阶使用

在文章Python之单元测试使用的一点心得中,笔者介绍了自己在使用Python测试工具coverge的一点心得,包括: 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上…

CrystalNet .Net VCL for Delphi Crack

CrystalNet .Net VCL for Delphi Crack VCL或更为人所知的可视化组件库是基于一个面向对象的框架,什么是用户对开发人员和事件的Microsoft Windows应用程序的接口。可视化组件库是用对象Pascal编写的。它主要是为使用Borland而开发的,它具有与Delphi以及…

Excel/PowerPoint折线图从Y轴开始(两侧不留空隙)

默认Excel/PowerPoint折线图是这个样子的: 左右两侧都留了大块空白,很难看 解决方案 点击横坐标,双击,然后按下图顺序点击 效果

自动设置服务器全教程

亲爱的爬虫探险家!在网络爬虫的世界里,自动设置代理服务器是一个非常有用的技巧。今天,作为一家代理服务器供应商,我将为你呈上一份轻松实用的教程,帮助你轻松搞定爬虫自动设置代理服务器。 一、为什么需要自动设置代…

SMC状态机 讲解2 从模型到SMC

SMC状态机 讲解2 从模型到SMC 1、实例化有限状态机(FSM)2、简单转换 Simple Transition3、外部环回转换 External Loopback Transition4、内部环回转换 Internal Loopback Transition5、转换动作6、转换Guard7、转换参数8、Entry 和 Exit动作9、Push 转换10、Pop转换…

chatGPT界面

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html> <head><title>复选框样式示例</title> </head> <style>* {padding:0;margin: 0;}.chatpdf{display: flex;height: 100vh;flex-direction: row;}.chatpdf .pannel{widt…