理解ZooKeeper中的ZNodes

翻译自:http://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html

ZooKeeper中的每个结点都是一个ZNode。ZNode维护一个包括数据和ACL修改的版本号的stat结构。ZNode结构还包括时间戳。版本号和时间戳一起用来验证缓存和协调更新。ZNode中的数据每更新一次,版本号就相应的增加一次。例如,每当客户端需要检索数据的时候,它也会收到一个数据的版本号。当客户端执行修改或者删除操作时,必须提供正在修改的数据的版本号。如果客户端提供的版本号和实际数据的版本号不匹配的话,更改就会失败。
注意:在分布式应用项目中,node可以指的是一台主机、服务器、总体的一员、一个服务进程等。在ZooKeeper中,node是指数据结点。Servers是指组成组成ZooKeeper服务的机器;quorum peers是指ensemble的服务器;客户端
是指使用ZooKeeper服务的客户端或者进程。

Znodes是程序员操作的主要实体。它有以下几个特性:

Watches(观察者)
客户端可以在ZNode上设置观察者(watches)。所有对ZNode的修改都将触发观察者,之后再清除观察者。当一个
观察者被触发,ZooKeeper就会发送一个通知给客户端。

Data Access
数据被原子性的保存在命名空间的每一个ZNode中。Read可以获得与ZNode相关联的数据,write用来修改数据。每个结点都有一个ACL(Access Control List)来限制谁可以进行这些操作。ZooKeeper不是用来当作普通数据库也不适合用来存储大数据。相反,它是用来管理协同数据。这些数据可能是配置、状态信息或者集合地点等。这些数据都有一个共同的特点,就是他们一般都很小:几千个字节的量级。ZooKeeper的客户端和服务器可以很智能的判别ZNode有小于1M的数据,但是数据一般上都比1M小的多。操作相对大一点的数据将会花费更多的时间,这些额外的时间用来把更多的数据从网络中保存在存储介质中才对。如果需要存储这样的大数据,通常都把它们存储在大容量存储系统中,比如NFS和HDFS,然后在ZooKeeper中保存它们的
存储位置指针。

Ephemeral Nodes(临时结点)
ZooKeeper也有临时结点的概念。这些结点在ZNode被创建的时候存在,当回话结束时,结点就会被删除。因为这样的
临时结点不允许有子结点。

序列结点——唯一命名
当创建一个ZNode,ZooKeeper还可以请求附加一个递增计数器到最后的路径。这个计数器对于父节点来说是唯一的。计数器的格式是%010d——这是一个十位数,前面用0来填充,(计数器之所以有这样的格式是为了便于排序)例如<path>0000000001。注意:计数器用来存储下一个序列号码是一个有符号整数(4字节)由父节点维护,当超出
2147483647时计数器将溢出。

总结

ZooKeeper的节点是通过像树一样的结构来进行维护的,并且每一个节点通过路径来标示以及访问。除此之外,每一个节点还拥有自身的一些信息,包括:数据、数据长度、创建时间、修改时间等等。Znode维护着数据、ACL(access control list,访问控制列表)、时间戳等交换版本号等数据结构,它通过对这些数据的管理来让缓存生效并且令协调更新。每当Znode中的数据更新后它所维护的版本号将增加。另外Znode还具有原子性操作的特点:命名空间中,每一个Znode的数据将被原子地读写。读操作将读取与Znode相关的所有数据,写操作将替换掉所有的数据。除此之外,每一个节点都有一个访问控制列表,这个访问控制列表规定了用户操作的权限。ZooKeeper中同样存在临时节点。这些节点与session同时存在,当session生命周期结束,这些临时节点也将被删除。临时节点在某些场合也发挥着非常重要的作用。

【Apache ZooKeeper】理解ZooKeeper中的ZNodes的更多相关文章

  1. Apache ZooKeeper在Kafka中的角色 - 监控和配置

    1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ...

  2. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么

    什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是Zooke ...

  3. Zookeeper学习笔记(中)

    Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...

  4. (转)zookeeper理解

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题 ...

  5. 简单理解Zookeeper的Leader选举【转】

    Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...

  6. 【HBase】zookeeper在HBase中的应用

    转自:http://support.huawei.com/ecommunity/bbs/10242721.html Zookeeper在HBase中的应用 HBase部署相对是一个较大的动作,其依赖于 ...

  7. 温故知新-快速理解zookeeper功能&应用&选举机制

    文章目录 zookeeper简介 什么是zookeeper zookeeper应用场景 zookeeper特点 zookeeper的角色 zookeeper的数据模型 节点数据结构 节点类型 zook ...

  8. 简单理解Zookeeper的Leader选举

    Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...

  9. apache开源项目--ZooKeeper

    ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出错的关键服务 ...

随机推荐

  1. linux驱动: 如何向模块传递参数, module_param和module_param_array

    如何向模块传递参数,Linux kernel 提供了一个简单的框架.    1.  module_param(name, type, perm); name 既是用户看到的参数名,又是模块内接受参数的 ...

  2. BZOJ 1875: [SDOI2009]HH去散步( dp + 矩阵快速幂 )

    把双向边拆成2条单向边, 用边来转移...然后矩阵乘法+快速幂优化 ------------------------------------------------------------------ ...

  3. IOC容器初始化——BeanDefinition的Resource定位

    以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefinition.这是使用的是ClassPathResource,意味着 ...

  4. linux ln 命令(转载)

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...

  5. Android 学习开发笔记《Android认识》

    1.          Android:2007年11月5日第一版,2009年5月豪华版,2010年HTC手机 2.          Android框架主要:应用程序.应用程序框架.函数库.运行时. ...

  6. (IOS)国际本地化设置

    首先New File,在Resource中选择Strings File: 然后命名该strings文件,必须命名为 Localizable : 再者选中该strings文件,在Localization ...

  7. spring的定时执行代码 跑批

    最近公司上线了抽奖的活动,活动需求 1:每天凌晨更新状态,实现自动开启和关闭活动 2:活动结束自动抽取中奖号码 在这里提供spring的定时调度功能 1:首先是配置文件 在你的web.xml中,查看配 ...

  8. SpringBoot接口服务处理Whitelabel Error Page(转)

    To switch it off you can set server.error.whitelabel.enabled=false http://stackoverflow.com/question ...

  9. ckeditor3.4.2是否升级为4.2.1的问题

    ckeditor官网访问地址: http://ckeditor.com/demo 目前公司项目中用到富文本编辑器基本都是cheditor3.4.2, 在不修改其源码的情况下,不兼容于IE10,具体见& ...

  10. 循环之while