ZooKeeper的使用

2021-02-25 17:17:38 浏览数 (1)

一、连接

进入ZooKeeper安装目录下的bin目录,输入如下命令进入ZooKeeper的客户端

代码语言:javascript复制
./zkCli.sh

成功进入后显示如下:

二、使用

1、查看节点

命令格式:

代码语言:javascript复制
ls [-s] [-w] [-R] path

参数

描述

-s

除了显示节点,还额外显示节点的详细信息

-w

简单显示节点

-R

显示路径及路劲下的所有子节点

查看下不同参数显示的不同结果

代码语言:javascript复制
ls /

运行结果:

代码语言:javascript复制
ls -w /

运行结果:

可以看出-w就是ls的默认参数

代码语言:javascript复制
ls -R /

运行结果:

代码语言:javascript复制
ls -s /

运行结果:

-s参数显示的文件信息有点复杂,我们来对各个信息内容做一下描述

详细信息项

描述

cZxid

该数据节点被创建时的事务id,由64位数字组成,分为高32位和低32位

ctime

该数据节点创建时间

mZxid

该数据节点被修改时最新的事物id

mtime

该数据节点最后修改时间

pZxid

当前节点的父级节点事务ID

cversion

子节点版本号(子节点修改次数,每修改一次值 1)

dataVersion

当前节点版本号(可以理解为修改次数,每修改一次值 1)

aclVersion

当前节点的acl权限版本号,初始版本为0

ephemeralOwner

临时节点标示,当前节点如果是临时节点,则存储的创建者的会话id(sessionId),如果不是,那么值=0

dataLength

当前节点存储的数据的大小

numChildren

当前节点的子节点个数

2、创建节点

命令格式:

代码语言:javascript复制
create [-s] [-e] [-c] [-t ttl] path [data] [acl]

参数

描述

-s

创建序列节点

-e

创建临时节点

-c

创建永久节点

acl

访问控制列表,用来控制节点的权限

-t

设置存活时间(针对持久节点,单位秒);需要开启,默认是关闭的。

2.1、创建永久节点

代码语言:javascript复制
create /testC "testCValue"

有的版本不写后面的"testCValue"会创建不成功

运行结果:

查看节点详情信息

代码语言:javascript复制
get -s /testC

2.2、创建临时节点

代码语言:javascript复制
create -e /testE "testEValue"

运行结果:

查看节点详情信息

代码语言:javascript复制
get -s /testE

可以看到临时节点详情数据中ephemeralOwner的值不为0,说明该节点是个临时节点,本次会话退出后,临时节点将会被自动删除

2.3、创建顺序节点

代码语言:javascript复制
create -s /testS "testSValue"

运行结果:

查看节点详情信息,顺序节点有点不一样,在创建节点的时候会在节点名称后面增加10位的序号,所以查看节点时就需要带上序号,否则会提示节点不存在

代码语言:javascript复制
get -s /testS

下图就是上面命令的执行结果,报节点不存在。

代码语言:javascript复制
get -s /testS0000000013

3、查看节点数据

命令格式:

代码语言:javascript复制
get [-s] [-w] path

参数

描述

-s

查看节点的详细信息

-w

查看节点信息

4、更新节点

命令格式:

代码语言:javascript复制
set [-s] [-v version] path data

参数

描述

-s

更新节点数据后返回节点的详细信息

-v

指定更新节点的版本,对应节点的dataVersion的值

示例:

代码语言:javascript复制
set -s /test "testValue"

运行结果:

上图的dataVersion现在的值是7,我们指定版本更新下数据

代码语言:javascript复制
set -s -v 7 /test "testValue7"

运行结果:

我们也可以通过get命令查看节点的详情

代码语言:javascript复制
get -s /test

5、删除节点

删除节点有两个命令,分别是delete和deleteall delete命令不能删除包含子节点的节点,命令格式:

代码语言:javascript复制
delete [-v version] path

示例:

代码语言:javascript复制
delete /test

如果/test节点包含子节点,则会给出提示

deleteall命令可以删除节点以及包含的所有子节点,命令格式:

代码语言:javascript复制
deleteall path [-b batch size]

示例:

通过查看/test节点下还包含aaa节点,我们执行以下命令:

代码语言:javascript复制
deleteall /test

执行后再查看节点数据,可以发现/test他所包含的子节点都被删除了

代码语言:javascript复制
ls -R /

0 人点赞