news 2026/5/5 19:32:37

Zookeepers深入理解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zookeepers深入理解

 Zookeeper介绍

        ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

        ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理,从而用来维护和监控存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等功能。

        Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

 Zookeeper快速开始

2.1 Zookeeper安装

下载地址:https://zookeepers.apache.org/releases.html
运行环境:jdk8

1)修改配置文件
解压安装包后进入conf目录,复制zoo_sample.cfg,修改为zoo.cfg

cp zoo_sample.cfgzoo.cfg

修改 zoo.cfg 配置文件,将 dataDir=/tmp/zookeeper 修改为指定的data目录
zoo.cfg中参数含义:

2)启动zookeeper server

#可以通过bin/zkServer.sh来查看都支持哪些参数
#默认加载配置路径conf/zoo.cfg
bin/zkServer.sh start
bin/zkServer.sh start conf/my_zoo.cfg
#查看zookeeper状态
bin/zkServer.sh status

启动zookeeper client连接Zookeeper server
bin/zkCli.sh
#连接远程的zookeeper server
bin/zkCli.sh -server ip:port

2.2 客户端命令行操作

常见cli命令https://zookeeper.apache.org/doc/r3.8.0/zookeeperCLI.html

命令基本语法功能描述
help显示所有操作命令
ls [-s] [-w] [-R] path使用 ls 命令来查看当前 znode 的子节点 [可监
听]
-w: 监听子节点变化
-s: 节点状态信息(时间戳、版本号、数据大小
等)
-R: 表示递归的获取
create [-s] [-e] [-c] [-t ttl] path [data] [acl]创建节点
-s : 创建有序节点。
-e : 创建临时节点。
-c : 创建一个容器节点。
t ttl] : 创建一个TTL节点, -t 时间(单位毫
秒)。
data:节点的数据,可选,如果不使用时,节点
数据就为null。
acl:访问控制
get [-s] [-w] path获取节点数据信息
-s: 节点状态信息(时间戳、版本号、数据大小
等)
-w: 监听节点变化
set [-s] [-v version] path data设置节点数据
-s:表示节点为顺序节点
-v: 指定版本号
getAcl [-s] path获取节点的访问控制信息
-s: 节点状态信息(时间戳、版本号、数据大小
等)
setAcl [-s] [-v version] [-R] path acl设置节点的访问控制列表
-s:节点状态信息(时间戳、版本号、数据大小
等)
-v:指定版本号
-R:递归的设置
stat [-w] path查看节点状态信息
delete [-v version] path删除某一节点,只能删除无子节点的节点。
-v: 表示节点版本号
deleteall path递归的删除某一节点及其子节点
setquota -n|-b val path对节点增加限制
n:表示子节点的最大个数
b:数据值的最大长度,-1表示无限制

2.3 GUI工具

Zookeeper图形化工具:ZooInspector
Zookeeper图形化工具:开源的prettyZoo
Zookeeper图形化工具:收费的ZooKeeperAssistant

3. ZooKeeper数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。

ZooKeeper的数据模型是层次模型,层次模型常见于文件系统。层次模型和key-value模型是两种主流的数据模型。ZooKeeper使用文件系统模型主要基于以下两点考虑:

        1.文件系统的树形结构便于表达数据之间的层次关系
        2.文件系统的树形结构便于为不同的应用分配独立的命名空间( namespace 

ZooKeeper的层次模型称作Data Tree,Data Tree的每个节点叫作Znode。不同于文件系统,每个节点都可以保存数据,每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识,每个节点都有一个版本(version),版本从0开始计数。

3.1 节点分类

zookeeper存在几种不同的节点类型,他们具有不同的生命周期

类型生命周期创建示例
持久节点 (persistent node)一直存在,一直存储在
ZooKeeper 服务器上,即使创
建该节点的客户端与服务端的会
话关闭了,该节点依然不会被删
create /locks
临时节点 (ephemeral node)当创建该临时节点的客户端会话
因超时或发生异常而关闭时,该
节点也相应在 ZooKeeper 服务
器上被删除。
create -e /locks/DBLock
有序节点 (sequential node)并不算是一种单独种类的节点,
而是在之前提到的持久节点和临
时节点特性的基础上,增加了一个节点有序的性质。在我们创建
有序节点的时候会自动使用一个
单调递增的数字作为后缀
create -e -s /jobs/job
(有序临时节点)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 19:27:14

NVIDIA Profile Inspector完整指南:5个简单步骤释放显卡隐藏性能

NVIDIA Profile Inspector完整指南:5个简单步骤释放显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款强大的开源工具,它能让你深度调…

作者头像 李华
网站建设 2026/5/5 19:25:38

完全指南:5步高效配置Minecraft服务器安全登录插件

完全指南:5步高效配置Minecraft服务器安全登录插件 【免费下载链接】CatSeedLogin 项目地址: https://gitcode.com/gh_mirrors/ca/CatSeedLogin 在Minecraft服务器管理中,安全登录插件是保护玩家账号、防止恶意注册的关键防线。CatSeedLogin作为…

作者头像 李华
网站建设 2026/5/5 19:16:26

Tiny11Builder终极指南:轻松打造精简高效的Windows 11系统

Tiny11Builder终极指南:轻松打造精简高效的Windows 11系统 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否曾为Windows 11的臃肿体积和缓慢启动…

作者头像 李华