Zookeeper的底层是一套数据储存结构,其中的节点,我们称之为znode。Zookeeper中数据存储的结构和标准文件系统非常类似,拥有一个层次的命名空间,也是使用斜杠(/)进行分割,两者都是采用树形层次结构。不同的是,标准文件系统是由文件夹和文件来组成的树,而Zookeeper是由什么来组成的树呢?下面我们来看一下Zookeeper数据存储结构,如图1所示。
图1 Zookeeper数据模型
从图2可知,Zookeeper是由节点组成的树,树中的每个节点被称为—Znode。每个节点都可以拥有子节点。每一个Znode默认能够存储1MB的数据,每个Znode都可以通过其路径唯一标识,如图5-2中第三层的第一个Znode~~,~~,它的路径是/app1/p_1。Zookeeper数据模型中的每个Znode都是由三部分组成,分别是stat(状态信息,描述该Znode的版本,权限信息等组成)、data(与该Znode关联的数据)、children(该Znode下的子节点)。
Znode有两种类型,分别是临时节点和永久节点。
临时节点,该生命周期依赖于创建它们的会话,一旦会话结束,临时节点将会被自动删除,当然也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端,但它们对所有的客户端还是可见的。另外,需要注意的是临时节点不允许拥有子节点。
永久节点,该生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,它们才能被删除。
由于Znode的序列化特性,在创建节点时,用户可以请求在该Znode的路径结尾添加一个不断增加的序列号,序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。它的格式为“%010d”(10位数字,没有数值的数位用0补充,例如“0000000001”)。当计数值大于232-1时,计数器将会溢出。这样便会存在四种类型的目录节点,分别对应如下:
PERSISTENT:永久节点
EPHEMERAL:临时节点
PERSISTENT_SEQUENTIAL:序列化永久节点
EPHEMERAL_SEQUENTIAL:序列化临时节点
猜你喜欢:
Zookeeper分布式系统的集群架构介绍
Spark的集群安装与配置简介【大数据技术文章】
简单举例,MapReduce是如何进行计算的