备案密码如何登录添加网站,微信红包封面分销平台,重庆网站推广机构,自己怎么做网上注册免费的网站文章目录 ZooKeeper 实战(二) 命令行操作篇1. 服务端命令1.1. 服务启动1.2. 查看服务1.3. 重启服务1.4. 停止服务 2. 客户端命令2.1. 启动客户端2.2. 查看节点信息查看根节点详情 ls -s /添加一个watch监视器 ls -w /列举出节点的级联节点 ls -R / 2.3. 查看节点状态2.4. 创建节… 文章目录 ZooKeeper 实战(二) 命令行操作篇1. 服务端命令1.1. 服务启动1.2. 查看服务1.3. 重启服务1.4. 停止服务 2. 客户端命令2.1. 启动客户端2.2. 查看节点信息查看根节点详情 ls -s /添加一个watch监视器 ls -w /列举出节点的级联节点 ls -R / 2.3. 查看节点状态2.4. 创建节点创建有序节点create -s /test/name创建临时节点create -e /test/temporary创建TTL节点create -t 10000 /test/temporary创建带数据的持久节点create /test/data 测试 2.5. 修改节点内容更新节点数据并显示节点状态信息set -s /test/data new value指定数据版本号set -s -v 1 /test/data new new value 2.6. 查看节点内容2.7. 删除节点2.8. 级联删除节点删除包含子节点的节点2.9. 关闭连接2.10. 建立连接2.11. 操作记录2.12. 其他操作命令 3. Watcher事件监听器3.1. 一次性监听3.2. 永久监听添加永久监听器PERSISTENTPERSISTENT_RECURSIVE 移除监听器 4. ACL权限控制4.1. 添加权限4.2. 设置权限4.3. 查看权限 ZooKeeper 实战(二) 命令行操作篇
1. 服务端命令
在学习以下执行命令前请先创建一个单机版的zookeeper实例详细过程参考上一篇博客。cd进入zookeeper安装包解压文件夹的bin目录下。在博主电脑上执行cd /Users/admin/zk/standalone/bin。 1.1. 服务启动
./zkServer.sh start1.2. 查看服务
./zkServer.sh status1.3. 重启服务
./zkServer.sh restart1.4. 停止服务
./zkServer.sh stop2. 客户端命令
2.1. 启动客户端
# 如果是本地执行可以省略 -server ip:port. 直接./zkCli.sh
./zkCli.sh -server ip:port
#./zkCli.sh2.2. 查看节点信息
ls [-s] [-w] [-R] path
# 参数说明
# -s显示节点详情包括状态信息
# -w添加watch监视器节点数据变更时会通知客户端通知是一次性的注意和get中监听器的区别。
# -R列举出节点的级联节点
# path显示某目录下节点/文件查看根节点详情 ls -s / 名称描述cZxid节点创建时的zxidctime节点创建时间mZxid节点最近一次更新时的zxidmtime节点最近一次更新的时间pZxid操作当前节点的子节点列表的事物ID(这种操作包含增加子节点删除子节点)cversion子节点数据更新次数dataVersion本节点数据更新次数aclVersion节点ACL(授权信息)的更新次数ephemeralOwner如果该节点为临时节点ephemeralOwner值表示与该节点绑定的session id。如果该节点不是临时节点ephemeralOwner值为0dataLength节点数据长度numChildren子节点个数
添加一个watch监视器 ls -w / 列举出节点的级联节点 ls -R / 2.3. 查看节点状态
stat [-w] path
# 参数说明
# -w添加watch监视器2.4. 创建节点
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
# 参数说明
# -s有序节点
# -e临时节点不加此参数表示默认持久节点
# -c容器节点
# -t过期时间类似于redis的expire设置过期单位毫秒
# [data]节点的数据可选如果不使用时节点数据就为null
# [acl]权限相关创建有序节点create -s /test/name 创建临时节点create -e /test/temporary 创建TTL节点create -t 10000 /test/temporary 默认禁用需要在zoo.cfg中添加 extendedTypesEnabledtrue 开启。 注意ttl不能用于临时节点 如果出现 KeeperErrorCode Unimplemented for /..... 可能表示禁用 创建带数据的持久节点create /test/data 测试 2.5. 修改节点内容
set [-s] [-v version] path data
# 参数说明
# -s更新节点数据并显示节点状态信息
# -v指定数据版本号如果指定的数据版本号和数据当前版本号不一致则更新失败
# data更新的数据内容更新节点数据并显示节点状态信息set -s /test/data new value 指定数据版本号set -s -v 1 /test/data new new value 2.6. 查看节点内容 get [-s] [-w] path# 参数说明# -s查看节点数据以及节点状态信息# -w添加watch监视器节点数据变更时会通知客户端通知是一次性的。ls -w是针对节点目录的变化监听get -w是针对节点中数据的变化监听2.7. 删除节点
delete [-v version] path
# 参数说明
# -v指定数据版本号如果指定的数据版本号和数据当前版本号不一致则删除失败注意此方法只能删除不包含子节点的节点 2.8. 级联删除节点删除包含子节点的节点
deleteall path [-b batch size]
# 参数说明
# -b分批删除
# batch size每批删除数量2.9. 关闭连接
close2.10. 建立连接
connect host:port2.11. 操作记录
history
# 显示最近的11条操作记录2.12. 其他操作命令
# 退出客户端
quit# 获取版本信息
version# 显示当前操作用户和ip
whoami# 强制同步节点这需要在ZooKeeper集群中使用如果对节点数据的实时性要求很高可以使用该命令。
sync path# 获取指定节点下的子孙节点数量(不只是直接子节点也包含间接子节点)
getAllChildrenNumber3. Watcher事件监听器
Watcher是ZooKeeper的重要功能。ZooKeeper允许用户在指定Znode注册 Watcher绑定监听事件当特定事件触发时节点数据变更、节点删除、子节点状态变更等事件ZooKeeper服务端会将事件通知到注册过该事件Watcher的客户端该机制是ZooKeeper实现分布式协调服务的重要特性通过这个事件机制可以基于ZooKeeper实现分布式锁、集群管理等功能。 Watcher特性比如当节点数据发生变化的时候ZooKeeper会产生一个Watcher事件并且会发送到客户端客户端收到监听的节点事件后就可以进行相应的业务处理了(可以实现发布与订阅)。ZooKeeper的Watcher机制可以分为三个过程客户端注册Watcher、服务端处理Watcher和客户端回调。 3.1. 一次性监听
在上一节客户端命令中会看到 -w 参数通过这个参数指定的都是一次性监听器不会重复触发。
ls -w 监听节点变化节点或者子节点发生改变时触发 get -w监听节点数据变化子节点的数据变化不会触发。 3.2. 永久监听
Zookeeper 3.6.0版本之后客户端可以在节点上创建永久监听永久监听在被触发后不会被删除。
添加永久监听器
addWatch [-m mode] path
# 参数说明
# -m监听模式
# mode[PERSISTENT, PERSISTENT_RECURSIVE]
# PERSISTENT - 表示该节点的数据变化以及子节点的变化会触发相应事件子节点的数据变化不会触发。
# PERSISTENT_RECURSIVE - 表示该节点的数据变化以及所有子孙节点的目录或者数据变化都会触发相应事件。PERSISTENT
addWatch -m PERSISTENT /namePERSISTENT_RECURSIVE
addWatch -m PERSISTENT_RECURSIVE /fi移除监听器 removewatches path [-c|-d|-a] [-l]# 参数说明# -c表示取消节点变化类型监听器(ls -w)# -d表示取消数据更新类型监听器(get -w)# -a表示取消对所有子节点的监听# -l表示显示当前节点上的所有监听4. ACL权限控制
在介绍命令之前需要了解以下知识
ZooKeeper 采用 ACLAccess Control Lists策略来进行权限控制。ACL权限控制使用 scheme:id:permission来标识主要涵盖3个方面验证模式(scheme)具体内容(Id)权限控制(perms)
验证模式Scheme
world开放模式world表示任意客户端都可以访问默认设置。auth只有在会话中通过了认证才可以访问代表已经认证通过的用户cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户。digest与auth类似区别在于auth用明文密码而digest用SHA1base64加密后的密码通过addauth命令实际场景中digest更常见。ip限定客户端IP防问。
具体内容(Id)
id表示 用户名:密码。不同的模式有不同的表达方式。如下所示是整个acl表达式的形式除去验证模式和权限控制剩下的也就是中间内容表示id。
worldword:anyone:[permissions]authauth:user:password:[permissions]digestdigest:user:BASE64(SHA1(password)):[permissons]ipip:127.0.0.1:[permissions]
权限控制Permissions
ZooKeeper 定义了如下5种权限。 CREATE: 创建子节点的权限。 READ: 获取节点数据和子节点列表的权限。 WRITE更新节点数据的权限。 DELETE: 删除子节点的权限。 ADMIN: 设置节点ACL的权限。 注意CREATE 和 DELETE 都是针对子节点的权限控制。 4.1. 添加权限
addauth scheme auth
# 参数说明
# scheme格式为digest username:password其中digest是授权方式
# auth分配权限crwda。如果不写时表示创建用户可以通过setAcl命令来设置权限4.2. 设置权限
setAcl [-s] [-v version] [-R] path acl
# 参数说明
# -s查看节点数据以及节点状态信息
# -v指定数据版本号
# -R递归遍历节点的子节点列举出节点的级联节点4.3. 查看权限
getAcl [-s] path
# 参数详解
# -s查看节点数据以及节点状态信息