一、Zookeeper数据模型
Zookeeper的数据模型为层次模型(data tree),也被称为树形模型。
在层次模型上每个节点被称为znode。结构如下(图片来源百度)

图中 每个数据节点都是个znode
我们可以通过zkCli来验证下

Znode
znode在每个层级会保持唯一性,也就意味着在 /app1下面不可能存在2个c1

znode根据有效性来区分可以分为永久数据节点和临时数据节点
- 永久数据节点
除非我们主动删除这个数据节点,否则这个节点一直存在于zookeeper中我们上面构建的 /app1、/app2、/app3、/app1/c1、/app1/c2、/app2/c1就属于永久数据节点。 -
临时数据节点
临时数据节点只在我们客户端有效连接zookeeper时有效,并且临时数据节点下面不能有子节点,在这里我们通过windows下客户端工具zkCli.cmd简单看下(create -e 代表创建临时节点),可以看到无法在/app4下面创建节点
image.png
我们断掉这个客户端再次重新连接下,可以看到临时数据节点/app4消失
image.png
znode根据顺序性可以分为有序数据节点和无序数据节点这里我们主要看下永久顺序数据节点和临时顺序数据节点。 -
永久顺序数据节点
image.png
-
临时顺序数据节点
image.png
二、Watch机制
zookeeper可以对数据节点进行监控,当数据节点发生变化会通知客户端,
这里我们看一下
我们启用2个zookeeper链接
我们先在客户端1进行临时数据节点创建

因为我们已经创建了/app7所以我们不能再次创建,我们在客户端2对/app7进行监听

我们再在客户端1进行临时数据节点/app7删除

这时我们客户端2会收到一条watch信息,我们也可以再次创建临时数据节点/app7

网友评论