ZooKeeper 实战(二) 命令行操作篇
文章目录
- ZooKeeper 实战(二) 命令行操作篇
- 1. 服务端命令
- 1.1. 服务启动
- 1.2. 查看服务
- 1.3. 重启服务
- 1.4. 停止服务
- 2. 客户端命令
- 2.1. 启动客户端
- 2.2. 查看节点信息
- 查看根节点详情 `ls -s /`
- 添加一个watch监视器 `ls -w /`
- 列举出节点的级联节点 `ls -R /`
- 2.3. 查看节点状态
- 2.4. 创建节点
- 创建有序节点`create -s /test/name`
- 创建临时节点`create -e /test/temporary`
- 创建TTL节点`create -t 10000 /test/temporary`
- 创建带数据的持久节点`create /test/data "测试"`
- 2.5. 修改节点内容
- 更新节点数据并显示节点状态信息`set -s /test/data "new value"`
- 指定数据版本号`set -s -v 1 /test/data "new new value"`
- 2.6. 查看节点内容
- 2.7. 删除节点
- 2.8. 级联删除节点(删除包含子节点的节点)
- 2.9. 关闭连接
- 2.10. 建立连接
- 2.11. 操作记录
- 2.12. 其他操作命令
- 3. Watcher事件监听器
- 3.1. 一次性监听
- 3.2. 永久监听
- 添加永久监听器
- PERSISTENT
- PERSISTENT_RECURSIVE
- 移除监听器
- 4. ACL权限控制
- 4.1. 添加权限
- 4.2. 设置权限
- 4.3. 查看权限
ZooKeeper 实战(二) 命令行操作篇
1. 服务端命令
在学习以下执行命令前,请先创建一个单机版的zookeeper实例,详细过程参考上一篇博客。cd进入zookeeper安装包解压文件夹的bin目录下。在博主电脑上执行cd /Users/admin/zk/standalone/bin。

1.1. 服务启动
./zkServer.sh start

1.2. 查看服务
./zkServer.sh status

1.3. 重启服务
./zkServer.sh restart

1.4. 停止服务
./zkServer.sh stop

2. 客户端命令
2.1. 启动客户端
# 如果是本地执行可以省略 -server ip:port. 直接./zkCli.sh
./zkCli.sh -server ip:port
#./zkCli.sh

2.2. 查看节点信息
ls [-s] [-w] [-R] path
# 参数说明:
# -s:显示节点详情,包括状态信息
# -w:添加watch监视器,节点数据变更时,会通知客户端(通知是一次性的),注意和get中监听器的区别。
# -R:列举出节点的级联节点
# path:显示某目录下节点/文件
查看根节点详情 ls -s /

| 名称 | 描述 |
|---|---|
| cZxid | 节点创建时的zxid |
| ctime | 节点创建时间 |
| mZxid | 节点最近一次更新时的zxid |
| mtime | 节点最近一次更新的时间 |
| pZxid | 操作当前节点的子节点列表的事物ID(这种操作包含增加子节点,删除子节点) |
| cversion | 子节点数据更新次数 |
| dataVersion | 本节点数据更新次数 |
| aclVersion | 节点ACL(授权信息)的更新次数 |
| ephemeralOwner | 如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id。如果该节点不是临时节点,ephemeralOwner值为0 |
| dataLength | 节点数据长度 |
| numChildren | 子节点个数 |
添加一个watch监视器 ls -w /

列举出节点的级联节点 ls -R /

2.3. 查看节点状态
stat [-w] path
# 参数说明
# -w:添加watch监视器

2.4. 创建节点
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
# 参数说明
# -s:有序节点
# -e:临时节点,不加此参数表示默认持久节点
# -c:容器节点
# -t:过期时间,类似于redis的expire设置过期,单位:毫秒
# [data]:节点的数据,可选,如果不使用时,节点数据就为null
# [acl]:权限相关
创建有序节点create -s /test/name

创建临时节点create -e /test/temporary

创建TTL节点create -t 10000 /test/temporary
默认禁用,需要在zoo.cfg中添加 extendedTypesEnabled=true 开启。 注意:ttl不能用于临时节点
如果出现
KeeperErrorCode = Unimplemented for /.....可能表示禁用

创建带数据的持久节点create /test/data "测试"

2.5. 修改节点内容
set [-s] [-v version] path data
# 参数说明
# -s:更新节点数据并显示节点状态信息
# -v:指定数据版本号,如果指定的数据版本号和数据当前版本号不一致,则更新失败
# data:更新的数据内容
更新节点数据并显示节点状态信息set -s /test/data "new value"

指定数据版本号set -s -v 1 /test/data "new new value"

2.6. 查看节点内容
get [-s] [-w] path# 参数说明# -s:查看节点数据以及节点状态信息# -w:添加watch监视器,节点数据变更时,会通知客户端(通知是一次性的)。ls -w是针对节点(目录)的变化监听,get -w是针对节点中数据的变化监听

2.7. 删除节点
delete [-v version] path
# 参数说明
# -v:指定数据版本号,如果指定的数据版本号和数据当前版本号不一致,则删除失败
注意此方法只能删除不包含子节点的节点

2.8. 级联删除节点(删除包含子节点的节点)
deleteall path [-b batch size]
# 参数说明
# -b:分批删除
# batch size:每批删除数量

2.9. 关闭连接
close

2.10. 建立连接
connect host:port

2.11. 操作记录
history
# 显示最近的11条操作记录

2.12. 其他操作命令
# 退出客户端
quit# 获取版本信息
version# 显示当前操作用户和ip
whoami# 强制同步节点,这需要在ZooKeeper集群中使用,如果对节点数据的实时性要求很高,可以使用该命令。
sync path# 获取指定节点下的子孙节点数量(不只是直接子节点,也包含间接子节点)
getAllChildrenNumber
3. Watcher事件监听器
Watcher是ZooKeeper的重要功能。ZooKeeper允许用户在指定Znode注册 Watcher(绑定监听事件),当特定事件触发时(节点数据变更、节点删除、子节点状态变更等事件),ZooKeeper服务端会将事件通知到注册过该事件Watcher的客户端,该机制是ZooKeeper实现分布式协调服务的重要特性,通过这个事件机制,可以基于ZooKeeper实现分布式锁、集群管理等功能。
Watcher特性:比如当节点数据发生变化的时候,ZooKeeper会产生一个Watcher事件,并且会发送到客户端,客户端收到监听的节点事件后,就可以进行相应的业务处理了(可以实现发布与订阅)。ZooKeeper的Watcher机制,可以分为三个过程:客户端注册Watcher、服务端处理Watcher和客户端回调。
3.1. 一次性监听
在上一节,客户端命令中会看到 -w 参数,通过这个参数指定的都是一次性监听器,不会重复触发。
ls -w: 监听节点变化,节点或者子节点发生改变时触发

get -w:监听节点数据变化,子节点的数据变化不会触发。

3.2. 永久监听
Zookeeper 3.6.0版本之后,客户端可以在节点上创建永久监听,永久监听在被触发后不会被删除。
添加永久监听器
addWatch [-m mode] path
# 参数说明
# -m:监听模式
# mode:[PERSISTENT, PERSISTENT_RECURSIVE]
# PERSISTENT - 表示该节点的数据变化以及子节点的变化会触发相应事件,子节点的数据变化不会触发。
# PERSISTENT_RECURSIVE - 表示该节点的数据变化以及所有子孙节点的目录或者数据变化都会触发相应事件。
PERSISTENT
addWatch -m PERSISTENT /name

PERSISTENT_RECURSIVE
addWatch -m PERSISTENT_RECURSIVE /fi

移除监听器
removewatches path [-c|-d|-a] [-l]# 参数说明# -c:表示取消节点变化类型监听器(ls -w)# -d:表示取消数据更新类型监听器(get -w)# -a:表示取消对所有子节点的监听# -l:表示显示当前节点上的所有监听

4. ACL权限控制
在介绍命令之前需要了解以下知识:
ZooKeeper 采用 ACL(Access Control Lists)策略来进行权限控制。ACL权限控制使用 scheme:id:permission来标识,主要涵盖3个方面:验证模式(scheme),具体内容(Id),权限控制(perms)
验证模式(Scheme)
- world:开放模式,world表示任意客户端都可以访问(默认设置)。
- auth:只有在会话中通过了认证才可以访问,代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)。
- digest:与auth类似,区别在于auth用明文密码,而digest用SHA1+base64加密后的密码(通过addauth命令,实际场景中digest更常见)。
- ip:限定客户端IP防问。
具体内容(Id)
id表示 用户名:密码。不同的模式有不同的表达方式。如下所示,是整个acl表达式的形式,除去验证模式和权限控制剩下的,也就是中间内容表示id。
- world:
word:anyone:[permissions] - auth:
auth:user:password:[permissions] - digest:
digest:user:BASE64(SHA1(password)):[permissons] - ip:
ip:127.0.0.1:[permissions]
权限控制(Permissions)
ZooKeeper 定义了如下5种权限。
-
CREATE: 创建子节点的权限。
-
READ: 获取节点数据和子节点列表的权限。
-
WRITE:更新节点数据的权限。
-
DELETE: 删除子节点的权限。
-
ADMIN: 设置节点ACL的权限。
注意:CREATE 和 DELETE 都是针对子节点的权限控制。
4.1. 添加权限
addauth scheme auth
# 参数说明
# scheme:格式为:digest username:password,其中digest是授权方式
# auth:分配权限,crwda。如果不写时表示创建用户,可以通过setAcl命令来设置权限

4.2. 设置权限
setAcl [-s] [-v version] [-R] path acl
# 参数说明
# -s:查看节点数据以及节点状态信息
# -v:指定数据版本号
# -R:递归遍历节点的子节点(列举出节点的级联节点)

4.3. 查看权限
getAcl [-s] path
# 参数详解
# -s:查看节点数据以及节点状态信息

相关文章:
ZooKeeper 实战(二) 命令行操作篇
文章目录 ZooKeeper 实战(二) 命令行操作篇1. 服务端命令1.1. 服务启动1.2. 查看服务1.3. 重启服务1.4. 停止服务 2. 客户端命令2.1. 启动客户端2.2. 查看节点信息查看根节点详情 ls -s /添加一个watch监视器 ls -w /列举出节点的级联节点 ls -R / 2.3. 查看节点状态2.4. 创建节…...
关于在前台应用路由调用子应用
需求 在实际写项目的过程中,关于一些前台的官网首页,会需要在一写特定的路由侠调用子应用的需求,在编写的过程中在公用的方法中,来进行处理,处理思想如下,在特定的.vue文件中, 后端 通过后端…...
Spring学习 Spring事务控制
7.1.事务介绍 7.1.1.什么是事务? 当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不…...
c++一些使用频率较高的库函数
目录 memset() memset()接受三个参数: 注意 swap() reverse() reverse函数接收两个参数: reverse()反转整形向量元素顺序示例 …...
【从零开始学技术】Fiddler 抓取 https 请求大全
1.Fiddler代理浏览器设置 注意浏览器代理区别 Chrome/IE浏览器使用的都是系统代理设置 在chrome浏览器的设置中搜索代理,可以看到 打开IE浏览器,选择设置->Internet选项 Firefox浏览器使用的是单独的一套代理系统 在Firefox的代理设置中,我…...
第二百六十四回
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了SliverPadding组件相关的内容,本章回中将介绍Sliver综合示例.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在前面的章回中介绍了各种Sliver相关的组件:SliverList,SliverGr…...
用Kimi chat识别并整理图片里面的文字
Kimi chat是有OCR功能的,可以识别图片中的文字。 下面这张图片是一本书的注释,里面提到有不少图书,利用Kimi chat就可以轻松完成提取其中图书书名的任务。 先拿一张图片来做实验。Kimichat的回复: 在您提供的文件内容中…...
驾驭未来:从传统运维到智能化运维的转型之路
随着科技的飞速发展,企业的业务需求也在不断变化。为了满足这些需求,企业的IT架构逐渐向云原生、容器化和微服务化演进。作为支撑企业业务发展的运维人员,我们需要紧跟时代步伐,不断提升自己的技能和认知水平。 在2023年全球运维大…...
LabVIEW在旋转机械故障诊断中的随机共振增强应用
在现代工业自动化领域,准确的故障诊断对于保障机械设备的稳定运行至关重要。传统的故障检测方法往往因噪声干扰而难以捕捉到微弱的故障信号。随着LabVIEW在数据处理和系统集成方面的优势日益凸显,其在旋转机械故障诊断中的应用开始发挥重要作用ÿ…...
尚硅谷大数据技术-数据湖Hudi视频教程-笔记02【核心概念(基本概念、数据写、数据读)】
大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品) B站直达:https://www.bilibili.com/video/BV1ue4y1i7na 尚硅谷数据湖Hudi视频教程百度网盘:https://pan.baidu.com/s/1NkPku5Pp-l0gfgoo63hR-Q?pwdyyds阿里…...
鸿蒙(HarmonyOS)应用开发指南
1. 概述 1.1 简介 鸿蒙(即 HarmonyOS ,开发代号 Ark,正式名称为华为终端鸿蒙智能设备操作系统软件)是华为公司自 2012 年以来开发的一款可支持鸿蒙原生应用和兼容 AOSP 应用的分布式操作系统。该系统利用“分布式”技术将手机、电…...
Android 13 辅助屏导航栏不显示问题
问题 在Android 13 上开启辅助屏幕。但是发现辅助屏systemui 导航按 icon没有显示,但是点击对应的区域有作用 分析 可以用 anroid device monitor 工具分析视图 解决 public NavigationBarView(Context context, AttributeSet attrs) {super(context, attrs);…...
【QT】标准对话框
目录 1 概述 2 QFileDialog对话框 1.选择打开一个文件 2.选择打开多个文件 3.选择已有目录 4.选择保存文件名 3 QColorDialog对话框 4 QFontDialog对话框 5 QInputDialog标准输入对话框 1.输入文字 2.输入整数 3.输入…...
微信小程序跳转方式及问题
一、五种跳转方式 1.wx.navigateTo() 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 通常推荐使用 wx.navigateTo进行跳转,以便返回原页面,以提高加载速度 wx.navigateTo({url: })2.wx.redirectTo() 关闭当前页面&#x…...
Redis实现分布式会话
Redis实现分布式会话 1 什么是分布式会话 1 这是我么之前学过的注册登录模式 2 如果非常多的人访问,因为单台服务器的访问承受能力是有限的,那么我们就想用多态服务器来承担压力 3 一般通过负载均衡的方式来实现,来分担服务器的压力。 4 负…...
AntDesignBlazor示例——暗黑模式
本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考。 示例代码仓库:https://gitee.com/known/BlazorDemo 1. 学习目标 暗黑模式切换查找组件样式覆写组件样式 2. 添加暗黑模式切换组件 1)双击打开MainL…...
高通平台开发系列讲解(USB篇)adb function代码分析
文章目录 一、FFS相关动态打印二、代码入口三、ffs_alloc_inst四、ep0、ep1&ep2的注册五、读写过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文主要介绍高通平台USB adb function代码f_fs.c。 一、FFS相关动态打印 目录:msm-4.14/drivers/usb/gadget/fun…...
SQL基础知识3
一、删除数据 1、delete操作 删除之前一定要查询一下,确保删除的数据是对的 逻辑删除:在表中新增一个字段:flag/status 二、更新数据 本质上的逻辑删除 三、查询数据 1、联表查询 1、内连接 交集的部分叫内连接 小知识:一般…...
GBASE南大通用数据库如何检索单行
SELECT 语句返回的行集是它的活动集。单个 SELECT 语句返回单个行。您可使用嵌入式 SELECT 语句来从数据库将单个行检索到主变量内。然而,当 SELECT 语句返回多行数 据时,程序必须使用游标来一次检索一行。在 检索多行 中讨论“多行”选择操作。 要检索单…...
【数据结构与算法】单链表(无头单向非循环)
文章目录 1. 概念2. 链表分类3. 链表与顺序表对比4. 无头单向非循环链表实现(C语言)4.1 SingleLinkedList.h4.2 Test.c4.3 SingleLinkedList.c 1. 概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指…...
保姆级教程:Langchain框架详解 - 大模型开发者的必备技能
什么是Langchain Langchain是一款提供给用户与大模型之间快捷沟通的代理框架,其核心设计思想就是整合各大模型厂商的接口,给用户提供一个快捷入口能快速实现自己的agent。 核心组件 •agent:Langchain的核心部分,所有的操作都围…...
FLUX.1-dev镜像免配置部署:5分钟启动影院级Text-to-Image服务
FLUX.1-dev镜像免配置部署:5分钟启动影院级Text-to-Image服务 想体验一下“所见即所得”的顶级AI绘画吗?今天,我们一起来部署一个开箱即用的FLUX.1-dev旗舰版镜像。它集成了当前开源界最强的文本生成图像模型之一,并且针对24GB显…...
FRP内网穿透实战:从零配置到远程访问
1. 为什么需要内网穿透? 想象一下这个场景:你在家里搭建了一个NAS私有云,存了几百部高清电影;或者你在办公室电脑上跑了个数据库服务,出差时想随时查看数据。这时候你会发现——这些服务都在内网环境里,离…...
5分钟部署MTools:功能强大的现代化工具,支持Windows/macOS/Linux
5分钟部署MTools:功能强大的现代化工具,支持Windows/macOS/Linux 1. 开箱即用的全能工具集 MTools是一款真正实现"下载即用"的现代化桌面工具集,它集成了图片处理、音视频编辑、AI智能工具和开发辅助四大核心功能模块。不同于需要…...
小波分解选型指南:如何为你的数据选择最合适的pywt小波函数(db4/haar/symlets对比)
小波分解选型指南:如何为你的数据选择最合适的pywt小波函数(db4/haar/symlets对比) 在信号处理领域,小波分解就像一把瑞士军刀,能够同时提供时域和频域的信息。但面对pywt库中琳琅满目的小波函数——从经典的Haar到复杂…...
C盘清理与优化:为Realistic Vision V5.1模型文件腾出空间
C盘清理与优化:为Realistic Vision V5.1模型文件腾出空间 你是不是也遇到过这种情况:电脑C盘突然飘红,系统提示空间不足,想下载个新的AI模型,比如最近很火的Realistic Vision V5.1,却发现根本没地方放。看…...
PCB设计中孔间距的DFM隐患,你避开了吗?
1. PCB孔间距设计:你可能忽略的定时炸弹 刚入行那会儿,我总觉得PCB设计就是把线路连通就行,直到亲眼看到产线上因为孔距问题报废的第三批板子——密密麻麻的破孔像蜂窝煤,有的孔边缘铜箔直接翘起来短路。老师傅指着板子说…...
告别低效循环:利用快马平台智能生成向量化代码,提升数据处理性能
最近在做一个数据分析项目时,遇到了性能瓶颈。处理一个几十万行的数据集时,简单的循环操作竟然要跑好几分钟。经过一番摸索,我发现向量化操作真是个神器,今天就分享一下如何用NumPy和Pandas来提升数据处理效率。 首先我们创建一个…...
ECG-Emotion Recognition(情绪识别)实战指南:WESAD与DREAMER数据集深度解析与应用
1. 情绪识别与ECG技术入门指南 第一次接触ECG情绪识别时,我和大多数人一样充满疑惑:心跳数据真能反映人的情绪?经过三个月的项目实践,我可以肯定地说,ECG信号就像情绪的"心电图",愤怒时心跳加速、…...
如何在macOS上制作Windows启动盘:WinDiskWriter终极指南
如何在macOS上制作Windows启动盘:WinDiskWriter终极指南 【免费下载链接】windiskwriter 🖥 A macOS app that creates bootable USB drives for Windows. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 项目地址: h…...

