前言

ZooKeeper自带一个交互式命令行工具(通过zkCli.shzkCli.cmd启动),提供了一系列操作ZooKeeper数据节点的命令

下面我们对zookeeper常用命令进行介绍

使用prettyZoo命令行窗口

使用prettyZoo客户端链接zookeeper  打开zookeeper命令行窗口

如果还没有安装zookeeper并且没有prettyZoo客户端工具的同志,可以看我这篇文章

使用docker安装Zookeeper-CSDN博客

链接zookeeper

打开zookeeper客户端命令行窗口

zookeeper常见命令

查询命令

ls 路径                   查看当前路径下的子节点

get 路径                 查看当前路径节点的信息

创建命令

create [-s] [-e] [-c] [-t 存活时间] 节点c路径 节点数据 [acl]

-s:  创建顺序节点(路径后自动追加递增序号,如 /path-0000000001)
-e:  创建临时节点(会话结束自动删除)会话就是指服务器和zookeeper的长链接

-c:  创建容器节点 容器节点中没有任何子节点,容器节点会被一分钟定时删除,可以存储数据

-t:  创建定时删除节点,需要到系统配置开启,不稳定不建议使用
acl: 访问控制列表

其中,顺序节点和临时节点一般用于构建zookeeper分布式锁进行使用的

临时节点实现原理

sessionId是用来维持链接会话的

所以通过监控sessionId来确定临时节点的存在,sessionId结束,临时节点删除

就可以实现会话结束临时节点自动消失的效果了

zookeeper临时节点实现注册与发现

服务器注册到zookeeper上面就是作为客户端进行会话连接在zookeeper上面创建了一个临时节点,当这个服务器出现故障下线时候,会话连接会断开,因为临时节点是断开会话自动消失的,所以此时zookeeper上面就没有这个服务器的注册信息了,因为注册的临时节点自动删除了

zookeeper构建分布式锁原理

使用顺序临时节点实现

1、每一个服务器业务请求过来都会创建一个顺序序号节点
2、代码设置最小的节点拿到锁
3、监听前面序号节点,前面节点执行完业务之后删除自己的临时节点(解锁),后面那个节点被唤醒开始执行。以此类推可以得到锁的形式
4、顺序节点要使用临时节点,保证当服务器出现网络故障的时候锁自动删除,其他客户端重新竞争锁,防止一直等待那个故障的服务器其他服务器获取不到锁导致死锁

修改命令

set 节点路径 节点数据 [version]

version:可选版本号 实现乐观锁,避免并发覆盖

zookeeper乐观锁实现原理

使用乐观锁修改数据分为两步

查询出当前数据的版本号

对比当前版本号和获取版本号是否一样,一样修改数据成功,否则失败

        这一步是原子操作,zookeeper在代码中有专一的封装方法可以调用

删除命令

delete 节点路径 [version]

version:可选版本号 实现乐观锁,避免并发覆盖

权限命令

首先,权限是绑定到当前会话的,如果会话失效权限要重新赋予

说是给会话注册账号密码,其实账号密码本质就是一个鉴权码,访问前验证一下当前会话鉴权码是否匹配

权限设置

注册当前会话的账号密码

addauth digest 账号:密码

这里赋予好账号密码,下面就可以访问针对这个身份开放权限的节点

创建节点并设置权限

create 节点路径 节点内容 auth:账号:密码:权限字符

权限字符

        c:create 创建权限,允许在该节点下创建子节点

        w:write 更新权限,允许更新该节点的数据

        r:read 读取权限,允许读取该节点的内容以及子节点的列表信息

        d:delete 删除权限,允许删除该节点的子节点信息

        a:admin 管理者权限,允许对该节点进行acl权限设置

权限字符 就是填上面这几个字母,想赋予多个就连着追加多个字母即可

监听节点命令

作用: 监听zookeeper上面某一个节点的变化

get -w 路径                   查询这个路径节点的内容,并且在其他会话修改这个路径节点的时候,当前会话会提示这个节点发生变化,只监听一次数据变化,创建子节点监听不到,修改和删除节点内容可以监听到

ls -w 路径                     监听这个节点目录下面子节点的变化(创建删除),不能监听节点内容

ls -R -w 路径                递归式的监听这个节点目录下的所有目录的变化(创建删除),不能监听节点内容

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

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

相关文章

前端异步任务处理总结

一、异步任务常见场景网络请求:fetch()、axios 等 API 调用定时操作:setTimeout、setInterval用户交互:事件监听回调资源加载:图片/脚本动态加载Web Workers:后台线程计算二、核心处理方案1. Promise(ES6&a…

机器学习第三课之逻辑回归(二)LogisticRegression

目录 简介 一.分类评估⽅法 1.混淆矩阵 2.精确率(Precision)与召回率(Recall) 3.F1-score 4.分类评估报告api 2.正则化惩罚 3.⽋拟合和过拟合 4.K折交叉验证 5.代码分析 简介 接上一篇博客最后 机器学习第二课之逻辑回归(一)LogisticRegres…

基于ELK Stack的实时日志分析与智能告警实践指南

基于ELK Stack的实时日志分析与智能告警实践指南 一、业务场景描述 在生产环境中,服务实例数量众多,日志量激增,传统的文本 grep 或 SSH 登录方式已无法满足实时监控与故障定位需求。我们需要搭建一个可扩展、低延迟的日志收集与分析平台&…

需求变更过程中出现的团队资源冲突问题处理的一些小技巧

​​一、资源冲突的典型场景​​ ​​技术资源争夺​​:多个需求同时需要同一开发人员或技术专家支持 ​​人力资源过载​​:突发需求导致团队成员工作量超负荷(如同时处理3个紧急需求) ​​设备/环境冲突​​:测试服务器资源不足或特定开发工具许可证被占用 ​​跨团队协…

基于Matlab图像处理的液晶显示器表面缺陷检测与分类研究

本课题设计并实现了一种基于 MATLAB 的图像缺陷检测系统,系统集成中值滤波、对比度增强、梯度检测与区域分析等图像处理技术,能够对图像中的点状、线状和块状缺陷进行有效识别与分类。用户可通过图形用户界面(GUI)导入待测图像&am…

prometheus应用demo(一)接口监控

目录 完整代码(纯Cursor生成) 1、pom 2、配置和启动类 3、自定义指标bean 4、上报 5、业务代码 一、统计API请求(次数、响应码等) 1、统计总数 关键代码: (1)自定义指标DTO &#xff0…

逃离智能家居“孤岛”!用 Home Assistant 打造你的全屋互联自由王国

文章目录🤔 痛点暴击:智能家居的“巴别塔困境”🛠️ Home Assistant 是个啥?简单粗暴版定义🔍 硬核拆解:Home Assistant 的魅力之源🚀 上车指南:如何开始你的 HA 之旅?第…

数据结构:如何判断一个链表中是否存在环(Check for LOOP in Linked List)

目录 初始思考:什么叫“链表有环”? ❌ 第一种直接想法(失败):我们是不是能“记住走过的节点”? 那我们换一个思路:我们能否只用两个指针来检测环? 第一步:定义两个指…

深入理解Java的SPI机制,使用auto-service库优化SPI

文章目录一、简介二、使用1、服务提供者(或者第三方公共):定义接口2、服务提供者:定义实现类3、服务提供者:注册服务4、构建服务提供者jar包5、客户端:使用 ServiceLoader 来加载服务三、源码分析1、源码2、…

PPT自动化 python-pptx - 10 : 表格(tables)

在日常工作中,我们经常需要制作包含表格的 PowerPoint 演示文稿,以此清晰展示数据或文本信息。手动制作不仅耗时,当数据更新时还需重复操作,效率低下。而 python-pptx 库为我们提供了自动化操作 PowerPoint 表格的可能。本文将详细…

在安卓中使用 FFmpegKit 剪切视频并添加文字水印

在安卓中用到的三方库:https://github.com/arthenica/ffmpeg-kit 这个库很强大,支持很多平台,每个平台都有各自的分支代码,用了一段时间,稳定性挺好的, 找到安卓下的分支:FFmpegKit for Andro…

Flask + HTML 项目开发思路

Flask HTML 项目开发思路:以公共资源交易信息展示为例 一、开篇明义——为什么选 Flask 框架 在众多 Python Web 框架(如 Django、Tornado 等)里,本次项目坚定选择 Flask,背后有清晰的技术考量: 1. 轻量…

Vue中:deep()和 ::v-deep选择器的区别

在 Vue.js 中,:deep()和 ::v-deep都是用于穿透组件作用域的深度选择器,但它们在语法、适用场景和版本支持上存在区别。以下是两者的核心差异:一、​​语法与用法​ :Vue2中用 ::v-deep,Vue2中不支持:deep()&#xff0c…

Deep learning based descriptor

1、DH3D: Deep Hierarchical 3D Descriptors for Robust Large-Scale 6DoF Relocalization 论文链接 代码链接 这是一篇训练点云的文章,在训练出local descriptor之后,通过聚类的方法得出global descriptor,并且提出了hierarchical network&…

PandasAI连接LLM对MySQL数据库进行数据分析

1. 引言 在之前的文章《PandasAI连接LLM进行智能数据分析》中实现了使用PandasAI连接与DeepSeek模型通过自然语言进行数据分析。不过那个例子中使用的是PandasAI 2.X,并且使用的是本地.csv文件来作为数据。在实际应用的系统中,使用.csv作为库表的情况比…

FloodFill算法——DFS

FloodFill算法就是用来寻找性质相同的连通快的算法,这篇博客都是用dfs来实现FloodFill算法 1.图像渲染 题目链接:733. 图像渲染 - 力扣(LeetCode) 题目解析:将和(sr,sc)相连的所有像素相同的…

【BUUCTF系列】[极客大挑战 2019]LoveSQL 1

本文仅用于技术研究,禁止用于非法用途。 Author:枷锁 文章目录一、题目核心漏洞分析二、关键解题步骤与技术解析1. 确定列数(ORDER BY)2. 联合查询获取表名3. 爆破字段名4. 提取Flag三、漏洞根源与防御方案1. 漏洞成因2. 防御措施四、CTF技巧…

AI时代,童装销售的“指路明灯”

别看现在AI、大数据这些词眼花缭乱的,当年我刚入行那会儿,也跟你一样,对着一堆库存和销量数据发愁,不知道劲儿该往哪使。童装销售这行,看着简单,其实水挺深。不过呢,这二十多年摸爬滚打下来&…

Swin-Transformer从浅入深详解

第一部分:出现背景在 Swin Transformer 出现之前,计算机视觉(Computer Vision, CV)领域主要由 CNN (卷积神经网络) 主导。后来,NLP(自然语言处理)领域的 Transformer 模型被引入 CV,…

如何手动打包 Linux(麒麟系统)的 Qt 程序

gcc版本 gcc版本确保目标系统(运行环境)的 GCC 版本 高于或等于开发环境的版本,否则程序无法在目标平台运行。通过 gcc -v 可查看当前版本。cmake生成可执行文件 强烈建议在cmakelists添加设置运行时 rpath 为 $ORIGIN/…/lib(相对…