当前位置: 首页 > 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.xdnf.cn/news/1233901.html

相关文章:

  • SpringBoot学习总结
  • python学智能算法(三十一)|SVM-Slater条件理解
  • Vim编辑器详解:从入门到高效使用
  • 【Unity】背包系统 + 物品管理窗口 (上)
  • 【一天一个知识点】RAG遇见推理
  • 谷歌开源Agent框架ADK快速入门
  • 前端应用权限设计面面观
  • 防御综合实验
  • 【0基础PS】PS工具详解--图案图章工具
  • 安灯系统(Andon System)
  • 【昇腾推理PaddleOCR】生产级部署方式
  • SpringBoot与TurboGears2跨栈、整合AI服务、智能客服路由系统整合实战
  • FreeRTOS源码分析二:task启动(RISCV架构)
  • 单位长度上的RC参数
  • Codeforces Round 1039 (Div. 2) A-C
  • sifu mod制作 相关经验
  • LangGraph认知篇-Command函数
  • 【ROS2】ROS2节点Node机制与常用命令行
  • 快速了解决策树
  • 一个物理引擎仿真器(mujoco这种)的计算流程
  • 面经——电子电路技术知识详解
  • 关于鸦片战争的历史
  • python匿名函数lambda
  • 题单【模拟与高精度】
  • leetcode热题——组合
  • Java 中的 HashMap.merge() 方法详解
  • 【AI学习】RadioDiff:代码学习
  • 西门子 G120 变频器全解析:从认知到参数设置
  • SpringBoot 02 AOP
  • 「iOS」————weak底层原理