正文
一,Zookeeper链接
链接zookeeper的API有常用的两种,一种是命令行客户端,而另一种是Java客户端,在这将会对命令行客户端的链接进行讲解。在zookeeper的bin目录中有客户端的可执行文件zkCli.sh用来作为命令行客户端连接,如下图:
1.1 普通链接
这里的普通链接是指,连接本机的zookeeper服务,链接命令:
zkCli.sh
下图是个链接实例:
1.2 带参数链接
带参数链接比普通链接多个参数,是链接到非本机服务端,链接命令:
zkCli.sh -server hd2
二,zookeeper常用命令
2.1 查看子节点(ls)
// 命令 查看的节点路径(绝对路径) 是否监听 ls path watch
[zk: localhost:2181(CONNECTED) 1] ls / [zookeeper]
如实例:
2.2 创建节点(create)
// 命令 (节点类型) 节点路径 数据 create [-s] [-e] path data
[zk: localhost:2181(CONNECTED) 2] create /a "hellow world" Created /a
如下实例:
(1),普通永久节点
(2),临时节点
(3),带序号节点
2.3 查看节点数据(get)
// 命令 节点路径 是否watch get path [watch]
[zk: localhost:2181(CONNECTED) 4] get /a hellow world cZxid = 0x5000000006 ctime = Wed Mar 21 20:01:02 CST 2019 mZxid = 0x5000000006 mtime = Wed Mar 21 20:01:02 CST 2019 pZxid = 0x5000000006 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 11 numChildren = 0 [zk: localhost:2181(CONNECTED) 5]
如下图示例:
2.4 修改节点(set)
// 命令 节点路径 数据 set path data
[zk: localhost:2181(CONNECTED) 6] set /a "watch data" cZxid = 0x100000002 ctime = Wed Mar 21 20:01:02 CST 2019 mZxid = 0x100000004 mtime = Wed Mar 21 20:04:10 CST 2019 pZxid = 0x100000002 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 0 [zk: localhost:2181(CONNECTED) 7]
如下示例:
2.5 删除节点(rmr)
// 命令 路径 rmr path
[zk: localhost:2181(CONNECTED) 6] rmr /a/b [zk: localhost:2181(CONNECTED) 6] ls /a []
如下示例:
2.6 监听节点(watch)
// 命令 节点路径 watch get path watch
[zk :locahhost:2181(CONNECTED) 36] get /a watch hellow world cZxid = 0x50000000006 cTime = Mon May 13 10:52:38 EDT 2019 mZxid = 0x50000000006 mTime = Mon May 13 10:52:38 EDT 2019 pZxid = 0x5000000000e cversion = 7 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 12 numChildren = 3
上述代码是开启节点监听,当有别的客户端修改了节点/a的数据,改服务端就一会接到消息:如下
另一客户端修改:
修改后监听后的情况:
下面是另一种节点监听:(监听的是子节点是否有增加或删除)
修改的客户端:
三,节点类型
3.1 临时节点
创建者一旦跟集群断开联系,zk就会将这个节点删除
3.2 永久节点
创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中
3.3 带序号节点
这类节点,zk会自动拼接上一个序号,而且序号是递增的
综上有以下组合类型,在创建的时候配置不同带参数即可:
PERSISTENT :持久不带序号
EPHEMERAL :短暂不带序号
PERSISTENT 且 SEQUENTIAL :持久且带序号
EPHEMERAL 且 SEQUENTIAL :短暂且带序号