可视化客户端
当我们像看zookeeper上的节点信息时,输命令很麻烦,也不直观,介绍一个可视化的客户端,贼方便
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解压后进入build目录执行命令
java -jar zookeeper-dev-ZooInspector.jar
输入连接地址,即可看到zookeeper的节点信息
基本用法
zookeeper在很多框架中都有应用,例如:Dubbo,Hadoop,Storm,Kafka等,在这些框架中都用到了zookeeper
zookeeper的数据模型和文件系统类似,每一个节点称为znode,是zookeeper中的最小数据单元,每一个znode上可以报存数据和挂载子节点,从而构成一个层次化的属性结构
可以创建如下四种节点
持久节点:节点创建后会一直存在zookeeper服务器上,直到主动删除
持久顺序节点:每个节点都会为它的一级子节点维护一个顺序
临时节点:临时节点的生命周期和客户端的会话保持一致。当客户端会话失效,该节点自动清理
临时顺序节点:在临时节点上多了一个顺序的特性
简单演示一下常用的命令
create [-s] [-e] path data acl
-s : 创建顺序节点
-e : 创建临时节点
path : 路径
data : 数据
acl : 权限
create默认创建的是持久化节点
create /level-1 123create /level-1/level-1-2 456get /level-1(获取节点level-1的值,输出123)ls /level-1 (获取节点level-1的子节点,输出[level-1-2])// 创建一个顺序节点create -s /nodes 123(输出nodes0000000003)create -s /nodes 456(输出nodes0000000004)
执行完上述命令后,数据结构如下所示
这里简单说一下顺序节点的特性。每次创建顺序节点时,zk都会在路径后面自动添加上10位的数字(计数器),例如 < path >0000000001,< path >0000000002,……这个计数器可以保证在同一个父节点下是唯一的。在zk内部使用了4个字节的有符号整形来表示这个计数器,也就是说当计数器的大小超过2147483647时,将会发生溢出,每次在父节点下创建一个临时节点时,大小加1,如上图的3到4
zookeeper提供了分布式数据发布/订阅,允许客户端向服务端注册一个watcher监听,当服务端的一些指定事件触发了这个watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
简单举几个watcher的事件类型