当前位置: 首页 > news >正文

zookeeper常见命令和常见应用

前言

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.dtcms.com/a/312394.html

相关文章:

  • MySQL——运维篇
  • K8S部署ELK(五):集成Kibana实现日志可视化
  • MySQL面试题及详细答案 155道(021-040)
  • 使用Database Navigator插件进行连接sqlite报错invalid or incomplete database
  • 2025年开关电源行业深度解析:从传统应用到新兴赛道的黄金赛道
  • MVC 发布
  • 代码随想录day53图论4
  • trace-cmd记录线程被中断打断的时间
  • 笔试——Day27
  • RabbitMQ面试精讲 Day 10:消息追踪与幂等性保证
  • spring-ai-alibaba 之 graph 槽点
  • 【设计模式】4.装饰器模式
  • 2025-0803学习记录21——地表分类产品的精度验证
  • Github怎么只下载某个目录文件?(Git稀疏检出、GitZip for Github插件、在线工具DownGit)Github下载目录
  • linux2.6 和 unix-v6 源码实验
  • Nginx相关实验(2)
  • 【2025/08/03】GitHub 今日热门项目
  • C# LINQ(LINQ to XML)
  • CAP 理论笔记
  • CUDA杂记--nvcc使用介绍
  • GitHub 趋势日报 (2025年08月02日)
  • 控制建模matlab练习07:比例积分控制-③PI控制器的应用
  • 深入掌握 ExcelJS:Node.js 中强大的 Excel 操作库
  • 小红书开源dots.ocr:单一视觉语言模型中的多语言文档布局解析
  • WebRTC前处理模块技术详解:音频3A处理与视频优化实践
  • ⭐CVPR2025 3D 生成新框架|Kiss3DGen 让 2D 扩散模型玩转 3D 资产生成
  • sqli-labs:Less-26关卡详细解析
  • 【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
  • Spring Boot 的事务注解 @Transactional 失效的几种情况
  • MCU中的复位生成器(Reset Generator)是什么?