您的位置:首页 > 其它

ZooKeeper使用(4)-- ZooKeeper的数据模型

2017-07-02 10:25 211 查看
前面两篇文章《ZooKeeper的单机部署(Linux)》、《ZooKeeper的集群部署(Linux)》已经讲述了ZooKeeper集群的部署,接下来,在这边文章中,简单描述一下ZooKeeper中的数据模型,方便我们理解后面的内容。

我们来看一张图:



ZooKeeper中的数据模型如上图所示,类似于一个带有层次结构的目录结构。层次结构中的每个节点都是一个ZNode,根节点路径为/,每个节点除了有个唯一路径进行标识外,每个节点都还有附带的数据内容和状态数据。

ZNode的操作具有原子性。ZNode上的数据都将被原子性的读写,读操作会读取该节点上的相关数据,而写操作会一次性的替换该节点上的所有数据。

ZooKeeper在设计之初,并不是用来作为常规的数据库或者大数据存储系统,而是用来管理和调度数据使用的,一般被管理的数据大小都不会太大,一般以KB为单位。ZooKeeper主要用于管理和调度分布式应用程序。

为了更直观的看看Zookeeper里面都有什么数据,我们在之前搭建好的集群上进行简单的实验。

我们创建一个节点/name,然后节点上附带的数据内容是我的名字“majing”,如下所示:



从上面我们可以看出来,在使用get /name 命令获取节点数据的时候,同时还返回了其他一些状态数据。具体含义如下:

cZxid:该节点创建时的zxid;

ctime:该节点创建时间;

mZxid:该节点最近一次更新发生时的zxid;

mtime:该节点最近一次更新时间;

pZxid:该节点或者该节点子节点的最近一次更新发生的zxid;

cversion:其子节点的更新次数;

dataVersion:该节点数据内容的更新次数;

aclVersion:该节点ACL(授权信息)的更新次数;

ephemeralOwner:如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0;

datalength:该节点对应的数据内容的字节数;

numChildren:该节点的子节点个数;

ZooKeeper中的节点类型分为三种:

持久性节点(persistent):节点被创建以后会一直存在,直到被显示删除;

临时性节点(ephemeral):创建的节点时临时性的,如果创建该节点的Session没有了,那么该节点将会被自动删除;

关于ZkCli.sh中支持哪些zookeeper操作,如果不清楚的话,可以使用help命令进行查看,如下所示:



如果想了解我最新的博文,请关注我的博客或者专栏。如果想看到更多相关技术文章并愿意支持我继续写下去,欢迎给我打赏,对您的打赏我表示非常感谢。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息