查询结果含义:
cZid:创建时zookeeper分配给节点的id
ctime:创建时间
mZid:修改后zookeeper的节点id
mtime:节点修改的时间
pZid:子节点的id
cversion:子节点的version
dataVersion:当前节点的数据版本号
aclVersion:权限的版本
dataLength:数据长度
numChildren:子节点的个数
客户端与服务端之间连接存在会话;每个会话都可以设置一个超时时间;心跳结束,session则过期
session过期,则临时节点znode会被抛弃。
心跳机制:客户端向服务端的ping包请求
create命令:
创建节点:create /imooc imooc-data
创建临时节点:create -e /imooc/tmp imooc-data
增量创建节点:-s参数
(1) 针对每个节点的操作,都会有一个监督者——watcher。当监控的某个对象(znode)发生了变化,则触发watcher事件。
zk中的watcher是一次性的,触发后立即销毁。
(2)父节点,子节点增删改都能够触发其watcher
(3)针对不同类型的操作,触发的watcher事件也不同:
(子)节点创建事件
(子)节点删除事件
(子)节点数据变化事件
命令:通过 get path [watch] 设置watcher
父节点 增删改操作触发watcher;子节点 增删改操作触发watcher
watcher事件类型一:
创建父亲节点出发:NodeCreated
修改父节点数据触发:NodeDataChanged
删除父亲节点触发:NodeDeleted
ls为父节点设置watcher,创建子节点触发:NodeChildrenChanged
ls为父节点设置watcher,删除子节点触发:NodeChildrenChanged
ls为父节点设置watcher,修改子节点不触发事件;原因:对子节点的修改无法触发父节点的watch机制 ;get /imooc/xyz
watch的使用场景:
(1)统一资源配置
针对节点可以设置相关读写等权限,目的为了保障数据安全性;
权限permissions可以指定不同的权限范围以及角色;
命令:
getAcl:获取某个节点的acl权限信息
setAcl:设置某个节点的acl权限信息
addAuth:输入认证授权信息,注册时输入明文密码(登陆)但是在ZK的系统,密码是以加密的形式存在的。
ACL的构成:
zk的acl通过[scheme:id:permissions]来构成权限列表
scheme:代表采用的某种权限机制
id:代表允许访问的用户
permissions:权限组合字符串
world:world下只有一个id,即只有一个用户,也就是anyone,那么组合的写法就是world:anyone:[permissions]
auth:代表认证登陆,需要注册用户权限就可以,形式为auth:user:password:[permissions]
digest:需要对密码加密才能访问,组合形式为digest:username:BASE64(SHA1(password)):[permissions]
简而言之:auth与digest的却别就是,前者是明文,后者是密文。
setAcl /path auth:lee:lee:cdrwa 与setAcl /path digest:lee:lee:BASE64(SHA1(password))cdrwa是等价的,在通过addauth digest lee:lee 后都能操作指定节点的权限。
ip:当设置为ip指定的ip地址,此时限制ip进行访问,
super:代表超级管理员,拥有所有权限
persmissions:权限字符串缩写 1.create:创建子节点 2.read获取节点或者子节点 3.write:设置节点数据 4.delete:删除子节点5.admin:设置权限
ACL命令
(1)world:anyone:cdwra
(2)auth:user:password:[permissions与digest:username:BASE64(SHA1(password)):[permissions]
imooc:+gvPtpWo4822W8eDoMEuE/3/jGQ=
3.ip 192.168.1.1:cdrwa
4.super
(1)修改zkServer.sh 增加super管理员
(2)重启zkServer.sh
ACL的常用使用场景:
开发/测试环境分离,开发者无权操作测试库的节点,只能看;
生产环境上控制指定ip的服务可以访问相关节点,防止混乱。
(1)zk可以通过自身提供的简写命令来和服务器进行交互
(2)需要使用到nc命令,安装:yum installnc
(3)echo [commond] | nc [ip] [port]
[stat] 查看zk的状态信息,以及是否mode单例还是集群
[ruok]查看当前zkServer是否启动,返回imok
[dump]列出未经处理的会话和临时节点
[conf] 查看服务器配置
cons:展示连接到服务器的客户端信息
[envi]:环境变量
【mntr】:监控zk的健康信息
【wchs】展示watch的信息
[wchc]与[wchp] session与watch及path与watch信息
注意:这两个命令默认禁止执行