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…

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…

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、解压到指定目录,这…

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

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

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

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

半小时实现GPT纯血鸿蒙版

仅需半小时,即可实现纯血鸿蒙版本的ChatGPT! 废话少说,先看效果图: 如上图所示,这个小Demo实现了AI智能问答。靠右加粗的文本是用户点击底部提交按钮后出现的;后面靠左对齐的普通文本是来自AI的回答内容。…

IP定位技术:如何保护患者的隐私和医疗数据安全?

随着科技的飞速发展,互联网已经深入到我们生活的方方面面,医疗行业也不例外。然而,这也带来了网络安全问题。如何保护患者的隐私和医疗数据的安全,成为了医疗行业面临的重大挑战。IP定位技术的应用,为解决这一问题提供…

Unity中URP下抓屏的 开启 和 使用

文章目录 前言一、抓屏开启1、Unity下开启抓屏2、Shader中开启抓屏 二、抓屏使用1、设置为半透明渲染队列,关闭深度写入2、申明纹理和采样器3、在片元着色器使用请添加图片描述 三、测试代码 前言 我们在这篇文章中看一下,URP下怎么开启抓屏。 一、抓屏…

《共建开源》系列:Airtest-Framework - UI自动化框架系统

Airtest- Framework 平台简介 Airtest- Framework 是 基于 unittest、Flask、Airtest 搭建的 开源的 UI 自动化框架系统 提供 HTTP API 接口,实现自动解析包名并自动执行 相应目录下的 Case。目前仅支持单台设备连接。多个任务会自动排队处理。 系统要求 Pytho…

【动态规划】【二分查找】C++算法 466 统计重复个数

作者推荐 【动态规划】458:可怜的小猪 涉及知识点 动态规划 二分查找 力扣:466 统计重复个数 定义 str [s, n] 表示 str 由 n 个字符串 s 连接构成。 例如,str [“abc”, 3] “abcabcabc” 。 如果可以从 s2 中删除某些字符使其变为 s1,则称字符串…

互信息法的原理详解

文章目录 互信息法(上)互信息是什么从信息增益角度理解互信息从变量分布一致角度理解互信息 卡方检验与离散变量的互信息法 互信息法(上) 尽管f_regression巧妙的构建了一个F统计量,并借此成功的借助假设检验来判断变…

跨境商城系统如何开发代购商城、国际物流、一件代发等功能?

跨境商城系统的开发涉及到多个方面,其中代购商城、国际物流和一件代发等功能是其中的重要组成部分。本文将详细介绍如何开发这些功能,以帮助跨境商城系统更好地满足市场需求。 一、代购商城的开发 代购商城是跨境商城系统中的重要功能之一,它…

互联网加竞赛 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据的股票量化分析与股价预测系统 该项目较为新颖…