您的位置:首页 > 其它

ZooKeeper数据模型

2015-10-25 21:19 232 查看
ZooKeeper中可以创建一些节点,每一个节点都唯一对应着一个用斜线分割的绝对路径,可以称之为节点路径。并且可以为节点关联相应的数据。 这些节点构成类似于文件系统的树形一样的层次结构。

在zookeeper中,没有使用相对路径的节点。

除了下面几种情况,任何unicode字符都可以作为节点路径的一部分:

1. null 字符(\u0000)。

2. \u0001 - \u0019 和 \u007F - \u009F。

3. \ud800 -uF8FFF, \uFFF0-uFFFF, \uXFFFE - \uXFFFF , \uF0000 - \uFFFFF。

4. ‘.’可以作为路径名字的一部分,但是’.’和’..’不能单独作为路径的一部分。(例如/a/b/./c或者/a/b/../c)

5. ‘zookeeper’是保留字。

Znode

在ZooKeeper中,每一个节点都称之为zonde。

znode是版本控制的,它维护一个统计结构体,包含数据更改和ACL更改的版本号。这个结构体还包含时间戳字段。版本号和时间戳让ZooKeeper可以校验缓存,协调更新。

ZooKeeper中每个znode的Stat结构体由下述字段构成:

czxid:创建znode的事务的zxid

mzxid:最近修改znode的事务的zxid

ctime:znode的创建时间(以距离时间原点(epoch)的毫秒数表示)

mtime:znode的最近修改时间(以距离时间原点(epoch)的毫秒数表示)

version:znode的数据的修改次数

cversion:znode的子节点修改次数

aversion:znode的ACL修改次数

dataLength:znode的数据长度

numChildren:znode的子节点个数。

ephemeralOwner:如果znode是临时节点,则指示节点所有者的会话ID;如果不是临时节点,则为零。

zxid

每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。事务ID是ZooKeeper中所有修改总的次序。

每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。

对节点的每次修改将使得节点的版本号增加一。版本号有三种:version(znode数据修改的次数)、cversion(znode子节点修改的次数),以及aversion(znode的ACL修改次数)。

每次修改znode数据的时候,版本号会增加。客户端获取数据的同时,也会取得数据的版本号。执行更新或者删除操作时,客户端必须提供版本号。如果提供的版本号与数据的实际版本不匹配,则更新操作失败。

观察

客户端可以在znode上设置观察。对znode的修改将触发观察,然后移除观察。观察被触发时,ZooKeeper向客户端发送一个通知。

数据存取

存储在名字空间中每个znode节点里的数据是原子地读取和写入的。节点的访问控制列表(ACL)控制可以进行操作的用户。

ZooKeeper不是设计用来作为通用数据库或者大型对象存储的,而是用来存储协调数据的。协调数据的形式可能是配置、状态信息、聚合等等。各种形式的协调数据的一个共同特点是:它们通常比较小,以千字节来衡量。ZooKeeper客户端和服务器实现会进行检查,以保证znode数据小于1MB,但是平均的实际数据量应该远小于1MB。对较大数据的操作将导致某些操作比其他操作耗费更多时间,进而影响某些操作的延迟,因为需要额外的时间在网络和存储媒体间移动更多数据。如果需要大数据存储,通常方式是存储到块存储系统,如NFS或者HDFS中,然后在ZooKeeper中保存到存储位置的指针。

临时节点

ZooKeeper有临时节点的概念。临时节点在创建它的会话活动期间存在。

Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了。所以临时节点不能有子节点。

顺序节点:唯一命名

创建znode时,可以要求ZooKeeper在路径名后增加一个单调增加的计数器部分。这个计数器相对于znode的父节点是唯一的。计数器的格式是0d,也就是带有0填充的10个数字(这种格式是为了方便排序),比如说,PATH0000000001。注意:用于存储下一个顺序号的计数器是一个由父节点维护的有符号整数(4字节),所以计数器将在超过2147483647的时候溢出(导致名字成为PATH-2147483647)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: