《Zookeeper》源码分析(十)之选举通信管理器QuorumCnxManager

news2024/11/24 19:16:08

目录

  • QuorumCnxManager
    • 数据结构
    • 构造函数
    • toSend()
    • connectOne(sid)
    • connectOne(sid, electionAddr)
    • QuorumConnectionReqThread
      • 数据结构
      • run()
    • startConnection()
    • receiveConnection()

QuorumCnxManager

前面我们介绍过ServerCnxnFactory,它负责管理与客户端的通信,而在选举过程中服务器与服务器之间的最底层的通信则由QuorumCnxManager管理,创建过程如下:
在这里插入图片描述

下面先看下数据结构

数据结构

在这里插入图片描述

构造函数

在这里插入图片描述

toSend()

在选举时服务器会向集群中所有服务器发送自己的投票信息,调用toSend()QuorumCnxManager传递待发送的消息
在这里插入图片描述

connectOne(sid)

在上一个方法中,如果与待发送信息的服务还未建立连接,则会调用connectOne(sid)方法进行连接
在这里插入图片描述

首次启动的话会走第3步。

connectOne(sid, electionAddr)

在这里插入图片描述

建立连接的过程通过QuorumConnectionReqThread线程异步进行。

QuorumConnectionReqThread

上一步中会提交QuorumConnectionReqThread线程进行异步建立连接。

数据结构

该线程只有两个参数,一个是待连接服务器的sid,即配置文件server.后面的数字,另一个是待连接服务器的地址。
在这里插入图片描述

run()

获得资源后执行run()方法
在这里插入图片描述

startConnection()

上一步建立连接后会进行一系列的初始化工作,包括创建SendWorkerRecvWorker,并更新senderWorkerMapqueueSendMap
在这里插入图片描述

startConnection()的结果最终建立一对SendWorkerRecvWorker

receiveConnection()

startConnection()第7步中如果自己的sid低于接收到的服务器的sid,则这条连接会被关闭,自己只能等待对方主动发起连接申请时再创建收发线程,当对方发起连接申请,ListenerHandler监听到这个请求后会交给receiveConnection()处理。
在这里插入图片描述
在这里插入图片描述

每一个对方服务器对应一个SendWorkerRecvWorker

至此,QuorumCnxManager的工作原理介绍到此。

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

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

相关文章

07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户…

19.正则表达式

19.1什么是正则表达式 ●正则表达式( Regular Expression) 是用于匹配字符串中字符组合的模式。在JavaScript中, 正则表达式也是对象 ●通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式 ●正则表达式在JavaScript中的使用场景: …

如何攻击神经网络?人工智能VS人工智障

一、前言 自2012年起,人工智能快速发展,频繁出现在大众视野。从Alpha GO到ChatGPT,人工智能已成为不可阻挡的发展趋势。但是由于神经学习的黑盒性质,导致神经网络难以解释,且难以控制。即使像ChatGPT这种强大的模型&a…

Node.js学习笔记-04

这第九章也是个大重点 九、玩转进程 Node在选型时决定在V8引擎之上构建,也就意味着它的模型与浏览器类似。 本章关于进程的介绍和讨论将会解决如下两个问题: 单进程单线程并非完美,如今CPU基本均是多核的,真正的服务器&#xf…

2022美亚杯个人赛复现

复现一下2022美亚杯 目录 1 全局搜索 2 UNIX时间戳 3 4 5 6 7 谷歌邮箱 8 谷歌邮箱数据库 9 10 查找URL 的ip 11 12 13 14 15 16 17 18 19 20 21 分析 waze导航 22 23 查看苹果手机接受照片的方式 24 25 26 27 查找备忘录上锁问文件 28 29 30 …

【Sklearn】基于随机森林算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于随机森林算法的数据分类预测(Excel可直接替换数据) 1.模型原理1.1 模型原理1.2 数学模型 2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 随机森林(Random Forest)是一种集成学习方法…

基于dbn+svr的交通流量预测,dbn详细原理

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN+SVR的交通流量预测 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN+SVR用于交通流量预测…

ML在2023年最成功的案例:ControlNet

一、说明 这里说的 ControlNet不是工业控制的控制网络,而是深度学习的神经网络植入某些控制环节,它是 2023 年 ML 领域最大的成功案例之一。这是一种简单,可解释的方式来对扩散模型的输出施加影响的模型。 二、ControlNet 是什么?…

【学习FreeRTOS】第7章——FreeRTOS临界段代码保护及调度器挂起与恢复

1.临界段代码保护简介 临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段,适用场合如: 外设:需严格按照时序初始化的外设:IIC、SPI等等系统:系统自身需求用户:用户…

p7付费课程笔记7:G1 GC

目录 前言 什么是G1 GC? 重要语义讲解 标记过程 注意事项 适用场景分析 应用建议 问题 常用配置参数 前言 上次我们讲了CMS GC, 这次我们讲解G1 GC;在开始之前我们要思考下我们为什么学G1 GC?学习后有什么好处? 成为更好的Java开…

安达发APS|生产计划排产软件助力加工制造业智能化转型

随着全球经济一体化的不断深入,市场竞争日益激烈,加工制造企业面临着巨大的生存压力。在这种情况下,企业对于生产计划的精细化管理需求日益迫切。为了适应这一市场需求,安达发推出了专门针对加工企业的APS生产计划排产软件&#x…

四、Linux中cd、pwd以及相对/绝对路径和特殊路径符

1、cd命令: cd命令可以切换当前工作目录,基础语法是: cd [linux路径] (1)、打开Linux的命令提示行,当前工作目录是home,输入“cd /”,可以切换到根目录下,在根目录下输…

限制编辑下的PDF可以转换其他格式吗?这2个方法可行

我们知道,PDF可以通过设置“限制编辑”来保护文件不被随意更改,那PDF设置了“限制编辑”还可以转换其他格式吗? 如果PDF设置的是禁止任何更改的“限制编辑”,那PDF菜单【转换】界面下的格式选项就会呈现灰色状态,无法…

不要服务器和技术代码,怎么做新生录取查询系统?

作为一名老师,我了解学生和家长们对录取情况的关注和期待,所以学校公布录取情况表是一项至关重要的工作。在这篇文章中,我将与大家分享学校公布录取情况表的步骤和流程,以帮助大家更好地了解录取情况。 首先,学校会对…

JS代码混淆加密有什么用?

JS加密、JS混淆,有这些用: 1、前端JS代码,如果不加密,它人可以随便copy、任意修改。自己写的代码,可以轻易成为别人的成果。 对JS代码混淆加密,则可以防止这种他人随意白嫖的问题,代码是自己辛…

你知道什么是Curriculum Training模型吗

随着深度学习技术的飞速发展,研究人员在不断探索新的训练方法和策略,以提高模型的性能和泛化能力。其中,Curriculum Training(课程学习)模型作为一种前沿的训练方法,引起了广泛的关注和研究。本文将深入探讨…

Leetcode链表篇 Day2

203. 移除链表元素 - 力扣(LeetCode) 1.暴力移除:分删除的为头结点和不为头节点 while删除头节点时:直接从下一个结点开始,headhead->next while不是头节点时:从head开始遍历(需记录的为 前继结点pre) 虚…

Nature子刊 |肠道宏病毒组揭示百岁老人长寿秘诀

发表期刊:nature microbiology 发表时间:2023 影响因子:28.3 DOI: 10.1038/s41564-023-01370-6 研究背景 衰老是一种不可逆转的自然过程,随着年龄的增长,机体诸多方面出现功能性下降,与衰老相关的疾病&a…

uniapp一套代码实现多端运行

一、为何使用uniapp uni-app 是一个使用 Vue.js 开发所有前端应用的开源框架,开发者编写一套代码,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)等…

第5章:神经网络

神经元模型 上述定义的简单单元即为神经元模型。 多层网络 误差逆传播算法 标准BP算法:参数更新非常频繁,可能出现抵消现象。积累BP算法:下降到一定程度上,进行下一步会非常缓慢。 过拟合 早停:划分训练集和验证集…