zookerper入门

zookerper介绍

ZooKeeper 是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题.
在这里插入图片描述
ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制).提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理,从而用来维护和监控存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等功能。

安装

1.下载

// 下载地址
https://zookeeper.apache.org/releases.html

2.解压,复制配置文件

// 启动会默认读取文件zoo.cfg
cp zoo_sample.cfg zoo.cfg

3.启动zkserver

// 启动命令
bin/zkServer.sh start
// 启动日志
ZooKeeper JMX enabled by default
Using config: /Users/gy/java/apache-zookeeper-3.8.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

4.zkCli连接

// 客户端链接命令bin/zkCli.sh
// 连接成功
mplete on server localhost/127.0.0.1:2181, session id = 0x10005ccbcd30000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null

客户端命令

// 显示所有客户端命令
help
// 查看节点
ls [-s] [-w] [-R] path
ls /path --查看当前znode子节点
ls -w /path --监听子节点变化
ls -s /path -- 查看节点状态信息
ls -R /path --表示递归获取
// 创建节点
create  [-s] [-e] [-c] [-t ttl] path [data] [acl]
-s : 创建有序节点
-e : 创建临时节点
-c : 创建一个容器节点。
t ttl : 创建一个TTL节点,-t时间(单位毫秒)
data:节点的数据,可选,如果不使用时,节点
数据就为null
acl:访问控制
// 获取节点数据信息.
get [-s] [-w] path
-s: 节点状态信息; 
-w: 监听节点变化
// 设置节点数据
set [-s] [-v version] path data
-s:表示节点为顺序节点
-v: 指定版本号
// 获取节点的访问控制信息
getAcl [-s] path
-s: 节点状态信息
// 设置节点的访问控制列表
setAcl [-s] [-v version] [-R] path acl
-s:节点状态信息(时间戳、版本号、数据大小
等)
-v:指定版本号
-R:递归的设置
// 查看节点状态信息
stat [-w] path 查看节点状态信息
// 删除某一节点
delete [-v version] path
只能删除无子节点的节点。
-v: 表示节点版本号
// 递归的删除某一节点及其子节点
deleteall path
// 对节点增加限制
setquota -n|-b val path
n:表示子节点的最大个数
b:数据值的最大长度,-1表示无限制

节点分类

// 持久节点 persistent node
创建后会一直存储在ZooKeeper服务器上
create /pNode
// 临时节点 ephemeral node
创建临时节点后,若创建该节点的客户端异常超市或关闭后,该节点也会被删除.
create -e  /eNode
// 有序节点 sequential node
在我们创建有序节点的时候会自动使用一个
单调递增的数字作为后缀。
create -s  /sNode
// 容器节点 container node
当一个容器节点的最后一个子节点被删除后,容器节点也会被删除。
create -c  /sNode
// TTL节点 ttl node
当一个TTL节点在 TTL 内没有被修改并且没有子节点,会被删除。注意:默认此功能不开启,需要修改配置文件extendedTypesEnabled=true,TTL不能用于临时节点.
create -t 1000 /ttl_node

节点状态信息

// stat /test
cZxid = 0x1b  // Znode事务id
ctime = Thu Jan 04 17:19:30 CST 2024 // Znode创建时间
mZxid = 0x1b // Znode被修改的事务id(与cZxid比较可以确定更新操作的顺序)
mtime = Thu Jan 04 17:19:30 CST 2024 // Znode最新更新时间
pZxid = 0x1c // 表示该节点子节点列表最后修改的事务id
cversion = 1 // Znode的版本号
dataVersion = 0 // 数据版本号
aclVersion = 0 // qcl版本号
ephemeralOwner = 0x0 // 若为临时节点,ephemeralOwner与session id绑定,其他都为0
dataLength = 0 // 数据长度
numChildren = 1 // 子节点数量

监听机制

Zookeeper中的watch机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,通知给客户端.监听的对象是事件.

// 事件类型
None: 连接建立事件
NodeCreated: 节点创建
NodeDeleted: 节点删除
NodeDataChanged:节点数据变化
NodeChildrenChanged:子节点列表变化
DataWatchRemoved:节点监听被移除
ChildWatchRemoved:子节点监听被移除
// Watch
watch是一次性的,一旦被触发就会移除,再次
使用时需要重新注册
// addWatch
永久性Watch.addWatch的作用是针对指定节点添加事件监听,支持两种模式:
PERSISTENT:持久化订阅,针对当前节点的修改和删除事件,以及当前节点的子节点的删除和新增事件。
PERSISTENT_RECURSIVE:持久化递归订阅(默认),在PERSISTENT的基础上,增加了子节点修改的事件触发,以及子节点的子节点的数据变化都会触发相关事件(满足递归订阅特性)

应用场景

ZooKeeper适用于存储和协同相关的关键数据,不适合用于大数据量存储。有了上述众多节点特性,使得 zookeeper 能开发不出不同的经典应用场景,比如:
注册中心、数据发布/订阅(常用于实现配置中心)、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁、分布式队列

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

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

相关文章

typora导出html添加目录

typora导出html添加目录 使用方法 首先要从typora导出html文件,之后用记事本编辑器html文件 找到文档最后面,如图: 用文字编辑类工具打开sideBar.txt,复制其中所有内容【内容在下面】 在如上图的位置插入所复制的内容 打开修改…

漏油控制器有用吗?漏油监测器多少钱一个?

漏油控制器也可以被称作漏油监测器、漏油传感器,是漏油检测系统里的一部分,一般是和漏油检测绳组合在一起使用,用来检测油罐、输油管道、油类化工厂等场合是否有油料泄露。很多人刚开始可能会觉得难以置信,这么一个小东西就可以检…

SPDK中常用的性能测试工具

本文主要介绍磁盘性能评估的方法,针对用户态驱动Kernel与SPDK中各种IO测试工具的使用方法做出总结。其中fio是一个常用的IO测试工具,可以运行在Linux、Windows等多种系统之上,可以用来测试本地磁盘、网络存储等的性能。为了和SPDK的fio工具相…

两周掌握Vue3(四):计算属性、监听属性、事件处理

文章目录 一、计算属性1.什么是计算属性2.代码示例 二、监听属性三、事件处理 代码仓库:跳转 当前分支:04 一、计算属性 1.什么是计算属性 Vue 中的计算属性具有以下作用: 数据处理:计算属性可以用于对数据进行处理和计算&…

医院患者满意度抽样方法

医院患者满意度调查的抽样方法是选择一部分患者,代表整体患者群体,以便获取可靠的数据,同时降低成本和时间开销。以下是一些医院患者满意度调查中常用的抽样方法: 简单随机抽样:这是一种最基本的抽样方法,…

格雷希尔G65系列快速接头满足汽车减震器的气压、油压测试要求

当汽车经过不平路面时,汽车减震器可以抑制弹簧吸震后因反弹带来的震荡和来自路面的冲击,为乘客带来平稳舒适的行车体验。减震器在出厂之前,需要模拟汽车的真实行驶环境,在模拟当中需要对它们进行气压和油压的轮番测试。 客户的测试…

ssm基于java web的防疫工作志愿者服务平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本防疫工作志愿者服务平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数…

PHP短链接url还原成长链接

在开发过程中,碰到了需要校验用户回填的短链接是不是系统所需要的,于是就需要还原找出短链接所对应的长链接。 长链接转短链接 在百度上搜索程序员,跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。 长链接 http…

代码随想录 字符串

344.反转字符串 344. 反转字符串 简单 提示 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a…

解析七人拼团,一人出局:社交电商的新玩法

每天五分钟讲解一个电商模式,大家好我是模式策划啊浩Zeropan_HH 在当今的社交电商时代,各种创新的营销策略层出不穷。其中,“七人拼团,一人出局”的玩法在近年来逐渐崭露头角,成为一种颇受欢迎的营销模式。那么&#…

stm32---输入捕获实验实操(巨详细)

这次来分享上次没说完的输入捕获的知识点 实验中用到两个引脚,一个是通用定时器 TIM3 的通道 1,即 PA6,用于输出 PWM 信号,另一 个是高级控制定时器 TIM1 的通道 1,即 PA8,用于 PWM 输入捕获,实…

vue3 生命周期

与 2.x 版本生命周期相对应的组合式 API beforeCreate -> 使用 setup() created -> 使用 setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroye…

服务器新创建账号并设置密码与用户权限

1、创建用户: 在root权限下,输入命令useradd -m 用户名,如下 sudo useradd -m love2、设置密码: 输入命令passwd 用户名 回车,接着输入密码操作,需输入两次 sudo password good9993、给用户设置最高权限&…

海外動態IP與海外靜態IP的區別詳解 - okey proxy

根據分配方式的不同,IP地址可以分為靜態IP和動態IP。那麼,海外動態IP和海外靜態IP又有什麼區別呢?本文將詳細解析。 海外動態IP是什麼? 海外動態IP是動態分配的海外IP地址。每次用戶上網時,都會從服務提供商的IP地址池…

window中安装Apache http server(httpd-2.4.58-win64-VS17)

windows中安装Apache http server(httpd-2.4.58-win64-VS17) 1、下载windows版本的的httpd, https://httpd.apache.org/docs/current/platform/windows.html#down 这里选择的是Apache Lounge编译的版本 https://www.apachelounge.com/download/ 2、解压到指定目录,这…

python函数装饰器参数统计调用时间和次数

1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 …

C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行

一、打开Visual Studio,创建项目->Windows 服务(.NET Framework) 二、点击Service.cs 点击切换到代码视图 static Timer Timer; private Thread monitorThread; private static string logFilePath; private static Process winFormsProcess; public Service1(…

如何修复DLL错误或丢失的问题,这里提供几种方法

DLL错误是指DLL文件的任何错误,一种以.dll文件扩展名结尾的文件。 DLL错误可能出现在微软的任何操作系统中,包括Windows 10、Windows 8、Windows 7、Windows Vista和Windows XP。 DLL错误尤其麻烦,因为存在许多这样类型的文件,所…

obgs格式能通过Dasviewer导入到Revit吗?

答:Dasviewer可以支持las转换osgb,再通过osgb转换fbx或者obj。当然也可以通过重建的方式建模。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三…

入门教程:使用 Postman 发送 post 请求

Postman 是一个实用的开发工具,它让发送各类 POST 请求成为了可能,包括文本、JSON、XML 以及文件等。开发者利用此工具不仅能够检验API的功能性,还能仿真客户端的请求行为,进而深入了解客户端如何与 API 进行互动。 HTTP 协议中的…