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来做相应处理了。
org.apache.zookeeper zookeeper 3.4.14