前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。
我们前面完成了Zookeeper的安装,实际上的Zookeeper的使用对象或者使用方,是各个应用程序。我们一般情况下不会直接操作Zookeeper的读写,但是我们还是对Zookeeper里面的数据存储到哪里以及是如何存储还是需要有一定的理解。
Znode 是 ZooKeeper 数据模型中的基本数据节点,类似于文件系统中的文件或目录。它以树形结构存储数据,并可以包含子节点。每个 Znode 都有一个唯一的路径,用于标识其在 ZooKeeper 树中的位置,例如 /root/child1
。Zookeeper的存储结构是下面这样的树形结构
这里的/app1和/app1/p_1并没有从属关系。他们的本质是一样的,都是一个普通的Znode节点。
Znode 存储的数据包括:
数据内容:比如配置信息、状态信息等,他并不适合存储大量的的数据,也不适合存储频繁写的数据。
元数据:如版本号、时间戳、访问权限(ACL)等。
ZooKeeper 中的 Znode 主要分为以下几类,每种类型具有不同的生命周期和用途:
特点:一旦创建,将一直存在于 ZooKeeper 中,直到被显式删除。
用途:通常用于存储长期需要保存的数据,如配置信息、服务注册信息等。
示例:/config 节点用于存储系统配置。
特点:与客户端会话绑定,当客户端会话断开时,该节点会被自动删除。
用途:常用于实现分布式锁、临时状态监控等场景。
示例:/lock
节点用于实现分布式锁。
特点:具有持久性,并且在创建时会自动附加一个唯一的序列号。
用途:常用于实现分布式系统的唯一标识或顺序控制。
示例:/task-0000000001
节点用于任务队列。
特点:结合了临时节点和顺序节点的特性,会话断开后节点会被删除,且创建时附加序列号。
用途:适用于需要临时唯一标识的场景,如选主(Leader Election)过程。
示例:/election-0000000001
节点用于选主。
树形结构:Znode 以树状形式组织,每个节点可以有多个子节点。
数据与元数据:除了存储数据内容外,还包含版本号、时间戳等元数据。
权限控制(ACL):每个 Znode 可以设置访问控制列表(ACL),用于限制节点的读写权限。
监听机制(Watcher):客户端可以注册监听器,当 Znode 发生变化(如数据修改、子节点增加或删除)时,监听器会被触发。
4. Znode 的操作
我们日常查看操作是通过Zookeeper给我们的命令行工具进行操作,真实业务场景则是使用API操作。
链接Zookeeper
[root@localhost zookeeper]# ./bin/zkCli.sh
/usr/bin/java
Connecting to localhost:2181
#省略部分内容
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
列出Znode
#从/开始,也可以是具体路径(和Linux目录类似)
ls /
ls /zookeeper
创建Znode
#前面是znode,后面是znode的数据
create /myNode "Hello ZooKeeper" #持久节点
create -e /myTempNode "Temporary Data" #临时节点
create -s /mySeqNode "Sequential Data" #顺序节点
更新Znode
set /myNode "New Data"
删除Znode
delete /myNode
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有