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

前面两篇文章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命令进行查看,如下所示:



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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值