ZooKeeper学习专栏(四):单机模式部署与基础操作详解

文章目录

  • 前言
  • 一、单机模式部署
    • 架构图
    • 部署流程:
  • 二、zkCli.sh命令行工具基础操作
  • 三、ACL权限控制实践
  • 学习资源


前言

本文是Zookeeper学习系列的第四篇,将详细讲解Zookeeper的单机模式部署过程以及基础命令行操作,包括节点管理、Watcher机制和ACL权限控制。


一、单机模式部署

架构图

Zookeeper单机模式架构
架构图说明:

  1. 客户端连接(蓝色部分)
    • 客户端应用:使用Zookeeper的应用程序
    • zkCli.sh:官方命令行工具
    • SDK:各种语言客户端库
    • 均通过TCP协议连接到Zookeeper服务端(默认端口2181)
  2. Zookeeper服务端(绿色部分)
    • 请求处理器:处理客户端请求的组件
    • 内存数据库:存储所有ZNode节点数据(DataTree)
    • 核心工作流程
客户端请求 → 请求处理器 → 更新内存数据库 → 写入事务日志
  1. 本地存储(紫色部分)
    • 事务日志:所有写操作的顺序记录(保证持久性)
    • 快照文件:内存数据库的定期序列化(加速恢复)
    • 配置文件:zoo.cfg中的核心配置项:
dataDir=/tmp/zookeeper/data  # 数据存储目录
clientPort=2181              # 客户端连接端口

部署流程:

1. 下载Zookeeper发行版
首先访问Apache Zookeeper官网下载最新稳定版。以3.8.0版本为例:

# 下载发行版
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz# 解压文件
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz# 进入目录
cd apache-zookeeper-3.8.0-bin

2. 修改基础配置文件
Zookeeper的配置文件位于conf/zoo_sample.cfg,我们需要复制并修改它:

cp conf/zoo_sample.cfg conf/zoo.cfg

编辑conf/zoo.cfg文件,重点关注以下两个参数:

# 数据存储目录(需要手动创建)
dataDir=/tmp/zookeeper/data# 客户端连接端口
clientPort=2181# 其他保持默认配置
tickTime=2000
initLimit=5
syncLimit=2

创建数据目录:

mkdir -p /tmp/zookeeper/data

3. 启动服务端和客户端
启动Zookeeper服务:

# 启动服务端
bin/zkServer.sh start# 查看服务状态
bin/zkServer.sh status

启动客户端连接:

bin/zkCli.sh -server 127.0.0.1:2181

二、zkCli.sh命令行工具基础操作

1. 基本节点操作
在客户端命令行中执行以下操作:

# 创建持久节点
[zk: localhost:2181(CONNECTED) 0] create /first_node "Hello Zookeeper"
Created /first_node# 获取节点数据
[zk: localhost:2181(CONNECTED) 1] get /first_node
Hello Zookeeper# 修改节点数据
[zk: localhost:2181(CONNECTED) 2] set /first_node "Updated data"# 列出节点
[zk: localhost:2181(CONNECTED) 3] ls /
[first_node, zookeeper]# 删除节点(只能删除无子节点的节点)
[zk: localhost:2181(CONNECTED) 4] delete /first_node

2. 节点类型实验
Zookeeper支持多种节点类型:

# 创建临时节点(会话结束自动删除)
[zk: localhost:2181(CONNECTED) 5] create -e /ephemeral_node "Temp data"# 创建顺序节点(自动追加序号)
[zk: localhost:2181(CONNECTED) 6] create -s /sequential_node "Seq data"
Created /sequential_node0000000001# 创建临时顺序节点(会话结束自动删除)
[zk: localhost:2181(CONNECTED) 7] create -e -s /ephemeral_seq_node "Both"
Created /ephemeral_seq_node0000000002

3. Watcher机制实践
Watcher是Zookeeper的核心特性,用于监听节点变化:

# 在会话1中注册监听
[zk: localhost:2181(CONNECTED) 8] create /watch_node "Initial"
[zk: localhost:2181(CONNECTED) 9] get -w /watch_node# 在会话2中修改节点
[zk: localhost:2181(CONNECTED) 0] set /watch_node "Changed"# 会话1将收到通知:
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/watch_node

同样可以监听子节点变化:

# 注册子节点监听
ls -w /parent_node# 当创建/删除子节点时会收到通知

4. 理解stat命令
stat命令提供节点的元数据信息:

[zk: localhost:2181(CONNECTED) 10] create /stat_demo "data"
[zk: localhost:2181(CONNECTED) 11] stat /stat_democZxid = 0x2f              # 创建事务ID
ctime = Mon Jul 21 15:30:00 CST 2025  # 创建时间
mZxid = 0x2f              # 最后修改事务ID
mtime = Mon Jul 21 15:30:00 CST 2025  # 最后修改时间
pZxid = 0x2f              # 最后子节点变更事务ID
cversion = 0              # 子节点版本号
dataVersion = 0           # 数据版本号(每次修改+1)
aclVersion = 0            # ACL版本号
ephemeralOwner = 0x0      # 临时节点所有者(0表示持久节点)
dataLength = 4            # 数据长度
numChildren = 0           # 子节点数量

三、ACL权限控制实践

Zookeeper通过ACL(Access Control Lists)实现节点权限控制:

# 1. 创建带ACL的节点(world:anyone只有读权限)
create /protected_node "sensitive" world:anyone:r# 2. 尝试修改(将失败)
set /protected_node "new data"
Authentication is not valid : /protected_node# 3. 添加认证信息
addauth digest user1:password1# 4. 设置ACL(digest模式)
setAcl /protected_node digest:user1:password1:crwda# 5. 现在可以操作节点了
set /protected_node "updated data"# 6. 查看ACL
getAcl /protected_node

ACL权限说明:

  • c:CREATE(创建子节点)
  • r:READ(读取节点数据)
  • w:WRITE(修改节点数据)
  • -d:DELETE(删除子节点)
  • a:ADMIN(设置ACL)

学习资源

  • Zookeeper官方文档
  • Zookeeper ACL详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92328.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态登录界面

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户登录</title><st…

Three.js 全景图(Equirectangular Texture)教程:从加载到球面映射

全景图(Equirectangular Texture)是一种特殊的 2D 图像,能通过数学转换模拟 360 环绕视角,常用于创建沉浸式环境(如虚拟全景、天空盒替代方案)。本文将通过完整示例,带你掌握 Three.js 中全景图的加载、映射原理与实际应用。 什么是全景图(Equirectangular Texture)?…

Rocky Linux 9 快速安装 Node.js

Rocky Linux 9 快速安装 Node.js 大家好&#xff0c;我是星哥&#xff01;今天给大家带来 Rocky Linux 9 环境下 Node.js 的安装教程。 本文将详细介绍两种安装方法&#xff0c;帮你快速搭建稳定的 Node.js 环境。 Node.js 是一个非常流行的 JavaScript 运行时环境&#xff…

.NET依赖注入IOC你了解吗?

IOC在Web API 中是经常使用的&#xff0c;但是在一些WPF项目并不是经常使用或者被人熟知的&#xff0c;我把相关依赖注入的内容又做了一次学习和整理什么是依赖注入&#xff1f; 依赖注入是一种设计模式和软件设计原则&#xff0c;用于实现 控制反转。它的核心思想是&#xff1…

Python----大模型(基于Fastapi+streamlit的机器人对话)

一、准备工作 1.1、魔搭社区下载大模型 通义千问2.5-7B-Instruct 模型库 from modelscope.hub.snapshot_download import snapshot_download llm_model_dir snapshot_download(Qwen/Qwen2.5-7B-Instruct,cache_dirmodels) 1.2、启动vllm大模型 python -m vllm.entrypoint…

前端面试专栏-工程化:29.微前端架构设计与实践

&#x1f525; 欢迎来到前端面试通关指南专栏&#xff01;从js精讲到框架到实战&#xff0c;渐进系统化学习&#xff0c;坚持解锁新技能&#xff0c;祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 微前端架构设计与实践 一、微前端核心概念与价值 …

Spring Boot音乐服务器项目-上传音乐模块

项目结构图 相较于上次新增集中在这些地方&#xff1a; &#x1f680; 上传音乐的核心流程 前端投递&#xff1a;用户填写歌手名 选择MP3文件 后端接收&#xff1a;/music/upload 接口化身音乐快递员 安全验证&#xff1a;先查用户是否“持证上岗”&#xff08;登录态&#…

2025年远程桌面软件深度评测:ToDesk、向日葵、TeamViewer全方位对比分析

随着远程办公和数字化协作的深入发展&#xff0c;远程桌面软件已经成为个人用户和企业的必备工具。在2025年的今天&#xff0c;远程控制软件市场呈现出百花齐放的态势&#xff0c;其中ToDesk、向日葵和TeamViewer作为市场上的三大主流选择&#xff0c;各自在技术创新、性能优化…

深度学习-全连接神经网络2

六、反向传播算法 反向传播&#xff08;Back Propagation&#xff0c;简称BP&#xff09;算法是用于训练神经网络的核心算法之一&#xff0c;它通过计算损失函数&#xff08;如均方误差或交叉熵&#xff09;相对于每个权重参数的梯度&#xff0c;来优化神经网络的权重。 1、前…

C语言的历史

C 语言是一种 通用的、过程式的编程语言&#xff0c;由 丹尼斯里奇&#xff08;Dennis Ritchie&#xff09; 在 1972 年于贝尔实验室开发。它以 高效、灵活、贴近硬件 而著称&#xff0c;广泛应用于系统软件、嵌入式系统、驱动程序、游戏引擎、数据库系统等底层开发领域。 C语…

jupyter使用

启动win rcmdjupyter notebook创建python文件

linux 环境服务发生文件句柄泄漏导致服务不可用

问题描述&#xff1a;服务调用远程rest接口 报错&#xff0c;发生too many open files 异常&#xff0c;系统句柄资源耗尽&#xff0c;导致服务不可用。排查经过&#xff1a;1、针对报错代码进行本地构建&#xff0c;构造异常&#xff0c;并进行压测。问题未复现2、经过讨论分析…

手机录制视频时,硬编码和软编码哪个质量高?(硬件编码、软件编码)

文章目录**1. 画质对比**- **软编码**&#xff1a;- **硬编码**&#xff1a;**2. 性能与功耗**- **软编码**&#xff1a;- **硬编码**&#xff1a;**3. 实际应用中的权衡****4. 现代手机的折中方案****5. 如何选择&#xff1f;****总结**在手机录制视频时&#xff0c; 软编码的…

IPv4与IPv6双栈协议:网络过渡的关键技术

为什么需要IPv4与IPv6共存&#xff1f; 在网络技术的世界中&#xff0c;兼容性问题始终是最大的挑战之一。IPv4和IPv6之间存在根本性的不兼容性&#xff0c;这意味着使用不同协议的设备无法直接通信。这种情况就像是两个人试图用完全不同的语言进行对话一样。 目前的网络现状…

【牛客刷题】数字变换

一、题目描述 给出两个数字a,ba,ba,b,aaa每次可以乘上一个大于1的正整数得到新的aa

MySQL 学习一 存储结构和log

1.InnoDB逻辑存储结构 表空间->段->区->页->行->数据表空间&#xff1a;覆盖了所有的数据和索引&#xff0c;系统表在系统表空间&#xff0c;还有默认表空间等 段&#xff1a;多个段组成表空间 区&#xff1a;多个区组成段&#xff0c;一般每个区的大小通常是1M…

TCP day39

六&#xff1a;C/S和B/S端 C/S&#xff1a;Client, server B/S&#xff1a;Browser server 1.cs 专用客户端 bs 通用客户端 2.协议不同 Cs 标准协议&#xff0c;自定义协议 Bs http 超文本传输 3.cs 功能复杂 bs 功能弱 4.bs 资源都在ser&#xff0c;有ser发送到cli cs 大部分资…

6 种无线传输照片从安卓到 Mac 的方法

将大量照片从安卓设备传输到电脑上&#xff0c;不仅可以备份照片&#xff0c;还能释放设备存储空间。虽然使用 USB 数据线可以在 Windows 电脑上轻松完成传输&#xff0c;但将安卓手机连接到 Mac 并非如此简单。因此&#xff0c;许多用户更倾向于无线传输照片从安卓到 Mac。您可…

在vscode 使用 remote-ssh

vscode安装插件Remote-SSH,直接安装即可 安装完毕之后 在左下角有这个图标 点击之后选择连接到主机然后选择添加新链接之后输入用户名和主机地址 非默认端口使用 -p 端口号之后选择第一个即可如果使用的是密码,直接连接,然后输入密码即可如果使用的密钥,则修改.ssh\config文件中…

RabbitMQ03——面试题

目录 一、mq的作用和使用场景 二、mq的优点 2.1架构设计优势 2.2功能特性优势 2.3性能与可靠性优势 2.4生态系统优势 2.5对比优势 三、mq的缺点 3.1性能与扩展性限制 3.2功能局限性 3.3运维复杂度 3.4与其他消息队列的对比劣势 四、mq相关产品&#xff0c;每种产品…