Zookeeper 介绍

1、Zookeeper 数据结构

ZooKeeper是一个类似操作系统的文件系统数据结构,如下图:

Zookeeper 介绍
每个节点被称为znode,这个znode是可以存数据的;
可以增加、删除、查询、修改znode,也可以在一个znode下增加、删除子znode;

有四种类型的znode:(大类分为两类)

PERSISTENT 持久化目录节点;
客户端与zookeeper断开连接后,该节点依旧存在
PERSISTENT_SEQUENTIAL 持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号;

EPHEMERAL 临时目录节点;
客户端与zookeeper断开连接后,该节点将被删除
EPHEMERAL_SEQUENTIAL 临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点将被删除,只是Zookeeper给该节点名称进行顺序编号;

2.图形界面客户端

Zookeeper图形客户端工具下载地址:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

下载完后解压即可使用
进入ZooInspector\build\zookeeper-dev-ZooInspector.jar的jar包
运行jar文件:java -jar zookeeper-dev-ZooInspector.jar
注意:运行该jar包需要耐心等待一会儿才能打开
节点信息:

Zookeeper 介绍

3.命令行客户端

进入bin目录
使用zkCli连接ZooKeeper

默认直接连接本地127.0.0.1:2181:./zkCli.sh

Zookeeper 介绍
指定ip和端口连接:./zkCli.sh -server 192.168.222.10:2181

命令行客户端主要是通过命令对zookeeper进行操作,一般地,对ZooKeeper的操作都是对节点进行增删改查
随便输入一个非法命令,zookeeper会显示命令帮助信息;

查询: ls /path(节点名字) 列出path节点下的节点

比如: ls /
列出根目录节点下的所有节点,目前就只有一个系统自带的zookeeper节点;
获取节点的数据:get /pathZookeeper 介绍

stat /path:查看节点状态

Zookeeper 介绍
节点状态信息详解

cZxid节点创建时的zxid;

ctime节点创建时间;

mZxid节点最近一次更新时的zxid;

mtime节点最近一次更新的时间;
pZxid 操作当前节点的子节点列表的事物ID(这种操作包含增加子节点,删除子节点);

cversion子节点数据更新次数;

dataVersion本节点数据更新次数;

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

ephemeralOwner如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的

session id. 如果该节点不是临时节点,ephemeralOwner值为0;

dataLength节点数据长度;

numChildren子节点个数;

增加节点:create [-s] [-e] path data acl

其中 -s 表示顺序节点,-e表示临时节点
-s 和 -e 可以同时结合使用
临时节点,当客户端会话结束后,临时节点会被删除;
顺序节点特性可用于生成在分布式环境下的主键生成器;

Zookeeper 介绍

close 命令关闭当前会话;
quit 命令退出连接的客户端命令行;

修改:set path data [version]

Zookeeper 介绍

删除:delete path [version]

删除指定节点数据;
注意:delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用deleteall命令;