1.Zookeeper理论基础

1.Zookeeper的基本概念

是一个分布式应用协调框架 ,java编写的。客户端 /服务端 的架构模式。CP设计(一致性,分区容错)
它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:服务注册服务、状态同步服务、集群管理、分布式应用配置项的管理等。

2.重要特性

2.1文件系统数据结构
Zookeeper维护一个类似文件系统的数据结构:
在这里插入图片描述
每一个子目录项称为一个znode节点。与文件系统类似,可以增加、删除
znode,可以在一个znode下增加、删除子znode,为znode节点设置数据等。

2.1.1 znode类型 (默认创建持久化节点)
1)PERSISTENT ­持久化目录节点(持久节点)
客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他将永远存在
2) PERSISTENT_SEQUENTIAL ­持久化顺序编号目录节点(持久有序节点)
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
3)EPHEMERAL­ 临时目录节点(临时节点)
客户端与zookeeper断开连接后,该节点被删除,临时节点后面是不能再创建节点的。可以简单理解为连接的sessionId断开或者超时后,节点及节点的数据被删除,
4)EPHEMERAL_SEQUENTIAL­ 临时顺序编号目录节点(临时有序节点)
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
5.)Container 节点(3.5.3 版本新增,如果Container节点下面没有子节点,则Container节点在未来会被Zookeeper自动清除,定时任务默认60s 检查一次)容器节点)
6) TTL 节点( 默认禁用,只能通过系统配置 zookeeper.extendedTypesEnabled=true 开启。带有有效期时间的节点)

创建节点的命令:
create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl]
-s: 顺序节点
-e: 临时节点
-c: 容器节点
-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用

//创建一个持久节点testnode  值为test1
create /testnode  test1
//创建一个有序持久节点,节点序号为/testnode0000000005  值为test1
create -s /testnode  test1
//创建一个有序临时节点,节点序号为/testnode0000000006  值为test1
create -s -e /testnode test1

在这里插入图片描述
临时节点序号为/testnode0000000006后面不能再创建节点。
失败反馈信息为:Ephemerals cannot have children: /testnode0000000006/node
在这里插入图片描述

2.2 节点监听通知watcher机制
特性为:一旦事件触发,对应的注册立刻被移除,所以事件监听是一次性的,还需要监听该节点,需要再次添加监听。所有的通知都是一次性的,只是事件通知,不是事件内容通知。
2.2.1 Zookeeper事件类型:
None: 连接建立事件
NodeCreated: 节点创建
NodeDeleted: 节点删除
NodeDataChanged:节点数据变化
NodeChildrenChanged:子节点列表变化
DataWatchRemoved:节点监听被移除
ChildWatchRemoved:子节点监听被移除

注册节点监听的命令:

get ‐w /path // 注册监听的同时获取数据
stat ‐w /path // 对节点进行监听,且获取元数据信息

下面的图示示例为 创建一个/watchnode节点,注册/watchnode节点的监听,然后修改/watchnode节点的值后,监听到的NodeDataChanged节点数据变化的事件。再次修改/watchnode节点的值,不会再有watcher监听触发(事件监听是一次性的)。
在这里插入图片描述

2.3 ZooKeeper 内存数据和持久化
Zookeeper数据的组织形式为一个类似文件系统的数据结构,而这些数据都是存储在内存中的,Zookeeper是一个基于内存的小型数据库
内存中的数据:
存放数据使用的ConcurrentHashMap,String key为节点的path。DataNode存放的是数据类型。包括数据值以及节点的信息。

public class DataTree {private final ConcurrentHashMap<String, DataNode> nodes =new ConcurrentHashMap<String, DataNode>();private final WatchManager dataWatches = new WatchManager();private final WatchManager childWatches = new WatchManager();
}

zookeeper事务日志:针对每一次客户端的事务操作,Zookeeper都会将他们记录到事务日志中,当然,Zookeeper也会将数据变更应用到内存数据库中。我们可以在zookeeper的主配置文件zoo.cfg 中配置内存中的数据持久化目录,也就是事务日志的存储路径 dataLogDir. 如果没有配置dataLogDir(非必填), 事务日志将存储到dataDir (必填项)目录。
zookeeper提供了格式化工具可以进行数据查看事务日志数据org.apache.zookeeper.server.LogFormatter。事务日志分别记录了操作时间,客户端会话ID,CXID,ZXID,操作类型,节点路径,节点数据(用
#+ascii 码表示),节点版本等。
事务日志文件名为: log.<当时最大事务ID>,应为日志文件时顺序写入的,所以这个最大事务
ID也将是整个事务日志文件中,最小的事务ID,日志满了即进行下一次事务日志文件的创建。

数据快照数据快照用于记录Zookeeper服务器上某一时刻的全量数据,并将其写入到指定的磁盘文件中。可以通过配置snapCount配置每间隔事务请求个数,生成快照,数据存储在dataDir 指定的目录中,可以通过如下方式进行查看快照数据( 为了避免集群中所有机器在同一时间进行快照,实际的快照生成时机为事务数达到 [snapCount/2 + 随机数(随机数范围为1 ~ snapCount/2 )] 个数时开始快照)

快照事务日志文件名为: snapshot.<当时最大事务ID>,日志满了即进行下一次事务日志文件的创建有了事务日志,为啥还要快照数据。快照数据主要时为了快速恢复, 事务日志文件是每次事务请求都会进行追加的操作,而快照是达到某种设定条件下的内存全量数据。所以通常快照数据是反应当时内存数据的状态。事务日志是更全面的数据,所以恢复数据的时候,可以先恢复快照数据,再通过增量恢复事务日志中的数据即可

zoo.conf 里配置的事务日志目录和数据快照目录 如下

dataDir=D:\\javaBeans\\zookeeper\\apache-zookeeper-3.9.1-bin\\data
dataLogDir=D:\\javaBeans\\zookeeper\\apache-zookeeper-3.9.1-bin\\log

本机中存在的文件样式分别为:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

WordPress建站入门教程:忘记数据库名称、用户名和密码了怎么办?

有时候我们需要进入phpMyAdmin管理一些数据库&#xff0c;但是登录phpMyAdmin时却需要我们输入数据库的用户名和密码&#xff0c;但是我们不记得了应该怎么办呢&#xff1f; 其实&#xff0c;我们只需要进入WordPress网站根目录找到并打开wp-config.php文件&#xff0c;就可以…

Git 进阶 高级用法,重要命令记录

本篇文章用于记录Git高级用法&#xff0c;新手可以看我的另一篇文章&#xff1a;Git基础教学。 Git git fetch 是git pull 的细分步骤&#xff0c;git pull 包含了git fetch git pull origin master 上述命令其实相当于git fetch git merge 在实际使用中&#xff0c;git fetc…

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法&#xff0c;用于计算地表或地形的坡度&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&…

uniapp报错:request:fail abort statusCode:-1 Chain validation failed

uniapp报错信息记录 场景: 半年没碰过的app&#xff0c;今个儿突然无法登录了。 打开控制台&#xff0c;报错信息如下 {msg: request:fail abort statusCode:-1 Chain validation failed}奇怪的是用 apifox 调用相关的接口&#xff0c;可以正常运行&#xff0c;app却不行。 好…

防坑指南!说说Six Sigma咨询公司排名的那些事

在企业管理领域&#xff0c;六西格玛&#xff08;Six Sigma&#xff09;已成为一种流行的质量管理方法。然而&#xff0c;面对众多的Six Sigma咨询公司&#xff0c;如何选择一家真正专业、有实力的合作伙伴&#xff0c;成为了许多企业面临的难题。本文&#xff0c;天行健咨询将…

JVM相关知识

JVM相关知识 &#x1f333;1.JVM概述&#x1fab4;1.1 JVM作用:&#x1fab4;1.2JVM构成&#x1fab4;1.3JVM整体结构图 &#x1f333;2.类加载子系统&#x1fab4;2.1作用&#x1fab4;2.2类加载过程&#x1f331;2.2.1加载:&#x1f331;2.2.2连接&#x1f331;2.2.3初始化 &…

浅谈 Vue3 静态提升和预字符串化

前言 很多朋友在看到 Vue3静态提升 的时候很不理解&#xff0c;不明白这句话到底是什么意思&#xff0c;今天我们就通过这篇日记来搞明白。如果有什么地方描述不正确&#xff0c;请多多指正。 静态类型&#xff08;前置信息&#xff09; 判断节点是否为静态类型&#xff0c;…

【BUUCTF Misc】通关 3.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

利用GPT开发应用001:GPT基础知识及LLM发展

文章目录 一、惊艳的GPT二、大语言模型LLMs三、自然语言处理NLP四、大语言模型LLM发展 一、惊艳的GPT 想象一下&#xff0c;您可以与计算机的交流速度与与朋友交流一样快。那会是什么样子&#xff1f;您可以创建哪些应用程序&#xff1f;这正是OpenAI正在助力构建的世界&#x…

Qt多弹窗实现包括QDialog、QWidget、QMainWindow

1.相关说明 独立Widget窗口、嵌入式Widget、嵌入式MainWindow窗口、独立MainWindow窗口等弹窗的实现 相关界面包含关系 2.相关界面 3.相关代码 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include "tformdoc.h" #incl…

理解CPU指令执行:从理论到实践

理解CPU指令执行&#xff1a;从理论到实践 在探讨现代计算机的核心——中央处理单元&#xff08;CPU&#xff09;的工作原理时&#xff0c;我们经常遇到“时钟周期”和“指令执行”这两个概念。这些概念不仅对于理解CPU的性能至关重要&#xff0c;而且对于揭示计算机如何处理任…

挑战杯 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸表情识别 该项目较…

羊大师揭秘,羊奶有哪些好处和不足呢?

羊大师揭秘&#xff0c;羊奶有哪些好处和不足呢&#xff1f; 羊奶的好处主要包括&#xff1a; 营养丰富&#xff1a;羊奶中含有多种人体所需的营养成分&#xff0c;如蛋白质、脂肪、碳水化合物、矿物质和维生素等。尤其是蛋白质含量高&#xff0c;且易于人体吸收利用。 增强免…

Spring——Bean的作用域

bean的作用域 Bean Scope Scope说明singleton&#xff08;默认情况下&#xff09;为每个Spring IoC容器将单个Bean定义的Scope扩大到单个对象实例。prototype将单个Bean定义的Scope扩大到任何数量的对象实例。session将单个Bean定义的Scope扩大到一个HTTP Session 的生命周期…

Unity用Shader将一张图片变成描边图片素描风格。

环境&#xff1a; unity2021.3.x 效果&#xff1a; 实现核心思路(shader)&#xff1a; fixed4 frag (v2f i) : SV_Target {fixed4 col tex2D(_MainTex, i.uv);// 调整相似度bool isRedMatch abs(col.r - _TargetColor.r) < 0.15;bool isGreenMatch abs(col.g - _Target…

什么是系统工程(字幕)45

0 00:00:01,030 --> 00:00:03,910 那首先呢&#xff0c;我们就要 1 00:00:04,380 --> 00:00:05,974 加一个分流器了 2 00:00:05,974 --> 00:00:07,568 它是一个三通接头 3 00:00:07,568 --> 00:00:09,960 三通接头在这里嘛&#xff0c;拖上来 4 00:00:11,530 -…

代码随想录算法训练营第三十四天| 860.柠檬水找零 、406.根据身高重建队列 、452. 用最少数量的箭引爆气球

文章目录 1.柠檬水找零2.根据身高重建队列3.用最少数量的箭引爆气球 1.柠檬水找零 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xf…

【Photoshop2020版本】零基础笔记(一)

哈喽大家好~最近博客内容换方向了哈哈哈~换成“实用版”了。 今天给大家带来的是 PS 相关内容 其实我也是刚学PS&#xff0c;所以想着自己做笔记还不如发布出去&#xff0c;让大家都能看到&#xff0c;有兴趣的伙伴们&#xff0c;可以跟着我的笔记一块学习&#xff0c;这个专…

操作系统(笔记)(一)

1、操作系统的功能和目标 1.1功能 存储管理文件管理设备管理处理机管理进程管理 1.2目标 方便性&#xff1a;操作系统作为用户与计算机硬件系统之间的接口&#xff0c;提供了直观的命令和界面&#xff0c;使得用户能够更容易地操作计算机。有效性&#xff1a;操作系统旨在提…

将ppt里的视频导出来

将ppt的后缀从pptx改为zip 找到【media】里面有存放图片和音频以及视频&#xff0c;看文件名后缀可以找到&#xff0c;mp4的即为视频&#xff0c;直接复制粘贴到桌面即可。 关闭压缩软件把ppt后缀改回&#xff0c;不影响ppt正常使用。