• zkCli.sh

在 bin 目录下的  zkCli.sh  就是ZooKeeper客户端

./zkCli.sh -timeout 5000  -server 127.0.0.1:2181   客户端与ZooKeeper建立链接

timeout:超时时间,单位毫秒

r:只读模式,当节点坏掉的时候,还可以提供读服务

示例:

./zkCli.sh -timeout 5000 -server 127.0.0.1:2181

 zhangliuningdeMacBook-Pro:bin sherry$ ./zkCli.sh -timeout  -server 127.0.0.1:
Connecting to 127.0.0.1:
-- ::, [myid:] - INFO [main:Environment@] - Client environment:zookeeper.version=3.4.--, built on // : GMT
-- ::, [myid:] - INFO [main:Environment@] - Client environment:host.name=192.168.0.105
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.version=1.8.0_71
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.vendor=Oracle Corporation
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1..0_71.jdk/Contents/Home/jre
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.class.path=/Users/sherry/Applications/zk1/bin/../build/classes:/Users/sherry/Applications/zk1/bin/../build/lib/*.jar:/Users/sherry/Applications/zk1/bin/../lib/slf4j-log4j12-1.6.1.jar:/Users/sherry/Applications/zk1/bin/../lib/slf4j-api-1.6.1.jar:/Users/sherry/Applications/zk1/bin/../lib/netty-3.7.0.Final.jar:/Users/sherry/Applications/zk1/bin/../lib/log4j-1.2.16.jar:/Users/sherry/Applications/zk1/bin/../lib/jline-0.9.94.jar:/Users/sherry/Applications/zk1/bin/../zookeeper-3.4.8.jar:/Users/sherry/Applications/zk1/bin/../src/java/lib/*.jar:/Users/sherry/Applications/zk1/bin/../conf:
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/Users/sherry/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/var/folders/_n/d05bph5x5bl6k5p0pkx2g66m0000gn/T/
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Mac OS X
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=x86_64
2016-08-27 15:07:04,042 [myid:] - INFO [main:Environment@100] - Client environment:os.version=10.11.5
2016-08-27 15:07:04,043 [myid:] - INFO [main:Environment@100] - Client environment:user.name=sherry
2016-08-27 15:07:04,043 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/Users/sherry
2016-08-27 15:07:04,043 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/Users/sherry/Applications/zk1/bin
2016-08-27 15:07:04,044 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=5000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@531d72ca
Welcome to ZooKeeper!
2016-08-27 15:07:04,081 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2016-08-27 15:07:04,187 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
[zk: 127.0.0.1:2181(CONNECTING) 0] 2016-08-27 15:07:04,245 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x156cacb918b0000, negotiated timeout = 5000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null

如上,表示我们和ZooKeeper建立了连接,可以通过命令与ZooKeeper进行交互了


h:帮助列表

h
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port

显示能够执行的命令

命令分类和数据库相似,大概可以分为增删改查四类

ZooKeeper数据结构:

大多数时候,我们队ZooKeeper的操作都是在对节点进行增删改查

常用命令:

查询相关指令

ls path:列出path下的文件

[zk: 127.0.0.1:(CONNECTED) ] ls /
[zookeeper]

如上:列出根目录节点下的所有文件,目前就只有一个系统自带的zookeeper节点

stat path:查看节点状态

[zk: 127.0.0.1:(CONNECTED) ] stat /zookeeper
cZxid = 0x0
ctime = Thu Jan :: CST
mZxid = 0x0
mtime = Thu Jan :: CST
pZxid = 0x0
cversion = -
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
cZxid:创建节点时的事务id
pZxid:子节点列表最后一次被修改的事务id
cversion:节点版本号
dataCersion:数据版本号
aclVerson:acl权限版本号 ...... get path:获取指定节点的内容 ls2 path:列出path节点的子节点及状态信息
创建指令

create [-s] [-e] path data acl

 [zk: 127.0.0.1:(CONNECTED) ] create /node_1
Created /node_1

如上:在根目录创建了node_1节点,携带数据 123

使用 get /node_1 验证是否添加节点及其数据成功

[zk: 127.0.0.1:(CONNECTED) ] create -e /node_1/node_1_1
Created /node_1/node_1_1

创建了一个临时节点(-e),并且携带数据234,使用stat命令查看这个新建的临时节点

[zk: 127.0.0.1:(CONNECTED) ] stat /node_1/node_1_1
cZxid = 0x200000003
ctime = Sat Aug :: CST
mZxid = 0x200000003
mtime = Sat Aug :: CST
pZxid = 0x200000003
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x156cacb918b0000
dataLength =
numChildren =
ephemeralOwner值不再是0,表示这个临时节点的版本号,如果是永久节点则其值为 0x0
 [zk: 127.0.0.1:(CONNECTED) ] create -s /node_1/node_1_1
Created /node_1/node_1_10000000001

通过使用-s参数,创建一个顺序节点,我们虽然指定的节点名是node_1_1,但是实际上,名称却是 node_1_10000000001,如果我们重复执行:

[zk: 127.0.0.1:(CONNECTED) ] create -s /node_1/node_1_1
Created /node_1/node_1_10000000002

效果如上

这个特性,我们可以利用一下,生成在分布式环境下的主键生成器

-s 和 -e 可以同时使用


退出:
quit
[zk: 127.0.0.1:(CONNECTED) ] quit
Quitting...
-- ::, [myid:] - INFO [main:ZooKeeper@] - Session: 0x156cacb918b0000 closed
-- ::, [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@] - EventThread shut down for session: 0x156cacb918b0000

这个时候如果重新登录,执行 ls /node_1,发现其子节点是空的,创建的node_1_1子节点不见了,那是因为之前创建的时候就已经指定了,我们创建的是一个临时节点。当客户端会话结束后,临时节点是会被删除了。

修改相关指定:

set path data [version]

[zk: 127.0.0.1:(CONNECTED) ] set /node_1
cZxid = 0x200000002
ctime = Sat Aug :: CST
mZxid = 0x20000000a
mtime = Sat Aug :: CST
pZxid = 0x200000008
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

如果我们多次修改,会发现  dataVersion ,也就是数据版本,在不停得发生变化(自增)

如果我们在set的时候手动去指定了版本号,就必须和上一次查询出来的结果一致,否则 就会报错。

这个可以用于我们在修改节点数据的时候,保证我们修改前数据没被别人修改过。因为如果别人修改过了,我们这次修改是不会成功的

删除指令:

delete path [version]

删除指定节点数据,其version参数的作用于set指定一致

delete /node_1/node_1_10000000001

整个节点全删除

注意:delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用rmr命令

rmr /node_1
 
 
 

ZooKeeper客户端 zkCli.sh 节点的增删改查的更多相关文章

  1. ZooKeeper客户端 zkCli.sh 节点的配额设置

    首先使用 zkCli.sh 连接上ZooKeeper服务器 配额设置命令格式如下: setquota -n|-b val path -n:val设置子节点个数 -b:val设置节点的数据长度 如果我们 ...

  2. Zookeeper入门(六)之zkCli.sh对节点的增删改查

    参考地址为:https://www.cnblogs.com/sherrykid/p/5813148.html 1.连接 在 bin 目录下的  zkCli.sh  就是ZooKeeper客户端 ./z ...

  3. HTML DOM(二):节点的增删改查

    上一篇讲述了DOM的基本知识,从其得知,在DOM眼中,HTML的每个成分都可以看作是节点(文档节点.元素节点.文本节点.属性节点.注释节点,其中,属性节点是属于元素节点),本篇的内容就是通过DOM对这 ...

  4. HTML DOM节点的增删改查

    上篇博客中,我们已经初步接触了DOM基础,可是我们学习是为了可以更好地应用,今天我们就来看看DOM节点的增删改查. 无论在哪里,我们想要操作一个东西,总是应该先去获得它.那么我们怎么获得呢? HTML ...

  5. JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删改查),事件

    JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删 ...

  6. 9 HTML DOM事件监听&版本兼容&元素(节点)增删改查

    事件监听: 语法:element.addEventListener(event, function, useCapture); event:事件的类型,触发什么事件,注意不需要on作为前缀,比如cli ...

  7. DOM节点的增删改查

    在开始展开DOM操作前,首先需要构建一棵DOM树. <!DOCTYPE html> <html lang="en"> <head> <me ...

  8. zookeeper 数据节点的增删改查

    1.连接服务端 [root@localhost bin]# ./zkCli.sh -server 127.0.0.1:2181 Connecting to 127.0.0.1:2181 2018-05 ...

  9. 围绕DOM元素节点的增删改查

    HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 document 每个 HTML 元素是元素节点 element HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是 ...

随机推荐

  1. 如何迅速入门STM32

    我想说,为了学习单片机而去学习单片机的思路不对. 你问,如何系统地入门学习stm32? 本身就是一个错误的问题.假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习. 你要考虑的 ...

  2. 【Codeforces 1110E】Magic Stones

    Codeforces 1110 E 题意:给定两个数组,从第一个数组开始,每次可以挑选一个数,把它变化成左右两数之和减去原来的数,问是否可以将第一个数组转化成第二个. 思路: 结论:两个数组可以互相转 ...

  3. Android学习之基础知识四-Activity活动4讲(Intent传递数据)

    Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据.  一.使 ...

  4. C# Hashtable vs Dictionary 学习笔记

    Hashtable 和 Dictionary 存储的都是键值对,我的理解是Dictionary是Hashtable的泛型实现. Hashtable的键和值都是object类型.所以,key和value ...

  5. BusyBox下tftp命令的使用

    一.简介 BusyBox下的tftp是一款应用于嵌入式开发系统上的一款小巧tftp工具,为开发者提供一个tftp服务的使用平台. 通常是,PC开发主机作为服务器(Server),开发系统(板)作为客户 ...

  6. Luogu3676 小清新数据结构题 动态点分治

    传送门 换根类型的统计问题动态点分治都是很好做的. 设所有点的点权和为$sum$ 首先,我们先不考虑求$\sum\limits_i s_i^2$,先考虑如何在换根的情况下求$\sum\limits_i ...

  7. 实现Repeater控件的记录单选

    有朋友问及,在Repeater控件中第一列放置一个RadioButton,实现对记录的单选. 下面Insus.NET想举个例子来实现与说明. 为Repeater控件准备数据: 在ASPX网页上,写好R ...

  8. Bootstrap Search Suggest 下拉框模糊查询

    源码地址:https://github.com/lzwme/bootstrap-suggest-plugin 有时间会完善!暂时有点忙!

  9. 代码无错就是优?简单工厂模式 C#

    还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 现在给你一道面试题,如下: 请用C++,C#,Ja ...

  10. 【LGR-049】洛谷7月月赛

    Preface Luogu八月月赛都结束了我才来补七月月赛 这次月赛还是很狗的,在绍一的晚上恰逢刮台风,然后直接打到一半断网了 结果都没有交上去GG 感觉这次难度适中,解法也比较清新自然吧,十分给个九 ...