文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源:
高并发 必读 的精彩博文 | |
---|---|
nacos 实战(史上最全) | sentinel (史上最全+入门教程) |
Zookeeper 分布式锁 (图解+秒懂+史上最全) | Webflux(史上最全) |
SpringCloud gateway (史上最全) | TCP/IP(图解+秒懂+史上最全) |
10分钟看懂, Java NIO 底层原理 | Feign原理 (图解) |
更多精彩博文 … | 请参见【 疯狂创客圈 高并发 总目录 】 |
精心梳理、吐血推荐、史上最强、建议收藏 | 阿里、京东、美团、头条… 随意挑、横着走!!! |
---|---|
1.Java算法面试题(史上最强、持续更新、吐血推荐) | 2.Java基础面试题(史上最全、持续更新、吐血推荐) |
3.JVM面试题(史上最强、持续更新、吐血推荐) | 4、架构设计面试题 (史上最全、持续更新、吐血推荐) |
5、Spring面试题 专题 | 6、SpringMVC面试题 专题 |
7.SpringBoot - 面试题(史上最强、持续更新) | 8、Tomcat面试题 专题部分 |
9.网络协议面试题(史上最全、持续更新、吐血推荐) | 10、TCP/IP协议(图解+秒懂+史上最全) |
11.JUC并发包与容器 - 面试题(史上最强、持续更新) | 12、设计模式面试题 (史上最全、持续更新、吐血推荐) |
13.死锁面试题(史上最强、持续更新) | 15.Zookeeper 分布式锁 (图解+秒懂+史上最全) |
14、Redis 面试题 - 收藏版(史上最强、持续更新) | 16、Zookeeper 面试题(史上最强、持续更新) |
17、分布式事务面试题 (史上最全、持续更新、吐血推荐) | 18、一致性协议 (史上最全) |
19、Zab协议 (史上最全) | 20、Paxos 图解 (秒懂) |
21、raft 图解 (秒懂) | 26、消息队列、RabbitMQ、Kafka、RocketMQ面试题 (史上最全、持续更新) |
22.Linux面试题(史上最全、持续更新、吐血推荐) | 23、Mysql 面试题(史上最强、持续更新) |
24、SpringCloud 面试题 - 收藏版(史上最强、持续更新) | 25、Netty 面试题 (史上最强、持续更新) |
27、内存泄漏 内存溢出(史上最全) | 28、JVM 内存溢出 实战 (史上最全) |
本文介绍 ZooKeeper 客户端,包含两种:
断断续续尝试过不同的 ZooKeeper GUI 客户端,用着都不是很顺手。
闲逛 GitHub 的时候,无意中发现了 PrettyZoo 项目,一个基于 Apache Curator + JavaFX 实现的 ZooKeeper GUI 客户端。
简单上手了下,好看又好用。准备推荐给 ? 芳~
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOIxegrK-1617422250007)(https://ask.qcloudimg.com/http-save/yehe-1305760/060gad0x06.png?imageView2/2/w/1620)]
界面演示
PrettyZoo 提供了操作系统 windows 和 macOS 的客户端,可访问 https://github.com/vran-dev/PrettyZoo/releases 地址下载。下载完成,点击安装即可。
友情提示:macOS 客户端如果提示 “Catalina xxx.app已损坏,无法打开,你应该将它移到废纸篓解决方法”,胖友可以阅读 https://www.macwk.com/article/mac-catalina-1015-file-damage 文章解决。
PrettyZoo 的使用非常简单,本小节主要提供界面的演示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EpH5fdsR-1617422250009)(https://ask.qcloudimg.com/http-save/yehe-1305760/jmli1oqhur.gif)]
连接 ZooKeeper Server
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2RtKZwK-1617422250010)(https://ask.qcloudimg.com/http-save/yehe-1305760/242hctrq7d.gif)]
搜索 ZooKeeper 节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkMRI6sH-1617422250012)(https://ask.qcloudimg.com/http-save/yehe-1305760/lr8awg2icw.gif)]
添加 ZooKeeper 节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIzbb7SW-1617422250013)(https://ask.qcloudimg.com/http-save/yehe-1305760/tklwwvjfag.gif)]
删除 ZooKeeper 节点
目前使用的是 v0.3.1
版本,删除暂时没有二次确认功能,所以操作一定要小心。
想要用zkClient链接zookeeper,首先执行如下命令,连接到zookeeper server
./zkCli.sh -server localhost:2181
help命令用于查询客服端所支持的所用的命令,执行help,输入如下:
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
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
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
连接zk服务端,与close命令配合使用可以连接或者断开zk服务端
connect 127.0.0.1:2181
close命令用于关闭与服务端的链接
get命令用于获取节点的信息,注意节点的路径必须是以/开头的绝对路径。如get /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x1469
cversion = 3
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 4
其中:
cZxid:节点创建时的zxid
ctime:节点创建时间
mZxid:节点最近一次更新时的zxid
mtime:节点最近一次更新的时间
cversion:子节点数据更新次数
dataVersion:本节点数据更新次数
aclVersion:节点ACL(授权信息)的更新次数
ephemeralOwner:如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是临时节点,ephemeralOwner值为0
dataLength:节点数据长度,本例中为hello world的长度
numChildren:子节点个数
stat命令用于查看节点的状态信息,如stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x1469
cversion = 3
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 4
该命令的结果参数说明同get命令
set命令用于设置节点的数据,如:
set /usergrid hellUsergrid
ls命令用于获取路径下的节点信息,注意路径为绝对路径,如:ls /storm
[assignments, storms, errors, supervisors, workerbeats]
ls2命令是ls命令的增强版,比ls命令多输出本节点信息,如:ls2 /storm
[assignments, storms, errors, supervisors, workerbeats]
cZxid = 0x1469
ctime = Tue Nov 14 11:32:09 CST 2017
mZxid = 0x1469
mtime = Tue Nov 14 11:32:09 CST 2017
pZxid = 0x1470
cversion = 5
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 5
listquota命令用于显示配额,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits
quota for /storm does not exist.
setquota命令用于设置节点个数以及数据长度的配额,如:
`setquota –n ``4` `/zookeeper/node 设置/zookeeper/node子节点个数最大为``4``setquota –b ``100` `/zookeeper/node 设置/zookeeper/node节点长度最大为``100`
delquota命令用于删除配额,-n为子节点个数,-b为节点数据长度,如:delquota –n 2
history用于列出最近的命令历史,可以和redo配合使用。如history
12 - get /usergrid
13 - help
14 - ls /
15 - ls /storm
16 - ls2 /storm
17 - help
18 - listquota /storm
19 - listquota /zookeeper
20 - help
21 - history
22 - history
redo命令用于再次执行某个命令,使用方式为redo cmdid 如 redo 20
常与history配合使用
create命令用于创建节点,其中-s为顺序充点,-e临时节点
create /zookeeper/node1"test_create" world:anyone:fdsfds
delete命令用于删除节点,如delete /nodeDelete
addauth命令用于节点认证,使用方式:如addauth digest username:password
setAcl命令用于设置节点Acl
Acl由三部分构成:1为scheme,2为user,3为permission,一般情况下表示为schemepermissions
获取节点的Acl,如getAcl /node1
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)
CREATE©: 创建权限,可以在在当前node下创建child node
DELETE(d): 删除权限,可以删除当前的node
READ®: 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
WRITE(w): 写权限,可以向当前node写数据
ADMIN(a): 管理权限,可以设置当前node的permission
sync命令用于强制同步,由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作。
printWatchers命令用于设置和显示监视状态,值为on或则off
退出客户端