我是靠谱客的博主 淡定月亮,最近开发中收集的这篇文章主要介绍zookeeper设置临时节点失效时间_Zookeeper学习随笔二(zookeeper数据模型)1 数据模型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 数据模型

Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图 1 所示:

图 1 Zookeeper 数据结构

99b363860ceb98ec09f5d98da3d608d1.png

Zookeeper 这种数据结构有如下这些特点:

  1. 每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1
  2. znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目录节点不能有子节点目录
  3. znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
  4. znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
  5. znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2
  6. 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创建和触发规则

93dfd8111323a2a669ae60b76c3a0786.png

最后

以上就是淡定月亮为你收集整理的zookeeper设置临时节点失效时间_Zookeeper学习随笔二(zookeeper数据模型)1 数据模型的全部内容,希望文章能够帮你解决zookeeper设置临时节点失效时间_Zookeeper学习随笔二(zookeeper数据模型)1 数据模型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部