在谈分布式的时候,通常所说的 “节点" 就是指组成集群的每一台机器。然而,在 Zookeeper 中,“节点" 分为两种,第一类,也就是指构成集群的机器,我们称之为机器节点;第二类,则是指数据模型中的数据单元,我们称之为数据节点 一 ZNode。
Zookeeper 将所有数据存储在内存中,数据模型就像是一棵树(Znode Tree),是由斜杠(/)进行分割的路径,这就是 Znode,例如 /foo/path1
,每个路径上都会保存自己的数据内容,同时还会保存一系列的属性信息。
在Zookeeper中,node 可以分为持久节点和临时节点两类。所谓持久节点,是指一旦这个 ZNode 被创建了,除非主动进行 ZNode 的移除操作,否则这个 ZNode 将一直保存在 Zookeeper 上。而临时节点就不一样了,它的生命周期和客户端会话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点都会被移除。
另外,ZooKeeper 还允许用户为每个节点添加一个特殊的属性:SEQUENTIAL。一旦节点被标记上这个属性,那么这个节点被创建的时候,Zookeeper 会自动在其节点名后面追加上一串整型的数字,这是一个由父节点维护的自增数字。
网友评论