ZK是什么,提供了什么功能,具体命令
ZooKeeper 是一个的分布式协调服务,通常被用于实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁等功能
ZooKeeper 主要是用来协调服务的,而不是用来存储业务数据的,所以不要放比较大的数据在 znode 上,ZooKeeper 给出的上限是每个结点的数据大小最大是 1M。
场景:
- 分布式锁 : 通过创建唯一节点获得分布式锁,当获得锁的一方执行完相关代码或者是挂掉之后就释放锁。
- 命名服务 :可以通过 ZooKeeper 的顺序节点生成全局唯一 ID
- 数据发布/订阅 :通过 Watcher 机制 可以很方便地实现数据发布/订阅。当你将数据发布到 ZooKeeper 被监听的节点上,其他机器可通过监听 ZooKeeper 上节点的变化来实现配置的动态更新。
结点类型:
- 持久(PERSISTENT)节点 :一旦创建就一直存在即使 ZooKeeper 集群宕机,直到将其删除。
- 临时(EPHEMERAL)节点 :临时节点的生命周期是与 客户端会话(session) 绑定的,会话消失则节点消失 。并且,临时节点只能做叶子节点 ,不能创建子节点。
- 持久顺序(PERSISTENT_SEQUENTIAL)节点 :除了具有持久(PERSISTENT)节点的特性之外, 子节点的名称还具有顺序性。比如
/node1/app0000000001
、/node1/app0000000002
。 - 临时顺序(EPHEMERAL_SEQUENTIAL)节点 :除了具备临时(EPHEMERAL)节点的特性之外,子节点的名称还具有顺序性。
结点属性:
- stat :状态信息
- data : 节点存放的数据的具体内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [zk: 127.0 . 0.1 : 2181 (CONNECTED) 6 ] get /dubbo # 该数据节点关联的数据内容 data1111 -- # 下面是该数据节点的一些状态信息,其实就是 Stat 对象的格式化输出 cZxid = 0x2 --创建时的事务ID ctime = Tue Nov 27 11 : 05 : 34 CST 2018 创建时间 mZxid = 0x2 最后一次更新的事务ID mtime = Tue Nov 27 11 : 05 : 34 CST 2018 最后一次更新的时间 pZxid = 0x3 该节点的子节点列表最后一次修改时的事务 id,只有子节点列表变更才会更新 pZxid,子节点内容变更不会更新 cversion = 1 子节点版本号,当前节点的子节点每次变化时值增加 1 dataVersion = 0 数据节点内容版本号,节点创建时为 0 ,每更新一次节点内容(不管内容有无变化)该版本号的值增加 1 aclVersion = 0 节点的 ACL 版本号,表示该节点 ACL 信息变更次数 ephemeralOwner = 0x0 创建该临时节点的会话的 sessionId;如果当前节点为持久节点,则 ephemeralOwner= 0 dataLength = 0 数据节点内容长度 numChildren = 1 当前节点的子节点个数 |
权限问题:
ZooKeeper 采用 ACL(AccessControlLists)策略来进行权限控制,类似于 UNIX 文件系统的权限控制。
对于 znode 操作的权限,ZooKeeper 提供了以下 5 种:
- CREATE : 能创建子节点
- READ :能获取节点数据和列出其子节点
- WRITE : 能设置/更新节点数据
- DELETE : 能删除子节点
- ADMIN : 能设置节点 ACL 的权限
其中尤其需要注意的是,CREATE 和 DELETE 这两种权限都是针对 子节点 的权限控制。
对于身份认证,提供了以下几种方式:
- world : 默认方式,所有用户都可无条件访问。
- auth :不使用任何 id,代表任何已认证的用户。
- digest :用户名:密码认证方式: username:password 。
- ip : 对指定 ip 进行限制。
具体命令: 因为zk使用的是树形结构存储数据,只有绝对路径,因此需要加 / 以表示文件目录
创建结点: create /node1 “node1” create /node1/node1.1 123 /结点名称 结点内容
修改:set /node1 "set node1"
查看目录结点:ls / get /
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)