Zookeeper学习之Znode学习

此篇文章我们来学习ZK里面的节点(Znode)

ZK中的节点分为三种:

持久节点:创建之后永久存在的节点,除非主动删除,也不会因创建节点的客session失效而消失

临时节点:与客户端session绑定,一旦session过期,则临时节点删除。或者客户端主动断开连接也会删除临时节点。同时临时节点无法拥有子节点。

持久顺序节点:首先拥有持久节点的特性。其次特性为,我们在创建此类节点时,节点后缀会按照顺序(整形),从0开始以此向后递增

临时顺序节点:只是将持久顺序节点的持久特性换成临时节点。

创建方式

create [-s] [-e] path data acl        节点最大数据量1024K

使用ls可以查看当前节点子节点

持久节点:create /data "1"

临时节点:create -e /temp "1"

持久顺序节点:create -s /data/seq_  "1"

临时顺序节点:create -s -e /temp/seq_  "1"

删改查

delete path [version] :加版本号则会选择删除选中版本的节点,不加则直接删除节点。(有子节点无法删除)

rmr path :此命令用于强制删除当前节点以及子节点

set path data [version]:修改节点数据,版本号作用同上

get path:获取节点数据(当前节点全部状态信息,包括存储数据,不包括子节点)

节点状态解析

  get获取数据时,第一行数据为保存数据;stat命令下,无此行。
cZxid = 0x0  代表zookeeper创建后为这个节点所分配的事务ID
mZxid = 0x0  代表修改(modify)后 zookeepe分配的事务ID
ctime = Thu Jan 01 08:00:00 CST 1970  代表zookeepe这个节点的创建时间(createtime)
mtime = Thu Jan 01 08:00:00 CST 1970    代表修改(modify)后的时间 如果该节点没有被修改 它的修改时间和创建时间是一样的
pZxid = 0x0   代表添加删除或者修改子节点的事务ID
cversion = -1 代表的是子节点的版本(version),或者叫做更改次数, 子节点发生变化子节点版本就会发生变化
dataVersion = 0   代表当前节点数据的一个版本号,如果当前节点数据修改版本号会自动累加1
aclVersion = 0   代表一个权限模型,acl代表权限。当节点权限发生变化的时候,权限的版本会自动累加1
ephemeralOwner = 0x0 临时节点情况下,此值为session ID,否则值为0
dataLength = 0   代表的是数据 长度
numChildren = 1

代表子节点数量 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

watch(监控器)

zk中的节点是可以监控,包括节点中数据的变更,子节点的变化。一旦变化则会通知监控的客户端。这个特性是ZK最重要的特性之一,通过这个特性我们可以实现配置中心,分布式锁等等。同时,这个监控器只能生效一次。

你可能感兴趣的:(#,Zookeeper,分布式)