zookeeper笔记
配置文件
在conf目录下有一个zoo_sample.cfg文件,这是个样例,将它复制一份->zoo.cfg,将zoo.cfg作为配置文件。
- dataDir:文件存放位置,必须配置
- dataLogDir:日志文件存放位置
基本数据模型
树形结构
每个节点称为znode,可以有子节点,也可以有数据
节点分为临时节点和永久节点,临时节点会在客户端断开以后消失
每个zk节点都有各自的版本号,可以通过命令显示节点信息
当节点数据发生变化,该节点版本号会增加(乐观锁)
删除/修改过时节点时,版本号不匹配会报错
每个zk节点存储的数据不宜过大,几k即可
节点可以设置权限,通过权限可以限制用户访问
运行
在bin目录下有一些启动文件(linux-sh和windows-cmd)
服务端的使用:
./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
客户端的使用:
启动:
./zkCli.sh
常用命令
常用的命令都可以使用help命令查看
stat path [watch]:查看节点状态
set path data [version]:version用于乐观锁的实现,如果version与当前版本相同才执行set
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:-s顺序节点,-e临时节点
addauth scheme auth
quit
getAcl path:获取权限信息
close
watch
使用watch的命令可以给节点设置一个watch,当在该节点某个事件发生时会触发watch
acl
ACL的格式由schema-id-acl三段组成。
-
schema:
- world:默认方式,相当于全部都能访问
- auth:代表已经认证通过的用户
- digest:即用户名:密码这种方式认证,这也是业务系统中最常用的。用 username:password 字符串来产生一个MD5串,然后该串被用来作为ACL ID。认证是通过明文发送username:password 来进行的,当用在ACL时,表达式为username:base64 ,base64是password的SHA1摘要的编码。
- ip:使用客户端的主机IP作为ACL ID 。这个ACL表达式的格式为addr/bits ,此时addr中的有效位与客户端addr中的有效位进行比对。
-
id:
授权对象ID是指,权限赋予的用户或者一个实体 -
permission:授予什么权限,
- CREATE c 可以创建子节点
- DELETE d 可以删除子节点(仅下一级节点)
- READ r 可以读取节点数据及显示子节点列表
- WRITE w 可以设置节点数据
- ADMIN a 可以设置节点访问控制列表权限