好像在(一)中介绍了zkcli这个shell脚本,用了对节点进行增删改查,继续看看还有什么鬼操作。我是直接用的brew安装的zookeeper,直接执行zkcli进入,也可以是在zookeeper的bin目录中执行sh zkcli.sh或者bash等执行脚本的方法,一般我也喜欢用 ./zkcli.sh的方式,还可以用决定路径执行,突然想这几种有什么区别,查查看,据说./与绝对路径是都需要提前赋予脚本以执行权限(没有权限 用 chmod 命令加上相应的权限),而bash脚本不需要有执行权限就可以执行,其中bash还可以用输入重定向的方式,只是不能带参数(bash < 脚本),都是从指定文件读入命令行,当到shell文件末尾时,执行结束。
在本地,vi zkcli.sh,具体执行的放在了另一个地方,有种抓罪犯的感觉,有没有,层层迷雾。
那就进入libexec/bin看看,好像主要是执行zkEnv.sh,前面的定义的变量不太明白,打开zkEnv.sh看到设置一些zookeeper的配置,conf,jar包,日志,java等,这里使用的是java客户端,智商捉急,看的不是很明白,感觉到处埋坑。
其实执行zkcli是可以指定 bash zkcli.sh -server ip:port的
使用zkcli -h来看看都有哪些命令可以玩,为什么不是按字母顺序输出呢?我YY一下,上次已经介绍了增删改查 create,delete,set,ls,get
补充点get获取到的信息,其中创建节点是事务id是cZxid,ctime创建时间,最后一次更新的事务id和时间mZxid和mtime,这边子节点数量也加1啦,其中还可以看到dateVersion,难道dubbo服务的version版本是存在这里吗?下次看看吧。
还以为close是关闭脚本,原来只是关闭连接,原来是CONNECTED->CLOSED,那么用connect应该就可以了吧,本以为是和exit作用一样,退出哈。
其实退出的是quit
这边能猜中的看来应该是history,这个命令和我们在linux中的那种是一样一样的。
上次讲到删除的时候,我们看到delete是不能删除子路径下的,不然会报Node not empty的错误,这边有个rmr path就可以会递归删除子节点,再删除节点本身。
setquota -n|-b val path 查了一下是对子节点数量与长度做限制的 -n是数量,-b是长度,其中listquota就是查看这个的,delquota就是用来删除配置的,可以看到quota中 count 变成了-1,不过这里的设置其实是不起作用的,我试了一下,就算为两个,其实还是可以创建3个以上
还有一块是权限控制,上次(一)创建的节点是没有权限控制,使用getAcl可以看到 world anyone,操作有cdrwa,这里只是简单做一个介绍,zookeeper的权限控制感觉还是可以写很多东西的,其中还有给用户添加权限addauth digest yangxin:123456
没有权限我们可以设置一个
这边就设定了 这个node 在那个ip下有读写的权限,我们用一下redo试一下,哎,没权限啦。
有什么讨论的内容,可以加我公众号: