Zookeeper简介

一、Zookeeper数据模型

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


image.png

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


image.png

Znode

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


image.png

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进行临时数据节点创建


image.png

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


image.png

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

这时我们客户端2会收到一条watch信息,我们也可以再次创建临时数据节点/app7
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容