概述
1 数据模型
Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图 1 所示:
图 1 Zookeeper 数据结构
Zookeeper 这种数据结构有如下这些特点:
- 每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1
- znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目录节点不能有子节点目录
- znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
- znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
- znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2
- znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的,后面在典型的应用场景中会有实例介绍
1.1 Zookeeper Znode节点
Zookeeper提供了4中类型的znode节点
PERSISTENT:永久节点
EPHEMERAL:临时节点
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化
永久节点与session无关,只能显示删除,临时节点与session相关,当session结束或者超时之后节点自动删除,序列化节点实际生成的节点名后缀默认添加10位长度、左边已0填充的递增数字
1.2 Zookeeper Session
Ø 客户端与zookeeper采用长连接
Ø 连接建立后,server产生session ID(64位)给客户端
Ø 客户端定期发送ping包到服务器,检查和保持与服务器的连接
Ø 一旦session结束或者超时自动删除所有临时节点
Ø 客户端可根基情况设置合适的session超时时间
1.3 Zookeeper Watch
Ø Watch是客户端安装在server段的事件监听器,客户端的watch都保存在WatchManager中
Ø 当监听到的变化发生时,server段发消息到客户端进行通知
Ø 客户端使用单线程对收到的事件按顺序同步回调
Ø 出发回调条件
l 客户端连接、断开连接
l 节点数据发生变化
l 节点的第一级子节点发生变化
Ø Watch获取到监听事件之后,watch会被删除,如要再次监听需要重新设置,一次性
1.3.1.1 Watch创建和触发规则
最后
以上就是淡定月亮为你收集整理的zookeeper设置临时节点失效时间_Zookeeper学习随笔二(zookeeper数据模型)1 数据模型的全部内容,希望文章能够帮你解决zookeeper设置临时节点失效时间_Zookeeper学习随笔二(zookeeper数据模型)1 数据模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复