【大数据】Zookeeper 客户端的命令行操作

news2024/12/28 2:07:42

Zookeeper 客户端的命令行操作

  • 1.显示某个路径下的所有节点:ls
  • 2.显示某个路径下的所有节点,以及当前节点的详细信息:ls2
  • 3.创建节点:create
  • 4.创建临时节点:create -e
  • 5.创建顺序(带编号)节点:create -s
  • 6.获取节点内容:get
  • 7.修改节点内容:set
  • 8.监听某个节点的值的变化:get -w
  • 9.监听某个节点的子节点变化:ls -w
  • 10.删除节点:delete
  • 11.查看节点状态:stat

我们已经搭建好了 Zookeeper 集群,接下来就是启动客户端,在里面输入增删改查相关的命令,然后发送给服务端执行,就类似于 Redis 一样。

# 输入 zkCli.sh 即可启动
# 会自动连接本地的 zookeeper 服务端
# 如果想连接其它节点的端,那么需要加上 -server 参数
# 比如 zkCli.sh -server ip:2181
[root@satori ~]# zkCli.sh

回车之后,客户端便可连接至 Leader 节点。

在这里插入图片描述
然后来看看命令都有哪些?

1.显示某个路径下的所有节点:ls

在这里插入图片描述

2.显示某个路径下的所有节点,以及当前节点的详细信息:ls2

但是该参数已经废弃,推荐使用 ls -s

在这里插入图片描述

不但显示根节点下面的所有节点,还显示了当前根节点的详细信息,就是绿色框框内的部分。那么它们都代表啥含义呢,来解释一下。

  • cZxid:创建节点时的事务 ID,每次向 Zookeeper 写入或者修改数据时都会产生一个事务 ID。它是 Zookeeper 中所有修改的次序,如果 zxid1 小于 zxid2,那么 zxid1 对应的修改操作在 zxid2 之前发生。
  • ctime:当前节点的创建时间,时间戳形式,单位毫秒。
  • mZxid:当前节点最后一次更新的事务 ID。
  • mtime:当前节点最后一次更新的时间,时间戳形式,单位毫秒。
  • pZxid:当前节点的子节点最后一次更新的事务 ID。
  • cversion:当前节点的子节点变化了多少次。
  • dataVersion:当前节点的数据变化了多少次。
  • aclVersion:当前节点访问控制列表多少次。
  • ephemeralOwner:如果节点是临时节点,则表示节点拥有的 Session ID,如果不是则为 0 0 0
  • dataLength:节点可以存储数据,所以它表示数据的长度。
  • numChildren:当前节点的子节点数量。

3.创建节点:create

比如 / 下面只有 Zookeeper 这一个节点,我们再创建一个新的。

在这里插入图片描述

因为节点是用来存储数据的,所以创建节点的时候也应该指定相应的值,正如 Redis 在 set 一个 key 的时候也要指定 value 一样。当然不指定也可以,只不过不指定的话相当于值为 null

通过 create 创建的节点默认是持久节点,那么什么是持久节点呢?首先 Zookeeper 的节点是有类型的,可以分为持久节点和临时节点:

  • 持久节点persistent):客户端和服务端断开连接之后,创建的节点不删除,也就意味着节点上的数据会保留。
  • 临时节点ephemeral):客户端和服务端断开连接之后,创建的节点会自动删除,数据不会被保留。

此外节点还可以带编号和不带编号,如果带编号的话,Zookeeper 会自动在节点的末尾加上一串数字。比如上面的 /ow,它默认是不带编号的,如果我们创建的是带编号的,那么节点创建之后就会变成 /ow001

编号会依次递增,因此带编号的节点也叫做 顺序节点

因此组合起来,Zookeeper 的节点类型总共有 4 4 4 种。其中使用 Zookeeper 作为分布式锁,便是基于 临时顺序节点 实现的。多个客户端同时往 Zookeeper 上面创建临时顺序节点,谁的编号最小,那么谁就先创建成功,我们就认为它拿到了分布式锁。

当客户端操作完共享数据需要释放锁的时候,只需要断开连接即可,这样该客户端创建的临时节点就会自动删除。一旦节点删除,那么它的下一个顺序节点就成了编号最小的节点,从而拿到分布式锁,因此这个机制就避免了因客户端挂掉而导致的死锁问题。

顺序节点 非常有用,特别是在分布式系统中,编号可以用于为所有事件进行全局排序,这样客户端通过顺序号就能推断事件的顺序。

使用 create 创建的节点默认是 持久非顺序 节点,那么其它类型的节点怎么创建呢?

4.创建临时节点:create -e

在这里插入图片描述

临时节点创建完毕,如果此时客户端断开连接,临时节点就会被删除。

在这里插入图片描述
我们重启客户端,再次查看,发现临时节点已经被删除了。

5.创建顺序(带编号)节点:create -s

在这里插入图片描述
创建的时候,自动在结尾加上编号。我这里之前创建过几个,现在编号是从 11 11 11 开始,总之顺序节点的编号是递增的,只会增大,不会减小。

所以 -e 表示临时节点,-s 表示顺序节点,那如果创建 临时顺序节点 呢?很简单,两个参数一块指定即可。

在这里插入图片描述

客户端退出之后,这个临时节点就会消失。

在这里插入图片描述
然后再次创建,发现编号从 14 14 14 开始,因为顺序节点的编号只会依次增加。

6.获取节点内容:get

在这里插入图片描述

如果加上 -s 参数,还可以获取节点的详细信息。

在这里插入图片描述
/china 节点存储的值是 beijing/china/henan 节点存储的值是 zhengzhou。所以 Zookeeper 的数据结构就类似一个树,树上的每一个节点都可以存储具体的值,并且节点之间具有父子关系。

7.修改节点内容:set

在这里插入图片描述
create 表示创建一个新的节点,每个节点会存储一个值,get 表示获取节点存储的值,set 表示修改节点存储的值。

需要注意的是,节点不能重复,所以我们不能这么做:

在这里插入图片描述
因为 /china/henan 这个节点已经存在了,我们不能重复 create,所以要修改节点的值的话,应该使用 set

8.监听某个节点的值的变化:get -w

假设现在有两个客户端同时连接至 Zookeeper 集群,客户端 A 执行 get -w /china 就表示监听 /china 这个节点。然后在客户端 B 上面对 /china 这个节点进行 set,那么 A 机器上就会收到提示,提示我们监听的节点被修改了。

satori 节点上执行 get -w /china,然后返回节点的值,看起来和 get /china 没有什么区别。

在这里插入图片描述

koishi 节点上执行 set /china 北京,将节点的值给改掉。

在这里插入图片描述

再来查看 satori 节点,发现有额外输出。

在这里插入图片描述
注意:监听是一次性的,如果再次 set 的话,那么 A 机器就不会再提示了,除非再次 watch。另外除了节点的值被修改之外会提示,当节点被删除时也会提示。

那么这背后的原理是怎么实现的呢?首先监听的时候,客户端会创建两个子线程,一个负责网络通信(connector),另一个负责监听(listener)。通过 connector 将注册的监听事件发送给服务端,服务端将注册的监听事件添加进注册监听器列表中。

当服务端监听到有数据变化,就会将这个消息发送给 listener 线程,然后 listener 线程将消息输出出来。

9.监听某个节点的子节点变化:ls -w

在这里插入图片描述
当新建一个子节点、或者删除一个子节点的时候,就会收到提示,但是修改不会,所以这里监听的变化指的是 子节点数量 的变化。

:这里只监听子节点的变化,子节点的子节点则不在范围之内。至于实现原理,和 get -w 相同,并且执行 ls -w 之后也只会监听一次。

10.删除节点:delete

在这里插入图片描述

注意:delete 只能删除叶子节点,而非叶子节点、比如这里的 /china 就无法删除。

在这里插入图片描述

在 3.5.0 之前删除非叶子节点使用的命令是 rmr,当然现在也可以使用,只不过废弃了。

在这里插入图片描述

11.查看节点状态:stat

在这里插入图片描述
这些字段的含义我们已经介绍过了,还可以通过 ls -s 或者 get -s 获取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密码学:一文看懂初等数据加密一对称加密算法

文章目录 对称加密算法简述对称加密算法的由来对称加密算法的家谱数据加密标准-DES简述DES算法的消息传递模型DES算法的消息传递过程和Base64算法的消息传递模型的区别 算法的实现三重DES-DESede三重DES-DESede实现 高级数据加密标准一AES实现 国际数据加密标准-IDEA实现 基于口…

Spring面试篇

Spring面试篇 前置知识ApplicationContextInitializerApplicationListenerBeanFactoryBeanDefinitionBeanFactoryPostProcesssorAwareInitialzingBean,DisposableBeanBeanPostProcessor SpringBoot启动流程IOC容器初始化流程Bean生命周期Bean循环依赖解决 SpringMvc…

Burp Suite Intruder的4种攻击类型

这里写自定义目录标题 Burp Suite Intruder的4种攻击类型 Burp Suite Intruder的4种攻击类型

Spring 七种事务传播性介绍

作者:vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识。 Spring中定义了7种事务传播性: PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED…

光明源智能:智慧厕所系统,打造智慧化科技智能生活

在这个科技飞速发展的时代,我们的生活正经历着一场全面的革命,而这场变革不仅仅局限于我们的工作和娱乐,甚至涉及我们生活中最私密的空间之一——卫生间。随着科技与卫生的巧妙融合,智慧厕所系统正日益成为一个引人注目的焦点。本…

构建高效秒杀系统的设计原理及注意事项

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

5G-A,一根蓄满能量的弹簧

光阴转瞬,恍然间2024已经来到身边。经历了2023年全球AI技术大爆发,以及智能汽车、虚拟现实、自主科技等诸多领域取得关键进展。想必大家希望知道在新一年中有哪些值得期待的科技增长空间。 如果是这样,那么不妨将目光投向5G-A。 与其他科技领…

轻松入门:Anaconda 在 PyCharm 中的配置与应用指南

1 Anaconda Anaconda 和 Conda 是两个相关但不同的概念。 Anaconda 是一个免费且开源的发行版,包含了 Python 和 R 语言的数据科学和机器学习相关的众多包,它包括 Conda、Python、Jupyter Notebook 等多个科学计算和数据科学中常用的应用。 Anaconda 通过…

unity中0GC优化方案《zstring》

文章目录 序言简介GC带来的问题性能瓶颈玩家体验受损 使用方式 序言 游戏开发秉承遇到好东西要分享,下面介绍zstring,感谢作者开源无私奉献 源码地址:https://github.com/871041532/zstring 简介 GC带来的问题 性能瓶颈 GC暂停主线程执行…

你珍藏的那个表情包女孩,现在滤镜碎了一地。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文|猴哥聊娱乐 编辑|侯欢庭 七年前,一个年仅三岁的小女孩以其无邪的表情包风靡网络&#xff0…

科锐16位汇编学习笔记 03 汇编指令

指令种类 数据传送指令算数运算类指令位操作类指令串操作类指令控制转移类指令处理器控制类指令 数据传送类指令 传送类指令不影响标志位,**除了标志位传送指令外。** 传送指令MOV(move) 说明 ​ 把一个字节或字的操作数从源地址传送至…

安全与认证Week3 Tutorial+历年题补充

目录 1) 什么是重放攻击? 2)什么是Kerberos系统?它提供什么安全服务? 3)服务器验证客户端身份的一种简单方法是要求提供密码。在Kerberos中不使用这种身份验证,为什么?Kerberos如何对服务器和客户机进行身份验证? 4) Kerberos的四个要求是什么?Kerberos系…

Python IDE Pycharm服务器配置方法并结合内网穿透工具实现远程开发

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

位移贴图还原电影3D角色

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图(Displacement Map)在电影制作中是一…

Databend 的安装配置和使用

介绍 Databend 是一个内置在 Rust 中的开源、弹性和工作负载感知的云数据仓库,为 Snowflake 提供了具有成本效益的替代方案,专门对最大的数据集进行复杂分析而设计。 性能: 在存储对象上,能快速进行数据分析。没有索引和分区&a…

扩展 apiserver 连接认证 ip, apiserver证书更新

本文来自我的博客地址 文章目录 问题场景:问题分析:问题解决:查看 apiserver 证书支持的 ip 或 host使用 openssl 生成证书:再次查看 apiserver 证书支持的 ip 或 host 再次尝试将 master 加点加入参考 问题场景: k8s 1.28.1 集群后期新增 vip apiserver 证书不支持 vip 引入…

【LLM】大型语言模型:2023年完整指南

Figure 1: Search volumes for “large language models” 近几个月来,大型语言模型(LLM)引起了很大的轰动(见图1)。这种需求导致了利用语言模型的网站和解决方案的不断开发。ChatGPT在2023年1月创下了用户群增长最快…

工智能基础知识总结--导出SVM要优化的问题

导出SVM要优化的问题 对于上图中这样一个二分类线性可分问题,期望找到一个分类超平面将正负类分开,SVM就是一个用来寻找这样的分类超平面的算法。 定义正负类的标签分别为1、-1,分类超平面的表达式为 f ( x ) = w T x + b f(x)=w^Tx+b

vue的插值语法,vue指令系统,style和class

官网:https://cn.vuejs.org/ 文档3:https://cn.vuejs.org/ 文档2:https://v2.cn.vuejs.org/ M-V-VM架构 mvvm 前端vue架构 M:model 数据层 V:view 用户视图层 VM:viewmodel 连接数据和视图…

技术概述:ARMv8体系结构

John Goodacre, Director Program Management ARM Processor Division, November 2011 背景:ARM体系结构 从ARM精简指令集体系结构提出到现在已经有20多年了;ARMv7系列处理器是在ARMv4基础上设计的,随着ARMv7系列处理器大量应用&#xff0…