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:查看节点数据以及节点状态信息

在这里插入图片描述

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

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

相关文章

谷粒商城-缓存使用分布式锁SpringCache(5天)

缓存使用 1.1.1 哪些数据适合放入缓存 即时性、 数据一致性要求不高的 访问量大且更新频率不高的数据(读多, 写少) 例如:电商类应用, 商品分类, 商品列表等适合缓存 本地缓存 使用Map进行本地缓存 本地缓存…

Windows安全基础:UAC

目录 UAC原理介绍 UAC的四个安全级别定义 UAC的触发条件 UAC用户登录过程 UAC虚拟化 配置UAC UAC原理介绍 用户账号控制(User Account Control) 为Windows Vista推出的一项安全技术,其原理是通过限制安全应用软件对系统层级的访问&…

SpringBoot3自动配置原理

​​​​​​自动配置 遵循约定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器 看一下我们前面写的代码有没有达到自动配置的效果呢? 没有自动,我们写了配置类,写了Import注解&#…

【Linux】磁盘分区管理及挂载/永久挂载管理

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

S1-05二进制信号量和计数器信号量

二进制信号量 二进制信号量,又叫二值信号量,要么是0,要么是1,也是通过Take和Give方式获取和释放,用于控制对共享资源的访问。在每次访问共享资源之前需要获取二进制信号量,若已被获取则任务会被阻塞直到二…

提供一些防扫描被封禁、防溯源工具

1► 介绍 SecScanC2可以创建P2P网络进行安全扫描和C2。该工具可以帮助安全研究人员更有效地进行渗透测试,防止扫描被封禁,保护自己免受溯源。 2► 工具特性 P2P:将大量互联网节点构建成P2P网络 防止扫描被封禁:随机或指定节点…

二阶贝塞尔曲线生成弧线

概述 本文分享一个二阶贝塞尔曲线曲线生成弧线的算法。 效果 实现 1. 封装方法 class ArcLine {constructor(from, to, num 100) {this.from from;this.to to;this.num num;return this.getPointList();}getPointList() {const { from, to } thisconst ctrlPoint thi…

rime中州韵小狼毫 汉语拼音输入方案

在word中,我们可以轻易的给汉字加上拼音,如下👇: 但是,如何单独的输入拼音呢?例如输入 pīn yīn, 再如 zhōng guō。今天我们分享一个使用rime中州韵小狼毫须鼠管输入法配置的输入汉语拼音的输入方案。功…

【机器学习300问】6、什么是机器学习中的特征量?

一、首先我们看三个例子 例一:在辨别水果的任务中,人类一般会通过外观、味道、颜色等方面信息来进行区分。而机器学习则通过水果的颜色、重量、气味成分的量等被称之为“特征量”的数值来区分。 例二:在手写数字识别任务中,人类…

概率大揭秘:深度复习概率论,事半功倍的学霸秘籍!

第一章 概率论的基本概念 一、事件及其关系与运算 1、样本空间、样本点、随机事件、必然事件、不可 能事件、基本事件和复合事件的概念; 2、事件的包含与相等:若事件A包含事件B,则B的发生必然导致A的发生。进而有P(AB)P(B),P…

Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决

1、版本介绍: doris版本: 1.2.8Spark Connector for Apache Doris 版本: spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOTspark版本:spark-3.3.1 2、Spark Doris Connector Spark Doris Connector - Apache Doris 目…

Web前端 ---- 【Vue】(组件)父子组件之间的通信一文带你了解

目录 前言 父组件传子组件 ---- props 给要传递数据的子组件绑定要传过去的属性及属性值 在子组件中使用props配置项接收 props配置项 子组件传父组件 ---- 组件的自定义事件 子组件向父组件传递数据 通过代码来绑定自定义事件 前言 本文将介绍在Vue中父子组件如何进行…

PHP在线考试平台管理系统源码带文字搭建教程和操作手册

PHP在线考试平台管理系统源码带文字搭建教程和操作手册 技术架构 PHP7.2 Thinkphp6 React UmiJs nginx mysql5.7 cnetos7以上 宝塔面板 系统功能特性与介绍 采用PHP7强类型(严格模式)。 题库管理 支持多种试题类型和录题方式。 考生管理 快速导入考…

鸿蒙开发环境搭建-高频环境问题解决

1.Node版本问题 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.x&#xff0…

【纯CSS特效源码】(一)几款漂亮的文字特效

1.渐变文字 使用background: -webkit-linear-gradient(#d8ecec, #2d888b);定义背景渐变色 并使用-webkit-text-fill-color: transparent;指定了文本字符的填充颜色 <!DOCTYPE html> <html><style>body {background-color: #111;}#content {position: abso…

汽车专业翻译,如何选择好的翻译公司?

随着中国汽车市场的不断壮大和国际化的步伐加快&#xff0c;众多外国汽车品牌纷纷进军中国市场&#xff0c;与此同时&#xff0c;国内汽车企业也在积极拓展海外版图。在此背景下&#xff0c;汽车企业与国际客户、供应商和合作伙伴的交流日益频繁。因此&#xff0c;拥有一支专业…

Javascript jQuery简介

✨前言✨ 1.如果代码对您有帮助 欢迎点赞&#x1f44d;收藏⭐哟 后面如有问题可以私信评论哟&#x1f5d2;️ 2.博主后面将持续更新哟&#x1f618;&#x1f389;本章目录&#x1f389; &#x1f95d;一.jQuery简介&#x1f965;二.JQeury常用API&#x1f347;1.jQeury选择…

PingCAP 受邀参加 FICC 2023,获 Open100 世纪全球开源贡献奖

2023 年 12 月&#xff0c;2023 国际测试委员会智能计算与芯片联邦大会&#xff08;FICC 2023&#xff09;在海南三亚举办&#xff0c;中外院士和数十位领域专家莅临出席。 大会现场 &#xff0c;开放源代码促进会创始人 Bruce Perens 颁发了 Open100 世纪全球开源贡献奖&…

UE5 通过接口实现角色描边效果

接口不能够被实例化&#xff0c;不能够在内部书写函数的逻辑和设置属性&#xff0c;只能够被继承使用。它能够让不同的类实现有相同的函数&#xff0c;继承接口的类必须实现接口的函数。 并且&#xff0c;我们可以在不同的类里面的函数实现也不同&#xff0c;比如A类描边是红色…

什么是云服务器ECS及其优势、购买、使用方式和部署建议

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…