zookeeper简单使用

连接api

在ZooKeeper的 bin 目录下执行zkCli.sh

./zkCli.sh  -server 127.0.0.1:2181

退出api

quit

帮助

h

显示历史命令

history

权限?

setAcl命令
设置节点Acl。

此处重点说一下acl,acl由大部分组成:1为scheme,2为user,3为permission,一般情况下表示为scheme:id:permissions。

其中scheme和id是相关的,下面将scheme和id一起说明。

 

scheme和id
world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的

auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)

digest: 它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication

ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段

super: 在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)

permissions
CREATE(c): 创建权限,可以在在当前node下创建child node

DELETE(d): 删除权限,可以删除当前的node

READ(r): 读权限,可以获取当前node的数据,可以list当前node所有的child nodes

WRITE(w): 写权限,可以向当前node写数据

ADMIN(a): 管理权限,可以设置当前node的permission

综上,一个简单使用setAcl命令,则可以为:

setAcl /zookeeper/node1 world:anyone:cdrw

 getAcl命令
获取节点Acl。

如getAcl /zookeeper/node1

'world,'anyone

: cdrwa

注:可参见setAcl命令。

查询相关指令

#ls path:列出path下的文件
[zk: 127.0.0.1:2181(CONNECTED) 4] ls /
[zookeeper]
#如上:列出根目录节点下的所有文件,目前就只有一个系统自带的zookeeper节点
#stat path:查看节点状态
[zk: 127.0.0.1:2181(CONNECTED) 6] stat /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

#cZxid:创建节点时的事务id
#pZxid:子节点列表最后一次被修改的事务id
#cversion:节点版本号
#dataCersion:数据版本号
#aclVerson:acl权限版本号
#......
#get path:获取指定节点的内容
#ls2 path:列出path节点的子节点及状态信息

创建指令

#create [-s] [-e] path data acl
1 [zk: 127.0.0.1:2181(CONNECTED) 10] create /node_1 123
2 Created /node_1
#如上:在根目录创建了node_1节点,携带数据 123,使用 get /node_1 验证是否添加节点及其数据成功

修改相关指定

#set path data [version]
[zk: 127.0.0.1:2181(CONNECTED) 14] set /node_1 998
cZxid = 0x200000002
ctime = Sat Aug 27 15:24:39 CST 2016
mZxid = 0x20000000a
mtime = Sat Aug 27 15:38:40 CST 2016
pZxid = 0x200000008
cversion = 5
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 3
#如果我们多次修改,会发现  dataVersion ,也就是数据版本,在不停得发生变化(自增)

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

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

删除指令

#delete path [version]
delete /node_1/node_1_10000000001
#删除指定节点数据,其version参数的作用于set指定一致
#整个节点全删除

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

你可能感兴趣的:(zookeeper简单使用)