zookeeper框架

事务ID

Znode的创建删除,更改内容等都是作为zookeeper的事务进行执行的。
对于每一个事务请求,zookeeper都会为其分配一个全局唯一的事务ID,从ID可以识别出事务的全局顺序。

节点特性

czxid:create zxid,数据节点创建时的事务ID
mzxid:modified zxid,节点最后更新时的事务ID
ctime:create time
mtime:modified zxid
version :节点版本号
cversion:子节点版本号
aversion:acl版本号
enumChildren:子节点数量
pzxid:子节点修改的最后事务id

版本:表示对数据节点内容,子节点,acl的修改次数

当创建时都为0
每个数据节点都有三个版本:
version:当前数据节点内容的版本号
cversion:当前数据子节点的版本号
aversion:当前节点的acl版本号
版本的作用:充当乐观锁的写入校验。用CAS的方式。

Watcher:数据变更的通知

当客户端在zookeeper上注册后,会在客户端生成回调函数,当触发监听任务时,zookeeper通知客户端,客户端执行watchermanager的回调函数。

客户端的视角创建会话

以下是一次 ZooKeeper 会话创建的详细过程,以客户端的视角为主:

  1. 客户端启动: 客户端应用启动,并创建一个ZooKeeper客户端实例。

  2. Watcher对象注册: 客户端可以注册Watcher对象,用于在特定事件发生时接收通知。Watcher对象负责处理与会话相关的事件,如连接建立、节点变更等。

  3. 建立连接: 客户端调用createSession()操作来连接到ZooKeeper集群。在这个过程中,客户端选择一个服务器进行连接。

  4. ClientCnxn: 一旦连接建立,将创建一个ClientCnxn对象,代表客户端与服务器之间的连接。该对象处理底层的TCP连接和数据传输。

  5. Session ID 和密码分配:如果是客户端的第一次连接,或者之前的会话已经过期,服务器会为客户端分配一个唯一的 Session ID。同时,服务器会生成与该 Session ID 相关联的会话密码(Session Password)。

  6. SendThread: 客户端的SendThread负责向服务器发送请求,包括创建Session、读取、写入等操作。这个线程处理所有的网络通信。

  7. EventThread: 客户端的EventThread用于处理从服务器返回的事件(Event)。这包括连接状态的改变、节点变更等。Watcher对象将在这里收到通知。

  8. Watch事件和通知: 如果客户端注册了Watcher对象,当与会话相关的事件发生时,服务器将生成相应的事件(Event),并通过EventThread传递给客户端。这样,客户端能够得知会话中的状态变化。

  9. 心跳检测: 会话期间,客户端和服务器之间定期发送心跳以保持连接的活跃。

  10. 会话超时处理: 如果客户端未在规定的会话超时时间内发送心跳,或者由于其他原因导致通信中断,服务器将终止会话。此时,相关的Watcher对象将收到会话超时的通知。

服务器

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

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

相关文章

基于ZYNQ的PCIE高速数据采集卡的设计(一)

作为信息处理的第一步,数据采集的作用越来越重要。目前,数据采集已经在航 空、民用、军事、医疗等领域得到广泛应用。随着相关技术的不断发展,信号频率越 来高,带宽越来越大,使得数据采集技术逐渐向高速大数据的方向…

【python】优化docker镜像体积

背景 测试脚本的最终所构成的镜像体积偏大,项目提出整改 实现思路 1.测试基础镜像,更换为更小的 参见:python 多阶段构建docker镜像,有效减少镜像大小 - 知乎 2.去掉实际未使用的依赖库

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞,上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求,很多小伙伴就寻思用Linux系统搭建占用会不会小一点?有计算机基础的小伙伴都知道Linux系统和Windows系统相比,…

【Linux】实时查看服务器信息

查看服务器CPU使用率 使用命令mpstat 1。这里的1表示每隔1秒更新一次CPU使用率。如果系统未安装mpstat,可以通过安装sysstat包来获取它。 在基于Debian的系统(如Ubuntu)上,使用命令: sudo apt-get update sudo apt-…

JavaScript 数据类型详解的教程

在JavaScript中,数据类型是非常重要的概念,了解数据类型有助于我们更好地操作数据以及编写高效的代码。本教程将详细介绍JavaScript中的各种数据类型,包括基本数据类型和复杂数据类型。 基本数据类型 1. 数值(Number) 在JavaScript中&…

考研复试类比社团招新,无所谓“公平”,导师选谁都是他的权力

这篇文章是抖音和b站上上传的同名视频的原文稿件,感兴趣的csdn用户可以关注我的抖音和b站账号(GeekPower极客力量)。同时这篇文章也为视频观众提供方便,可以更加冷静地分析和思考。文章同时在知乎发表。 我考研一战的时候计算机考…

MySQL 主从复制配置指南

MySQL 主从复制配置指南 MySQL主从复制允许数据从一个MySQL数据库服务器(主服务器)复制到一个或多个MySQL数据库服务器(从服务器)。这是一种常用的数据冗余和备份方法,也可以用于负载均衡。 前提条件 主服务器和从服…

【详识JAVA语言】面向对象程序三大特性之一:封装

封装的概念 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。 比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通…

飞桨模型转ONNX模型教程

文章目录 飞桨模型转ONNX模型教程1. ONNX简介2. Paddle2ONNX安装3. 获取Paddle2ONNX模型库4. 飞桨转ONNX教程4.1 飞桨训练模型导出为ONNX模型4.2 飞桨部署模型转为ONNX模型4.3 验证ONNX模型4.4 使用ONNX模型进行推理 5. 注意事项 飞桨模型转ONNX模型教程 1. ONNX简介 ONNX是一…

管理系统提升:列表页构成要素,拒绝千篇一律

大家伙,我是大千UI工场,专注UI知识案例分享和接单,本期带来B端系统列表页的分享,欢迎大家关注、互动交流。 一、什么是列表页 管理系统列表页是指管理系统中用于展示和管理数据的页面,通常以表格或列表的形式呈现。列…

【appium】APP元素操作Api、androidDriver操作Api

一、元素操作Api 主要是做断言 text 1、click()——触发当前元素的点击事件 2、sendKeys(...)——输入数据 3、clear()——清空内容 4、getAttribute() ——获取属性值 字符串类型属性: content-desc(返回content-desc属性值) text(返…

C语言中结构体成员访问操作符的含义及其用法

1.直接访问操作符 用法&#xff1a;结构体名.成员名。 含义&#xff1a;直接访问结构体中的成员变量。 示例&#xff1a; #include<stdio.h> struct student {char name[20];int age; }; int main() {//定义了一个结构体数组arrstruct student arr[4] { {"cxk&q…

产品经理相关的学习网站

一、原型案例 AxureShop产品原型网&#xff1a; https://www.axureshop.com/ 人人都是产品经理&#xff1a;https://www.woshipm.com/ 二、如何找各类图标、各类图表 各类图标&#xff1a; IconPark&#xff1b; 各类图表&#xff1a;echarts.apache.org&#xff08;柱状图、饼…

深入浅出HTTP/2预检请求(CORS Preflight Request)

前言 在现代Web开发中&#xff0c;跨域资源共享&#xff08;Cross-Origin Resource Sharing&#xff0c;简称CORS&#xff09;是一项关键技术&#xff0c;它允许浏览器在不同源之间安全地执行Ajax请求。当一个来自不同源的请求涉及到一些特殊 HTTP 头部或者方法时&#xff0c;…

23端口登录的Telnet命令+传输协议FTP命令

一、23端口登录的Telnet命令 Telnet是传输控制协议/互联网协议&#xff08;TCP/IP&#xff09;网络&#xff08;如Internet&#xff09;的登录和仿真程序&#xff0c;主要用于Internet会话。基本功能是允许用户登录进入远程主机程序。 常用的Telnet命令 Telnet命令的格式为&…

有人吐槽:可视化大屏面向领导的设计,真相是这样吗?

某些老铁的态度很极端&#xff0c;看到可视化大屏页面就一口断定&#xff0c;除了讨好领导之外&#xff0c;屁用没有。真相是这样吗&#xff1f;贝格前端工场尝试给老铁们分析下。 一、可视化大屏确实要面向领导&#xff0c;但不是讨好领导 可视化大屏的设计需要考虑领导和管理…

整理的一些脑模板及节点的名称

整理的一些脑模板及节点的名称 前言模板简介AAL90模板HOA112 模板 前言 自己看论文找的&#xff0c;因为有些数据集网站的确有点难找到模板的名称等等。所以主要是看一些论文&#xff0c;因为有文献&#xff0c;所以更有保障一些。当然也有一些在数据网站上比较容易找到所以一…

社交软件----

story feed(聚合服务) 查 联表查询 表冗余字段java拼接user_service查询用户的avator和nick_namefollow_service查询我是否关注item_service查询我的in_box in_box如何设计redis zset 关注 数据库设计 MySQL 根据ER图设计表 create table follow(id bigint unsigned n…

小兴教你做平衡小车-stm32程序开发(按键扫描)

文章目录 1 单片机最小系统板按键原理图介绍2 库函数程序设计3 寄存器程序设计4 效果展示 1 单片机最小系统板按键原理图介绍 从图中看出单片机的PB12引脚接到了按键上。 根据按键的原理图&#xff0c;可以分析得到&#xff0c;如果不按下按键的时候&#xff0c;引脚输入的是…

【Linux】frp内网穿透详细教程(简单易懂)

frp内网穿透详细教程&#xff08;简单易懂&#xff09; 文章目录 frp内网穿透详细教程&#xff08;简单易懂&#xff09;frp是什么&#xff1f;工作原理准备工作frp工具的使用第一步&#xff1a;下载安装包第二步&#xff1a;公网部署frps第三步&#xff1a;内网部署frpc第四步…