阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ZooKeeper数据组织及命令行的基本命令

446次阅读
没有评论

共计 3190 个字符,预计需要花费 8 分钟才能阅读完成。

ZooKeeper 命令行客户端

启动命令行

ZooKeeper 的命令行客户端在 bin 目录下的 zkCli.sh
使用下面的命令启动 zkCli

./zkCli.sh -server amaster:2181

一般来说,这样可以成功连接到 ZooKeeper 集群。但是如果连接的节点 amaster 挂掉了那么就没法连接成功。要想保证连接成功,可以多填上一些服务器的地址。可以使用下面的命令

zkCli.sh -server amaster:2181,anode1:2181,anode2:2181

这样的话只要连接成功一个服务器即可。

ZooKeeper 中的数据组织

ZooKeeper 中的数据被组织成了一棵树。每一个节点称作一个 znode,每一个 znode 包含下面的部分。

  • stat. 此为状态信息, 描述该 znode 的版本, 权限等信息
  • data 与该 znode 关联的数据.
  • children. 该 znode 下的子节点.

znode 之间具有父子关系。父子关系可以通过路径来表达,类似于文件系统。根节点是/

使用路径来创建或标识一个节点。每一个节点都可以保存数据。

zkCli.sh 的基本命令

1. ls 命令

ls 用于列出某个节点下的子节点。

示例代码

ls /

2. create 命令

create 用于创建一个节点。
语法是create [-s] [-e] path data acl

  • path 用于指定节点的路径
  • data 指定需要存放的数据(状态信息)

示例代码:

create /app1 "this is application1 servers parent"

3. get 命令

get 用于取出指定路径下存放的数据(stat)。语法是get path [watch]

示例代码:

get /app1

执行结果:

this is application1 servers parent
cZxid = 0x100000004
ctime = Sat Jan 28 21:04:59 CST 2017
mZxid = 0x100000004
mtime = Sat Jan 28 21:04:59 CST 2017
pZxid = 0x100000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 35
numChildren = 0

可以看出 ZooKeeper 使用了一系列数据结构来管理数据。

  • 第一行是我们存放的数据
  • cZxid 节点创建时的 zxid
  • ctime 节点创建时间戳
  • mzxid 节点最新一次更新发生时的 zxid.
  • mtime 节点最新一次更新发生时的时间戳.
  • dataVersion 节点数据的更新次数.
  • cversion 其子节点的更新次数.
  • aclVersion 节点 ACL(授权信息)的更新次数.
  • ephemeralOwner 如果该节点为 ephemeral 节点, ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为 0. 至于什么是 ephemeral 节点, 请看后面的讲述.
  • dataLength 节点数据的字节数.
  • numChildren 子节点个数.

zxid

znode 节点的状态信息中包含 czxid 和 mzxid, 那么什么是 zxid 呢?
ZooKeeper 状态的每一次改变, 都对应着一个递增的 Transaction id, 该 id 称为 zxid. 由于 zxid 的递增性质, 如果 zxid1 小于 zxid2, 那么 zxid1 肯定先于 zxid2 发生. 创建任意节点, 或者更新任意节点的数据, 或者删除任意节点, 都会导致 Zookeeper 状态发生改变, 从而导致 zxid 的值增加.

session

在 client 和 server 通信之前, 首先需要建立连接, 该连接称为 session. 连接建立后, 如果发生连接超时, 授权失败, 或者显式关闭连接, 连接便处于 CLOSED 状态, 此时 session 结束.

4. get 的监听

get 命令可以注册一个监听,当 get 的 znode 的数据发生变化时可以收到通知。需要注意的是这个通知 只生效一次

示例代码:

get /app1 watch

在其他客户端修改 app1 的数据

set /app1 通知

则会自动收到通知:

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/app1

接收到事件后客户端可以自行获取节点的内容。

与此类似的还有ls 的监听,它们非常类似,这里不再赘述。

5. set 命令

set 命令用于更新一个节点的数据。语法为set path data [version]

示例代码:

set /app1 啊哈哈哈 222

ZooKeeper 节点类型

persistent persistent 节点不和特定的 session 绑定, 不会随着创建该节点的 session 的结束而消失, 而是一直存在, 除非该节点被显式删除.

ephemeral. ephemeral 节点是临时性的, 如果创建该节点的 session 结束了, 该节点就会被自动删除. ephemeral 节点不能拥有子节点. 虽然 ephemeral 节点与创建它的 session 绑定, 但只要该该节点没有被删除, 其他 session 就可以读写该节点中关联的数据. 使用 - e 参数指定创建 ephemeral 节点.

示例代码:

create -e /appe 888888

sequence. 严格的说, sequence 并非节点类型中的一种. sequence 节点既可以是 ephemeral 的, 也可以是 persistent 的. 创建 sequence 节点时, ZooKeeper server 会在指定的节点名称后加上一个数字序列, 该数字序列是递增的. 因此可以多次创建相同的 sequence 节点, 而得到不同的节点. 使用 - s 参数指定创建 sequence 节点.

示例代码:

[zk: amaster:2181(CONNECTED) 12] create -s /app1/aa 666666
Created /app1/aa0000000000
[zk: amaster:2181(CONNECTED) 13] create -s /app1/aa 666666
Created /app1/aa0000000001
[zk: amaster:2181(CONNECTED) 14] create -s /app1/aa 666666
Created /app1/aa0000000002

在 CentOS7 上安装 Zookeeper-3.4.9 服务 http://www.linuxidc.com/Linux/2016-09/135052.htm

ZooKeeper 官方文档翻译——ZooKeeper Overview 3.4.6  http://www.linuxidc.com/Linux/2016-12/138025.htm 

CentOS 下 ZooKeeper 3.4.8 集群环境搭建 http://www.linuxidc.com/Linux/2016-12/137958.htm

CentOS 7 下 Zookeeper 集群安装 http://www.linuxidc.com/Linux/2017-01/139733.htm

ZooKeeper 学习总结  http://www.linuxidc.com/Linux/2016-07/133179.htm

Linux 下安装 Zookeeper 集群 http://www.linuxidc.com/Linux/2017-01/139545.htm

Zookeeper3.4.6 的安装 http://www.linuxidc.com/Linux/2015-05/117697.htm

CentOS 7 下安装 Zookeeper 单机版  http://www.linuxidc.com/Linux/2015-05/117697.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/140051.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3190字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19356
评论数
4
阅读量
8319941
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

  免费获得大模型的 Api-Key 的方法:英伟达提供 GLM-4.7、Minimax M2.1 ...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

  飞牛 NAS 升级到最新版,有线无法获取 IP、无线网络莫名打开的 BUG 问题 星哥的飞牛 N...
云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

  云服务器部署 OpenClaw:轻量应用服务器 + 钉钉和 QQ 机器人 一、前言 最近开源圈爆...