Zookeeper 学习笔记

基本介绍

名字来源

Paxos到Zookeeper:分布式一致性原理与实践》中有写道:

Zookeeper 最早起源于雅虎的研究院的一个研究小组。在立项初期,考虑到很多项目都是用动物的名字来命名的 (例如著名的 Pig 项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家 Raghu Ramakrishnan 开玩笑说:再这样下去,我们这儿就变成动物园了。此话一出,大家纷纷表示就叫动物园管理员吧——因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而 Zookeeper 正好用来进行分布式环境的协调——于是,Zookeeper 的名字由此诞生了。

数据存储

zk 的数据以类似目录树的形式组织,但是没有相对路径的概念,必须以“/”为根。每个“目录”称为 Znode,每个 Znode 都可以包含数据和子节点。

Znode 有四种类型:持久,顺序,临时,临时顺序。临时节点在会话失效后,就会被删除

术语

tick

zk 中有一个 tick 的概念,也可以称为“滴答”,表示一次心跳的间隔。zk 中许多时间的设置都是以 tick 为基本单位进行配置,比如以 2 个 tick 作为会话超时时间。

Zxid

Zxid(ZooKeeper transaction id)就是事务id,zk 中每次写请求都对应一个唯一的事务id,它是全局且有序的,如果 Zxid1 小于 Zxid2,那 Zxid1 就一定是发生在 Zxid2 前。

常用操作

创建节点

# 持久节点
create path value

# 临时节点
create -e path value

# 顺序节点
create -s path value

查看节点状态

  • 使用 stat 命令查看
  • 网上的教程说可以使用 ls2,这个命令在新版中已经没有了,可以使用 ls -s 代替。
[zk: localhost:2181(CONNECTED) 9] stat /clickhouse/task_queue/ddl/query-0000014523/finished
cZxid = 0x14cc043d76f0                   # 创建该节点的 zxid
ctime = Thu Jan 20 11:09:11 CST 2022     # 创建时间
mZxid = 0x14cc043d76f0                   # 修改改节点的 zxid
mtime = Thu Jan 20 11:09:11 CST 2022     # 修改时间
pZxid = 0x14cc043d7709                   # 该节点的子节点最后修改的 zxid
cversion = 3                             # 子节点变更次数
dataVersion = 0                          # 该节点数据变更次数
aclVersion = 0                           # 该节点 acl 变更次数
ephemeralOwner = 0x0                     # 临时节点所有者会话id,非临时的为0
dataLength = 0                           # 该节点数据长度
numChildren = 3                          # 子节点数(不包括孙子节点)

参考资料

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 845 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments