Zookeeper 命令使用和数据说明

文章目录

    • 一、概述
    • 二、命令使用
      • 2.1 登录 ZooKeeper
      • 2.2 ls 命令,查看目录树(节点)
      • 2.3 create 命令,创建节点
      • 2.4 delete 命令,删除节点
      • 2.5 set 命令,设置节点数据
      • 2.6 get 命令,获取节点数据
    • 三、数据解析

一、概述

  • ZooKeeper是一个开源的、分布式的协调服务,它主要用于分布式系统中的数据管理和协调任务。它提供了一个具有高可用性的分布式环境,用于存储和管理小规模数据,例如配置信息、命名服务、分布式锁等。

  • ZooKeeper的数据模型基于树形结构,类似于文件系统的目录结构。每个节点(Node)都可以存储一个小的数据块,称为节点数据(Node Data)。每个节点都有一个唯一的路径标识符,称为节点路径(Node Path)。节点路径使用斜杠(/)进行分隔,类似于文件系统的路径。

  • ZooKeeper的数据具有以下特点:

    1. 层次结构:ZooKeeper的数据以树形结构组织,类似于文件系统的目录结构。每个节点可以包含子节点,形成层次结构。(基于内存的,默认最大1MB)
    2. 有序性:ZooKeeper对创建和修改节点的顺序进行严格的有序性保证。每个写操作都会分配一个全局唯一的递增编号(称为ZXID),这样可以对操作进行排序和重放,确保数据的一致性。
    3. 临时节点:ZooKeeper支持创建临时节点。当创建临时节点的客户端与ZooKeeper失去连接时,该节点会被自动删除。这对于实现临时性的任务分配和会话管理非常有用。(这点很重要:基于会话(Session)管理数据)
    4. 通知机制:ZooKeeper提供了通知机制,可以让客户端在节点数据发生变化时得到通知。通过注册监听器,客户端可以接收到节点的创建、删除和修改事件,从而实现对数据的实时监控和及时响应。
    5. 高可用性:ZooKeeper的设计目标之一是高可用性。它使用了多数投票算法来实现主节点的选举,当集群中的节点发生故障时,可以自动选择新的主节点,保证系统的可用性。(节点可用性是通过选举超半数机制,数据可用性是广播半数以上成功算成功)
  • 在ZooKeeper集群中,每个节点都可以连接到其他节点,建立相互之间的通信和数据同步。通过这些连接,集群中的节点可以相互通知和同步数据的变化,以实现数据的一致性和高可用性。

  • 如果您还不会安装 ZooKeeper,请看这里 ZooKeeper 安装说明。

  • Zookeeper 数据示意图
    在这里插入图片描述

二、命令使用

2.1 登录 ZooKeeper

  • 使用 zkCli.sh 进入 ZooKeeper

    zkCli.sh
    
    • 查看可使用的指令帮助

      [zk: localhost:2181(CONNECTED) 0] help
      ZooKeeper -server host:port -client-configuration properties-file cmd args
      addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTEN T_RECURSIVE] - default is PERSISTENT_RECURSIVE
      addauth scheme auth
      close
      config [-c] [-w] [-s]
      connect host:port
      create [-s] [-e] [-c] [-t ttl] path [data] [acl]
      delete [-v version] path
      deleteall path [-b batch size]
      delquota [-n|-b|-N|-B] path
      get [-s] [-w] path
      getAcl [-s] path
      getAllChildrenNumber path
      getEphemerals path
      history
      listquota path
      ls [-s] [-w] [-R] path
      printwatches on|off
      quit
      reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1 :port2;port3[,…]]] | [-add serverId=host:port1:port2;port3[,…]] [-remove s erverId[,…]*]
      redo cmdno
      removewatches path [-c|-d|-a] [-l]
      set [-s] [-v version] path data
      setAcl [-s] [-v version] [-R] path acl
      setquota -n|-b|-N|-B val path
      stat [-w] path
      sync path
      version
      whoami
      Command not found: Command not found help
      [zk: localhost:2181(CONNECTED) 1]

2.2 ls 命令,查看目录树(节点)

  • 如查看根节点下的所有节点

    ls /
    

    [zk: localhost:2181(CONNECTED) 2] ls /
    [zookeeper]
    [zk: localhost:2181(CONNECTED) 3]

2.3 create 命令,创建节点

  • 选项说明

    • -s 创建会话唯一节点,创建会话唯一节点会在节点名称后加会话ID。
    • -e 创建临时节点,临时节点会话结束会消失。
  • 创建节点 aaa

    create /aaa
    

[zk: localhost:2181(CONNECTED) 3] create /aaa
Created /aaa
[zk: localhost:2181(CONNECTED) 4]

  • 创建临时子节点 aaa/bbb 同时设置数据 222

    create -e  /aaa/bbb "222"
    

    [zk: localhost:2181(CONNECTED) 5] create -e /aaa/bbb “222”
    Created /aaa/bbb
    [zk: localhost:2181(CONNECTED) 6]

  • 创建会话唯一节点 ccc

    create -s /ccc "3333"
    

    [zk: localhost:2181(CONNECTED) 23] create -s /ccc “3333”
    Created /ccc0000000001
    [zk: localhost:2181(CONNECTED) 24]

2.4 delete 命令,删除节点

  • 如下删除节点 a1

    delete /a1
    

    [zk: localhost:2181(CONNECTED) 24] create /a1 “123”
    Created /a1
    [zk: localhost:2181(CONNECTED) 25] ls /
    [a1, aaa, ccc0000000001, zookeeper]
    [zk: localhost:2181(CONNECTED) 26] delete /a1
    [zk: localhost:2181(CONNECTED) 27]

2.5 set 命令,设置节点数据

  • 设置节点 aaa 数据 111

    set /aaa "1111"
    

    [zk: localhost:2181(CONNECTED) 6] set /aaa “1111”
    [zk: localhost:2181(CONNECTED) 7]

2.6 get 命令,获取节点数据

  • 选项说明

    • -s 可以查看更多信息
  • 获取节点 aaa 和 aaa/bbb 的数据

    get /aaa
    get /aaa/bbb
    get -s /aaa
    

[zk: localhost:2181(CONNECTED) 7] get /aaa
1111
[zk: localhost:2181(CONNECTED) 8] get /aaa/bbb
222
[zk: localhost:2181(CONNECTED) 9]

[zk: localhost:2181(CONNECTED) 14] get -s /aaa
111
cZxid = 0x100000004
ctime = Wed Oct 18 15:24:33 CST 2023
mZxid = 0x100000009
mtime = Wed Oct 18 15:35:46 CST 2023
pZxid = 0x100000006
cversion = 1
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1

三、数据解析

  • 以上面返回数据为例进行解析,如下

[zk: localhost:2181(CONNECTED) 14] get -s /aaa
111
cZxid = 0x100000004
ctime = Wed Oct 18 15:24:33 CST 2023
mZxid = 0x100000009
mtime = Wed Oct 18 15:35:46 CST 2023
pZxid = 0x100000006
cversion = 1
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1

  • 111:这是节点 /aaa 中的数据。get 命令执行后,它返回了节点 /aaa 的数据,这里是字符串 “111”。

  • cZxid = 0x100000004:这是有关节点的 ZooKeeper 事务 ID,用于标识节点的创建。cZxid 表示 “create ZooKeeper transaction ID”。

  • ctime = Wed Oct 18 15:24:33 CST 2023:这是节点的创建时间。ctime 表示 “creation time”。

  • mZxid = 0x100000009:这是有关节点的 ZooKeeper 事务 ID,用于标识节点的修改。mZxid 表示 “modify ZooKeeper transaction ID”。

  • mtime = Wed Oct 18 15:35:46 CST 2023:这是节点的修改时间。mtime 表示 “modification time”。

  • pZxid = 0x100000006:这是有关节点的 ZooKeeper 事务 ID,用于标识节点的父节点。pZxid 表示 “parent ZooKeeper transaction ID”。

  • cversion = 1:这是节点的子节点版本号,表示有多少子节点。在这种情况下,/aaa 节点有一个子节点。

  • dataVersion = 3:这是节点的数据版本号,表示数据被修改的次数。在这种情况下,数据已被修改 3 次。

  • aclVersion = 0:这是节点的 ACL(访问控制列表)版本号,表示节点的权限配置。在这里,版本号为 0。

  • ephemeralOwner = 0x0:这是有关节点的临时节点所有者的信息。在这里,节点不是临时节点,所以值为 0。

  • dataLength = 3:这是节点数据的长度,表示数据的字节数。在这里,数据长度为 3 字节。

  • numChildren = 1:这是节点的子节点数量,表示 /aaa 节点下有 1 个子节点。

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

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

相关文章

Python数据容器之[列表]

Python数据容器 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如: 是否支…

ISP算法——UVNR

ISP算法——UVNR 概念简介 UVNR也就是经过CSC只有在YUV域对UV两个色域进行降噪,在有些方案里也叫CNR(chroma noise reduction)。主要就是在YUV域针对彩燥进行特殊处理的一系列算法。 关于噪声产生的原因在前面关于降噪的文章和视频中已经做…

【电子通识】USB端口颜色编码标识

不知道你有没有发现 USB 口有不同的颜色,黑色、蓝色、紫色、红色、黄色等等,你知道不同颜色的 USB 口各代表什么意思吗? 这些颜色不是USB规范所要求的,设备制造商之间也不一致。例如,Intel使用橙色表示充电端口&#…

51单片机+DS1302设计一个电子钟(LCD1602显示时间)

一、前言 电子钟是一种能够准确显示时间的设备,广泛应用于家庭、办公场所和公共场所,为人们提供了方便和准确的时间信息。本项目设计一个基于51单片机的电子钟,使用DS1302作为RTC时钟芯片,LCD1602作为显示屏,并通过串…

基于FPGA的PS端的Si5340的控制

1、功能 Si5340/41-D可以输出任意频率,当然有范围,100Hz1GHz。外部输入为24M或者4854M的XTAL,VCO在13500~14256Mhz之间,控制接口采用IIC或者SPI。 芯片架构图 2、IIC控制方式 3、直接上控制代码 使用米联客ZU3EG,将…

微信自动添加好友

简要描述: 添加微信好友 请求URL: http://域名地址/addUser 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId…

MySQL中的json使用注意

MySQL中json是一种重要的数据类型 好的点在于其不必事先定义列得名称啥的 不过不要将明显的关系型数据作为json来存储,例如用户余额、姓名、身份证等,这些是用户必须包含的数据 json适合存储的是给每个用户(或者物品)打的标签&…

Linux操作系统使用及C高级编程-D5Linux shell命令(进程管理、用户管理)

进程管理 查看进程ps 其中ps -eif可显示父进程 实时查看进程top 按q退出 树状图显示进程pstree 以父进程,子进程以树状形式展示 发送信号kill kill -l:查看都有哪些信号 9:进程终止 kill不指定信号,默认发送的是15信号SIGT…

加密磁盘密钥设置方案浅析 — LUKS1

虚拟化加密磁盘密钥设置方案浅析 前言元数据分析元数据格式整体格式头部格式加密算法密码校验key slot格式其它字段 流程验证 前言 我们在虚拟化加密磁盘密钥设置方案浅析 — TKS1中介绍了加密磁盘密钥设置方案,TKS1对密钥设置(Linux Unified Key Setup)的流程和方…

软件测试下的AI之路(3)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】

Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转Java之Sprin…

【PG】PostgreSQL 目录结构

目录 1 软件安装目录 2 数据文件目录 base/:存储每个数据库的基本数据文件 global/:包含了全局性质的系统表空间文件 pg_tblspc/:包含了表空间的符号链接 pg_twophase/:包含了两阶段提交中使用的文件 pg_stat_tmp/&#xff…