Zookeeper(2)---节点属性、监听和权限

现在我们就通过stat指令来看看节点都有哪些属性,或者使用get 指令和-s参数来查看节点数据以及属性

Zookeeper(2)---节点属性、监听和权限

 

 

abc  节点数据

cZxid = 0x5 创建节点的事务ID

ctime = Sat Oct 17 15:25:43 CST 2020   创建时间

mZxid = 0xc 修改节点的事务ID(修改当前节点数据)

mtime = Wed Oct 21 22:51:14 CST 2020  最后修改时间

pZxid = 0x6 子节点变更(增加和删除,数据修改不会影响该ID)的事务ID

cversion = 1 子节点进行的更改(增加和删除,数据修改不会影响该ID次数(不包括子节点)

dataVersion = 1  数据版本

aclVersion = 0 权限变化版本 access control list

ephemeralOwner = 0x0  字面翻译临时节点拥有者,持久节点值为0,非持久节点不为0(会话ID

dataLength = 3  数据长度

numChildren = 1 子节点数量(不包括子子节点)

 

监听:

 

我们可以通过-w参数对一些节点设置监听,适用于分布式保障数据一致性的场景。多个服务同时监听一个节点,当这个节点发生对应的变化时,就会通知到监听了该节点的所有服务。

比如之前说的配置信息发生变化,每个服务获取到变更信息之后进行变更,而不需要一个一个服务的去操作。

 

 

ls -w 监听子节点的变化(增,删)

 

get -w 监听节点数据的变化

 

stat -w 监听节点属性的变化

 

printwatches on|off 触发监听后,是否打印监听事件(默认on)

 

 

 

现在我们开启两个客户端来看看上面的这些监听操作

 

1.数据变化监听 get -w

客户端添加监听

 

 

Zookeeper(2)---节点属性、监听和权限

 

客户端2修改数据

 

Zookeeper(2)---节点属性、监听和权限

 

客户端1监听到数据变化

 

Zookeeper(2)---节点属性、监听和权限

 

 

可以看到监听的了数据变化

如果我们再次修改数据,会发现无法再次监听到变化了。因为这个监听是一次性的,只会出发一次,如果还需要监听需要重新设置监听

 

 

2.节点变化(增、删)ls -w

 

这个监听可以用于服务心跳维护或者服务注册。监听一个持久节点,每个服务上线的时候在该持久节点下面,新增一个临时(序号)节点,date可以存放ip信息和端口。当某个服务宕机的时候,该节点的子节点变化就会被监听到了。

客户端1监听

Zookeeper(2)---节点属性、监听和权限

 

 

 

客户端2新增节点

Zookeeper(2)---节点属性、监听和权限

 

 

 

客户端1监听到节点变化

 

 

Zookeeper(2)---节点属性、监听和权限

 

 

3.监听属性变化 stat -w

 

这个监听相当于就是前面两个监听的汇总,数据修改,子节点变更都会涉及到属性变化

 

 

权限设置:

 

Access Control List(访问控制列表),用于控制节点的访问操作权限

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzpsy.html