zookeeper常见命令和常见应用

发布于:2025-08-05 ⋅ 阅读:(14) ⋅ 点赞:(0)

前言

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 路径                递归式的监听这个节点目录下的所有目录的变化(创建删除),不能监听节点内容


网站公告

今日签到

点亮在社区的每一天
去签到