转载请注明:@ni掌柜 nileader@gmail.com

本文主要讲述ZooKeeper的数据模型,包括ZooKeeper的数据视图,节点的层次结构以及节点类型等基本属性。Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统相关概念:目录和文件,而是使用了自己特有的节点(node)概念,称为znode。Znode是ZooKeeper中数据的最小单元,每个znode上都可以保存数据,同时还可以挂载子节点,也构成了一个层次化的命名空间,我们称之为树。

首先我们来看下面这张图,对ZooKeeper上的数据节点有一个大概的认识。这个图来自zookeeper官方文档中,相信很多开发者在网上也都看到过很多次了。在ZK中,每一个数据节点称为一个znode,所有znode按层次化进行组织,形成一棵树。znode是一个跟Unix文件系统路径相似的节点,由一系列由斜杠(/ )进行分割的路径表示。可以向这个节点中写入数据,也可以在节点下面创建子节点。

节点类型

每个节点是有生命周期的,这取决于节点的类型。在ZooKeeper中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下4种节点类型:

持久节点(PERSISTENT)

所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。

持久顺序节点(PERSISTENT_SEQUENTIAL )

这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的上限是整型的最大值。

临时节点(EPHEMERAL )

和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

临时顺序节点(EPHEMERAL_SEQUENTIAL)

节点信息

  1. [zk: localhost:2181(CONNECTED) 4] get /YINSHI.MONITOR.ALIVE.CHECK

  2. ?t 10.232.102.191:21811353595654255

  3. cZxid = 0x300000002

  4. ctime = Thu Dec 08 23:29:53 CST 2011

  5. mZxid = 0xe00008bbf

  6. mtime = Thu Jul 28 07:17:34 CST 2012

  7. pZxid = 0x300000002

  8. cversion = 0

  9. dataVersion = 2164293

  10. aclVersion = 0

  11. ephemeralOwner = 0x0

  12. dataLength = 39

  13. numChildren = 0

上面这个信息,是在ZK命令行的一个输出信息,从这个输出内容中可以清楚的看到,ZK的一个节点包含了哪些信息。其中比较重要的信息包括节点的数据内容,节点创建/修改的事务ID,节点/修改创建时间,当前的数据版本号,数据内容长度,子节点个数等。

转载于:https://blog.51cto.com/nileader/946788

【ZooKeeper Notes 14】数据模型相关推荐

  1. 【ZooKeeper Notes 9】ZooKeepr日志清理

    第一种,也是运维人员最常用的,写一个删除日志脚本,每天定时执行即可: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/bash             #snapsho ...

  2. 【ZooKeeper Notes 30】ZooKeeper与Diamond有什么不一样

    本文主要是讨论下两个类似产品:ZooKeeper和Diamond在配置管理这个应用场景上的异同点. Diamond,顾名思义,寄寓了开发人员对产品稳定性的厚望,希望它像钻石一样,提供稳定的配置访问.D ...

  3. ZooKeeper入门之数据模型和常用命令介绍

    1.zookeeper简介 1.1 什么是zookeeper zookeeper官网:https://zookeeper.apache.org/ ZooKeeper是一个分布式的,开放源码的分布式应用 ...

  4. 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例

    查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...

  5. 【ZooKeeper Notes 28】ZooKeeper典型应用场景一览

    ZooKeeper是一个高可用的分布式数据管理与系统协调框架.基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题.网上 ...

  6. ZooKeeper Notes 9】ZooKeepr日志清理

    转载请用注明:@ni掌柜nileader@gmail.com 在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认 ...

  7. 【ZooKeeper Notes 15】Watcher使用的注意事项

    1.Watches通知是一次性的,必须重复注册. 2.同一个ZK客户端,反复对同一个ZK节点(znode)注册相同的watcher,是无效的,最终只会有一个生效. 3.发生CONNECTIONLOSS ...

  8. 【ZooKeeper Notes 5】单机启动多个zk实例注意点

    转载请注明:@ni掌柜 nileader@gmail.com 1. 分配不同的myid. 2. 不同实例,clientPort一定要不同. 3. 使用不同的zoo.cfg文件,并且dataDir和da ...

  9. Apache ZooKeeper - ZooKeeper 数据模型回顾

    文章目录 Pre 数据模型 概述 znode 节点类型与特性 持久节点 临时节点 有序节点 节点小结 节点的状态结构 Pre 前面我们梳理了Zk的核心功能 , ZooKeeper 作为一个分布式协调服 ...

最新文章

  1. “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(扩展欧几里得求逆元)
  2. 如何实现文章中文字的打字效果
  3. java 防止反射_Java设计模式(一):单例模式,防止反射和反序列化漏洞
  4. 实例60:python
  5. 在演唱过后的飞秋代码
  6. 《数据结构》算法与算法设计
  7. 【AIS学习】12:AIS标准下载
  8. 微信小程序蓝牙控制开门
  9. 在线qq客服的html代码生成器,js生成qq客服在线代码
  10. 天昊16S扩增子绝对定量测序项目文章登陆《Bioresource Technology》
  11. 【Cucumber】【问题集锦】
  12. Android本地数据搜索实现
  13. 走进梦龙冰淇淋的生产线 揭晓“灯塔工厂”背后的秘密
  14. Mysql—索引③:优化篇(不仅仅是索引)
  15. 壳牌shell气化炉结构_壳牌Shell气化炉正常操作.pdf
  16. SpringBoot:在spring官网上下载历史版本的spring插件STS压缩包
  17. Oracle数据泵详解
  18. 货币基金和银行理财的区别
  19. geetest php,Laravel 使用极验(Geetest)
  20. ARM非对齐访问和Alignment Fault

热门文章

  1. Swift 中使用 SQLite——修改和删除数据
  2. Bloom Filter:海量数据的HashSet
  3. ipvsadm的几个参数输出的说明
  4. 记一次 MySQL 的慢查优化
  5. C#实现路由器断开连接,更改公网ip
  6. ueditor与七牛云存储结合
  7. 路由器、路由与路由表
  8. [ZT]SQL Server 的事务日志意外增大或充满的处理方法
  9. 毒霸主程序集成反流氓
  10. 办公室28个经典赞美句子【转】