Zookeeper基本使用
客户端链接
现在已经搭建起了⼀个能够正常运⾏的zookeeper服务了,所以接下来,就是来借助客户端来对
zookeeper的数据节点进⾏操作
⾸先,进⼊到zookeeper的bin⽬录之后
通过zkClient进⼊zookeeper客户端命令⾏
./zkcli.sh 连接本地的zookeeper服务器
./zkCli.sh -server ip:port 连接指定的服务器
创建节点
使⽤create命令,可以创建⼀个Zookeeper节点, 如
① 创建顺序节点
使⽤ create -s /zk-test 123 命令创建zk-test顺序节点
执⾏完后,就在根节点下创建了⼀个叫做/zk-test的节点,该节点内容就是123,同时可以看到创建的
zk-test节点后⾯添加了⼀串数字以示区别
② 创建临时节点
使⽤ create -e /zk-temp 123 命令创建zk-temp临时节
create [-s][-e] path data acl
其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则创建持久节点;acl⽤来进⾏权限控制。临时节点在客户端会话结束后,就会⾃动删除,下⾯使⽤quit命令退出客户端
再次使⽤客户端连接服务端,并使⽤ls / 命令查看根⽬录下的节点
可以看到根⽬录下已经不存在zk-temp临时节点了
③ 创建永久节点
使⽤ create /zk-permanent 123 命令创建zk-permanent永久节点
可以看到永久节点不同于顺序节点,不会⾃动在后⾯添加⼀串数字
读取节点
与读取相关的命令有ls 命令和get 命令
ls命令可以列出Zookeeper指定节点下的所有⼦节点,但只能查看指定节点下的第⼀级的所有⼦节点;
get命令可以获取Zookeeper指定节点的数据内容和属性信息。
若获取根节点下⾯的所有⼦节点,使⽤ls / 命令即可
若想获取/zk-permanent的数据内容和属性,可使⽤如下命令:get /zk-permanent
ls path
其中,path表示的是指定数据节点的节点路径
get path从上⾯的输出信息中,我们可以看到,第⼀⾏是节点/zk-permanent 的数据内容,其他⼏⾏则是创建该
节点的事务ID(cZxid)、最后⼀次更新该节点的事务ID(mZxid)和最后⼀次更新该节点的时间
(mtime)等属性信息
更新节点
使⽤set命令,可以更新指定节点的数据内容,⽤法如下
其中,data就是要更新的新内容,version表示数据版本,在zookeeper中,节点的数据是有版本概
念的,这个参数⽤于指定本次更新操作是基于Znode的哪⼀个数据版本进⾏的,如将/zk-permanent节
点的数据更新为456,可以使⽤如下命令:set /zk-permanent 456
现在dataVersion已经变为1了,表示进⾏了更新
删除节点
使⽤delete命令可以删除Zookeeper上的指定节点,⽤法如下
set path data [version]其中version也是表示数据版本,使⽤delete /zk-permanent 命令即可删除/zk-permanent节点
可以看到,已经成功删除/zk-permanent节点。值得注意的是,若删除节点存在⼦节点,那么⽆法删除
该节点,必须先删除⼦节点,再删除⽗节点
Zookeeper的api使⽤
Zookeeper作为⼀个分布式框架,主要⽤来解决分布式⼀致性问题,它提供了简单的分布式原语,并且
对多种编程语⾔提供了API,所以接下来重点来看下Zookeeper的java客户端API使⽤⽅式
Zookeeper API共包含五个包,分别为:
(1)org.apache.zookeeper
(2)org.apache.zookeeper.data
(3)org.apache.zookeeper.server
(4)org.apache.zookeeper.server.quorum
(5)org.apache.zookeeper.server.upgrade
其中org.apache.zookeeper,包含Zookeeper类,他是我们编程时最常⽤的类⽂件。这个类是
Zookeeper客户端的主要类⽂件。如果要使⽤Zookeeper服务,应⽤程序⾸先必须创建⼀个Zookeeper
实例,这时就需要使⽤此类。⼀旦客户端和Zookeeper服务端建⽴起了连接,Zookeeper系统将会给本
次连接会话分配⼀个ID值,并且客户端将会周期性的向服务器端发送⼼跳来维持会话连接。只要连接有
效,客户端就可以使⽤Zookeeper API来做相应处理了。
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency