当前位置: 首页 > news >正文

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 个子节点。

相关文章:

Zookeeper 命令使用和数据说明

文章目录 一、概述二、命令使用2.1 登录 ZooKeeper2.2 ls 命令,查看目录树(节点)2.3 create 命令,创建节点2.4 delete 命令,删除节点2.5 set 命令,设置节点数据2.6 get 命令,获取节点数据 三、数…...

索尼RSV文件怎么恢复为MP4视频

索尼相机RSV是什么文件? 如果您的相机是索尼SONY A7S3,A7M4,FX3,FX3,FX6,或FX9等,有时录像会产生一个RSV文件,而没有MP4视频文件。RSV其实是MP4的前期文件,经我对RSV文件…...

pytorch-gpu(Anaconda3+cuda+cudnn)

文章目录 下载Anaconda3安装,看着点next就行比较懒所以自动添加path测试 cuda安装的时候不能改路径如果出现报错,关闭杀毒软件一直下一步就好取消勾选“CUDA”中的“Visual Studio Intergration”一直下一步即可测试安装成功 cudnn解压后将这三个文件夹复…...

解析数据洁净之道:BI中数据清理对见解的深远影响

本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 随着数字化和信息化进程的不断发展,数据已经成为企业的一项不可或缺的重要资源。然而,这…...

efcore反向共工程,单元测试

1.安装efcore需要的nuget <PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /> <PackageReference Include"Microsoft.EntityFrameworkCore.SqlServer" Version"6.0.24" /> <PackageRefere…...

利用IP风险画像强化金融行业网络安全防御

在数字化时代&#xff0c;金融行业日益依赖互联网和技术创新&#xff0c;但这也使得金融机构成为网络攻击的主要目标。为了应对日益复杂的网络威胁&#xff0c;金融机构迫切需要采用先进的安全技术和工具。其中&#xff0c;IP风险画像技术成为提升网络安全的一项重要策略。 1.…...

1334. 阈值距离内邻居最少的城市

分析题目两点“阈值距离”、“邻居最少”。 “阈值距离”相当于定了个上界&#xff0c;求节点之间的最短距离。 “邻居最少”相当于能连接的点的数量。 求节点之间的最短距离有以下几种方法&#xff1a; 在这道题当中&#xff0c;n的范围是100以内&#xff0c;所以可以考虑O(n…...

Live800:客服行业的发展历程及未来前景

随着信息技术和互联网的高速发展&#xff0c;客服行业也在不断变革和发展。客服行业是一个服务型的行业&#xff0c;其发展历程也与人们对服务需求的变化密切相关。本文将介绍客服行业的发展历程和未来前景。 客服行业的发展历程 20世纪70年代&#xff0c;客服行业主要以电话服…...

exsi的安装和配置

直接虚拟真实机 vcent server 管理大量的exsi SXI原生架构模式的虚拟化技术&#xff0c;是不需要宿主操作系统的&#xff0c;它自己本身就是操作系统。因此&#xff0c;装ESXI的时候就等同于装操作系统&#xff0c;直接拿iso映像(光盘)装ESXI就可以了。 VMware vCente…...

基于springboot实现校园医疗保险管理系统【项目源码】

基于springboot实现校园医疗保险管理系统演示 系统开发平台 在线校园医疗保险系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其…...

Python 如何实现组合(Composite)设计模式?什么是组合设计模式?

什么是组合&#xff08;Composite&#xff09;设计模式&#xff1f; 组合&#xff08;Composite&#xff09;设计模式是一种结构型设计模式&#xff0c;它允许客户端使用单一对象和组合对象&#xff08;对象的组合形成树形结构&#xff09;同样的方式处理。这样&#xff0c;客…...

编辑器vim和编译器gcc/g++

目录 一、编辑器vim 1、概念 2、基本操作 1、进入vim 2、模式切换 3、命令行模式 4、插入模式 5、底行模式 6、vim 的配置 二、编译器gcc/g 1、概念 2、背景知识 3、gcc/g中的编译链接 1、预处理 2、编译 3、汇编 4、链接 4、函数库 1、静态库 2、动态库 一…...

linux 系统下文本编辑常用的命令

一、是什么 Vim是从 vi 发展出来的一个文本编辑器&#xff0c;代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。 简单的来说&#xff0c; vi 是老式的字处理器&#xff0c;不过功能已经很齐全了&#xff0c;但是还是有可以进步的地方 而…...

3D Gaussian Splatting文件的压缩【3D高斯泼溅】

在上一篇文章中&#xff0c;我开始研究高斯泼溅&#xff08;3DGS&#xff1a;3D Gaussian Splatting&#xff09;。 它的问题之一是数据集并不小。 渲染图看起来不错。 但“自行车”、“卡车”、“花园”数据集分别是一个 1.42GB、0.59GB、1.35GB 的 PLY 文件。 它们几乎按原样…...

Spring Boot 整合xxl-job实现分布式定时任务

xxl-job介绍 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 xxl是xxl-job的开发者大众点评的许雪里名称的拼音开头。 设计思想 将调度行为抽象形成“调度…...

16.最接近的三数之和

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;16. 最接近的三数之和 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 对数组排序后&#xff0c;枚举第一个值&#xff0c;利用双指针在第一个值固定时的第二三个值。 解题代码&#xff1a…...

php 插入排序算法实现

插入排序是一种简单直观的排序算法&#xff0c;它的基本思想是将一个数据序列分为有序区和无序区&#xff0c;每次从无序区选择一个元素插入到有序区的合适位置&#xff0c;直到整个序列有序为止 5, 3, 8, 2, 0, 1 HP中可以使用以下代码实现插入排序算法&#xff1a; functi…...

import gradio时出现SyntaxError: future feature annotations is not defined解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

视频封装格式

FLV&#xff08;Flash Video&#xff09; FLV封装格式 Tag Data分为Audio&#xff0c;Video&#xff0c;Script三种 TS&#xff08;Transport Stream&#xff09;传输流 TS文件分为三层&#xff0c;&#xff08;倒叙更好理解&#xff09; TS层&#xff1a;在PES层基础上加入…...

vue+iView实现下载zip文件导出多个excel表格

1&#xff0c;需求&#xff1a;在vue项目中&#xff0c;实现分月份导出多个Excel表格。 点击导出&#xff0c;下载zip文件&#xff0c;解压出多张表数据。 2&#xff0c;关键代码&#xff1a; <Button class"export button-style button-space" click"ex…...

Rust编程中的共享状态并发执行

1.共享状态并发 虽然消息传递是一个很好的处理并发的方式&#xff0c;但并不是唯一一个。另一种方式是让多个线程拥有相同的共享数据。在学习Go语言编程过程中大家应该听到过一句口号:"不要通过共享内存来通讯"。 在某种程度上&#xff0c;任何编程语言中的信道都类…...

python语法之数据类型

在python编程中&#xff0c;数据类型是一个重要的概念。 变量可以存储不同类型的数据&#xff0c;不同的类型可以做不同的事情。 Python在这些类别中默认内置了以下数据类型: 文本类型&#xff1a;str数值类型&#xff1a;int, float, complex序列类型&#xff1a;list, tup…...

Skybox天空盒子的更换教程_unity基础开发教程

Skybox天空盒子的更换 Skybox的下载与导入更换SkyboxSkybox属性自定义 Skybox的下载与导入 打开资源商店 搜索FREE Skybox 这里是我使用的是这一款资源&#xff0c;点击添加至我的资源 打开包管理器Package Manager Packages选择My Assets 搜索Sky 选择刚刚添加的天空盒子 点…...

Android模拟器的linux内核源码的下载

文章目录 Android模拟器的linux内核源码的下载 Android模拟器的linux内核源码的下载 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git自己新建一个文件夹存放内核代码&#xff0c;命名随意。 切换一下分支就有东西了 切换到下面这个分支...

Vue中methods实现原理

目录 前言 回调函数中的this指向问题 vue实例访问methods methods实现原理 前言 vue实例对象为什么可以访问methods中的函数方法&#xff1f;methods的实现原理是什么&#xff1f; 回调函数中的this指向问题 在解答前言中的问题前&#xff0c;需要了解一下回调函数中的th…...

维基百科是非营利性机构 词条内容具有中立性、准确性、可靠性

维基百科对一些企业很有神秘性&#xff0c;自行操作很多次也没有成功建立维基百科&#xff0c;这一定是没有按照维基百科的规则和流程去操作。小马识途营销顾问提醒企业&#xff0c;维基百科是一种基于协作的在线百科全书&#xff0c;由维基媒体基金会运营。维基百科的创建流程…...

C/C++轻量级并发TCP服务器框架Zinx-框架开发002: 定义通道抽象类

文章目录 2 类图设计3 时序图数据输入处理&#xff1a;输出数据处理总流程 4 主要实现的功能4.1 kernel类&#xff1a;基于epoll调度所有通道4.2 通道抽象类&#xff1a;4.3 标准输入通道子类4.4 标准输出通道子类4.5 kernel和通道类的调用 5 代码设计5.1 框架头文件5.2 框架实…...

bin、hex、ELF文件格式上的区别

bin, hex, 和 ELF 是三种不同的文件格式&#xff0c;主要用于表示和存储二进制数据和程序代码。它们各自有其用途、特点和格式&#xff1a; bin (Binary) 文件: 通常表示纯二进制格式的文件。它不包含任何元数据或文件结构&#xff0c;只是简单地按照字节顺序存储数据。这种文件…...

《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)

这个demo用QT实现了对多个图形项的绘制&#xff0c;包括矩形的绘制&#xff0c;直线的绘制和多边形的绘制&#xff0c;是之前一章中绘制矩形的增强版&#xff0c;之前一章节关于矩形的绘制可以参考&#xff1a;《QT从基础到进阶十五》用鼠标绘制矩形&#xff08;QGraphicsView、…...

【分布式】CAP理论详解

一、CAP理论概述 在分布式系统中&#xff0c;CAP是指一组原则&#xff0c;它们描述了在网络分区&#xff08;Partition&#xff09;时&#xff0c;分布式系统能够提供的保证。CAP代表Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;和…...