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.rhkb.cn/news/193452.html

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

相关文章

在 Electron上安装better-sqlite3出错

错误问题 一直卡npm install --global windows-build-tools --vs2015 这一步 解决 安装:pnpm install better-sqlite3 --save安装命令 pnpm i -D electron-rebuild 手动运行:node_modules/.bin/electron-rebuild -f -w better-sqlite3 我直接在packa…

一文了解VR全景拍摄设备如何选择,全景图片如何处理

引言: 在如今的数字化时代,虚拟现实(VR)技术不仅为我们的生活增添了许多乐趣,也为摄影领域带来了新的摄影方式,那么VR全景拍摄如何选择设备,全景图片又怎样处理呢? 一. VR全景拍摄设…

创建数据透视表:根据表中一列作为分类的依据统计每个类别下不同子项数量cross_tab()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建数据透视表: 根据表中一列作为分类的依据 统计每个类别下不同子项数量 cross_tab() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd data{A:[a1,a2,a1,a2,a…

给VSCode插上一双AI的翅膀

#AI编程助手哪家好?DevChat“真”好用# 文章目录 前言一、安装DevChat1.1、访问地址1.2、注册1.3、在VSCode里安装DevChat插件1.3.1、未安装状态1.3.2、已安装状态 二、设置Access Key2.1. 点击左下角管理(“齿轮”图标)—命令面板&#xff…

vscode远程linux安装codelldb

在windows上使用vscode通过ssh远程连接linux进行c调试时,在线安装codelldb-x86_64-linux.vsix扩展插件失败,原因是linux服务器上的网络问题,所以需要进行手动安装。 首先在windows上下载: codelldb-x86_64-linux.vsix;…

打开word文档报错,提示HRESULT 0x80004005 位置: 部分: /word/comments.xml,行: 0,列: 0

某用户遇到这样一个奇怪的问题,就是回复完word的批注后,保存文档再打开就会报错,提示很抱歉,无法打开XXX,因为内容有问题。,详细信息提示HRESULT 0x80004005 位置: 部分: /word/comments.xml,行: 0,列: 0 c…

iOS性能优化

了解屏幕成像的原理。 有一个电子枪然后在很多横轴方向上 发射电子,不同横轴的电子枪根据显示器中的硬件时钟产生一系列的定时信号,以此来让电子以不同的时间发射出去 这些电子一瞬间的运动形成了一帧动画。 CPU优化: 1.文本计算优化 如果一…

docker 安装xxl-job

1.拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.0 2.docker镜像创建并运行 docker run -e PARAMS"--spring.datasource.urljdbc:mysql://xxxxx:3306/xxl_job?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&serverTimezoneAsia/Shanghai&…

C# 将PDF文档转换为Word文档

一.开发框架: .NetCore6.0 工具:Visual Studio 2022 二.思路: 1.使用SHA256Hash标识文档转换记录,数据库已经存在对应散列值,则直接返还已经转换过的文档 2.数据库没有对应散列值记录的话,则保存上传PDF…

深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解

深入学习 Android Framework 第三:深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解 文章目录 深入学习 Android Framework前言一、Android 系统的启动流程1. 流程图2. 启动流程概述 二、源码详解1. 时序图2. 源代码1、ZygoteInit # main…

Java14新增特性

前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 今天我们来一起看一下Java14这个版本的一些重要信息 版本介绍 Java 14…

21 Linux 自带的LED驱动

一、Linux 自带 LED 驱动使能 其实 Linux 内核自带 LED 抢夺那个,但在此之前需要配置 Linux 驱动来使能 LED 驱动。 输入以下命令: cd linux/atk-mpl/linux/my_linux/linux-5.4.31 make menuconfig 根据以下路径找到 LED 驱动: → Device D…

Python OpenCV 通过trackbar调整图像亮度对比度颜色

上一篇文章通过设置固定值的方式来调整图像,这篇文章通过trackbar来动态调整参数,从而实时展现图像处理结果,得到想要的图像处理参数。 1. 创建trackbar import cv2 import numpy as npdef nothing(x):passcv2.namedWindow(image) # 创建5个…

【原创】java+swing+mysql个人日记管理系统设计与实现

摘要: 个人日记管理系统是一个可以记录、管理、存储和检索个人日记的应用程序。这个系统允许用户创建和管理多个日记帐户,每个帐户都可以有多个日记条目。用户可以随时添加、编辑或删除日记条目,并可以将这些条目按照主题或其他标准进行分类…

【C++】深拷贝与浅拷贝

1、深拷贝与浅拷贝 当我们对复杂类型(结构体或者类)的对象进行初始化时,如果将同类型的对象A赋值给同类型的对象B,此时就涉及深拷贝和浅拷贝的问题。 浅拷贝:简单的赋值拷贝操作。把类/结构体的对象的属性原封不动的赋值给另一个同类型的对…

【算法】区间(差分约束)

题目 给定 n 个区间 [ai,bi] 和 n 个整数 ci。 你需要构造一个整数集合 Z,使得 ∀i∈[1,n],Z 中满足 ai≤x≤bi 的整数 x 不少于 ci 个。 求这样的整数集合 Z 最少包含多少个数。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含三个…

rpmbuild 包名 version 操作系统信息部分来源 /etc/rpm/macros.dist

/etc/rpm/macros.dist openeuler bclinux src.rpm openssl-1.1.1f-13.oe1.src.rpm 打包名称结果 openeuler openssl-1.1.1f-13.aarch64.rpm bclinux openssl-1.1.1f-13.oe1.bclinux.aarch64.rpm 验证 修改openeuler配置文件macros.dist 重新在openeuler上执行rpmbuild…

ctfshow 文件上传 151-161

文件上传也好久没做了。。 手很生了 151 前端绕过 只能上传png文件 使用bp抓包,修改文件名后缀为php 上传成功,发现文件上传路径 使用蚁剑连接 找到flag 152 152 后端校验 跟上一关一样 表示后面即使执行错误,也不报错 抓包修改文件…

2.6 Windows驱动开发:使用IO与DPC定时器

本章将继续探索驱动开发中的基础部分,定时器在内核中同样很常用,在内核中定时器可以使用两种,即IO定时器,以及DPC定时器,一般来说IO定时器是DDK中提供的一种,该定时器可以为间隔为N秒做定时,但如…

MAC地址_MAC地址格式_以太网的MAC帧_详解

MAC地址 全世界的每块网卡在出厂前都有一个唯一的代码,称为介质访问控制(MAC)地址 一.网络适配器(网卡) 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。在计算机内部,网卡与CPU之间的通信&…