zookeeper之znode节点与acl权限设置

news2024/12/24 3:45:07

zookeeper之znode节点与acl权限设置

  • zookeeper
  • znode节点
    • 节点类型
    • 节点属性
    • 节点监听
  • 客户端命令行
    • 查看所有命令
    • 命令说明
  • acl权限设置
    • scheme认证模型
    • permission权限位
    • acl相关命令
    • ACL使用示例
  • 客户端工具
    • ZooInspector
    • PrettyZoo

zookeeper

ZooKeeper是Apache软件基金会的一个软件项目,是一个分布式的,开放源码的分布式应用程序协调服务。它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。

ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式 锁和分布式队列等功能

官网:http://ZooKeeper.apache.org/

快速开始:http://zookeeper.apache.org/doc/current/zookeeperStarted.html

API地址:https://zookeeper.apache.org/doc/

数据结构

ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode,每个ZNode都可以通过其路径唯一标识

在这里插入图片描述

zookeeper提供的名称空间非常类似于标准文件系统,key-value 的形式存储。名称key由斜线 / 分割的一系列路径元素,zookeeper名称空间中的每个节点都是由一个路径标识。

znode节点

节点类型

持久化目录节点(PERSISTENT):客户端与zookeeper断开连接后,该节点依旧存在

# 默认创建的就是持久节点
create /test

持久化顺序编号目录节点(PERSISTENT_SEQUENTIAL):客户端与zookeeper断开连接后,该节点依旧存在,Zookeeper会给该节点按照顺序编号

# 创建序号节点
create -s /test
# 返回创建的实际路径
Created /test0000000001

create -s /test
# 返回创建的实际路径2
Created /test0000000002

临时目录节点(EPHEMERAL):客户端与zookeeper断开连接后,该节点被删除

# 创建临时节点, 断开会话 在连接将会自动删除
create -e /temp

临时顺序编号目录节点(EPHEMERAL_SEQUENTIAL):客户端与zookeeper断开连接后,该节点被删除,Zookeeper会给该节点按照顺序编号

create -e -s /temp/seq

节点属性

查看节点属性:stat /znode

状态属性描述
cZxid创建节点时的事务ID,每次修改状态都会产生一个事务ID。事务ID是 ZooKeeper 中所有修改总的次序。
每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之前发生。
ctime创建节点时的时间
mZxid最后修改节点时的事务ID
mtime最后修改节点时的时间
pZxid表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID(注意,只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid)
cversion子节点版本号,子节点每次修改版本号加1
dataversion数据版本号,数据每次修改该版本号加1
aclversion权限版本号,权限每次修改该版本号加1
ephemeralOwner创建该临时节点的会话的sessionID。如果该节点是持久节点,那么这个属性值为0
dataLength该节点的数据长度
numChildren该节点拥有子节点的数量,只统计直接子节点的数量

节点监听

客户添加-w参数可实时监听节点与子节点的变化,并且实时收到通知。

命令描述
ls -w path监听子节点的变化(增,删)
get -w path监听节点数据的变化
stat -w path监听节点属性的变化
printwatches on|off触发监听后,是否打印监听事件(默认on)

客户端命令行

查看所有命令

通过zkClient进入zookeeper客户端命令行,输入help查看zookeeper客户端的指令

localhost:2181	$	help
ZooKeeper -server host:port cmd args
	stat path [watch]
	set path data [version]
	ls path [watch]
	delquota [-n|-b] path
	ls2 path [watch]
	setAcl path acl
	setquota -n|-b val path
	history 
	redo cmdno
	printwatches on|off
	delete path [version]
	sync path
	listquota path
	rmr path
	get path [watch]
	create [-s] [-e] path data acl
	addauth scheme auth
	getAcl path

命令说明

查看某个路径下目录列表

ls [-s] [-w] [-R] path

path:代表路径,完整路径
-s:返回状态信息
-w:监听节点变化
-R:递归查看某路径下目录列表

创建节点并赋值

create [-s] [-e] [-c] [-t ttl] path [data] [acl]

[-s] [-e]-s 和 -e 都是可选的,-s 代表顺序节点, -e 代表临时节点,注意其中 -s 和 -e 可以同时使用的,并且临时节点不能再创建子节点
path:指定要创建节点的路径,比如 /runoob
data:要在此节点存储的数据
acl:访问权限相关,默认是 world,相当于全世界都能访问

修改节点存储的数据

set [-s] [-v version] path data

path:节点路径。
data:需要存储的数据。
[version]:可选项,版本号(可用作乐观锁)

获取节点数据和状态信息

get [-s] [-w] path

-s:返回结果带上状态信息
-w:返回数据并对对节点进行事件监听

查看节点状态信息

stat [-w] path

path:代表路径
-w:对节点进行事件监听

删除某节点

delete [-v version] path
deleteall path [-b batch size]

如果某节点不为空,则不能用delete命令删除

查看节点状态

stat path [watch]

设置节点的值

set path data [version]

查看当前znode中所包含的内容

ls path [watch]

查看当前节点数据并能看到更新次数等数据

ls2 path [watch]

创建节点 -s含有序列 -e临时

create [-s] [-e] path data acl

获得节点的值

get path [watch]

删除节点

delete path [version]

递归删除节点

rmr path

acl权限设置

ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode的防问。

基于scheme:id:permission的方式进行权限控制。scheme表示授权模式、id模式对应值、permission即具体的增删改权限位。

注意:在使用ACL时,权限仅对当前节点有效,不会让子节点继承。

scheme认证模型

方案描述
world开放模式,world表示全世界都可以访问(这是默认设置)
ipip模式,限定客户端IP防问
auth用户密码认证模式,只有在会话中添加了认证才可以防问
digest与auth类似,区别在于auth用明文密码,而digest 用sha-1+base64加密后的密码。在实际使用中digest 更常见。

permission权限位

权限位权限描述
cCREATE可以创建子节点
dDELETE可以删除子节点(仅下一级节点)
rREAD可以读取节点数据及显示子节点列表
wWRITE可以设置节点数据
aADMIN可以设置节点访问控制列表权限

acl相关命令

命令使用方式描述
getAclgetAcl 读取ACL权限
setAclsetAcl 设置ACL权限
addauthaddauth 添加认证用户

ACL使用示例

权限仅对当前节点有效,不会让子节点继承。如限制了IP防问A节点,但不妨碍该IP防问A的子节点

world权限

语法: setAcl <path> world:anyone:<权限位>

查看默认节点权限

# 创建一个节点
$	create -e /test
Created /test

# 查看节点权限
# 返回的默认权限表示 ,所有人拥有所有权限
$	getAcl /test
'world,'anyone
: cdrwa

修改默认权限为读写

# 设置为rw权限 
setAcl /test world:anyone:rw

# 可以正常读
get /test

# 无法正常创建子节点
create -e /test/t "rw"

# 返回没有权限的异常
Authentication is not valid : /test/t

IP权限示例:

语法:setAcl <path> ip:<ip地址|地址段>:<权限位>

auth模式示例:
语法:

setAcl <path> auth:<用户名>:<密码>:<权限位>

addauth digest <用户名>:<密码>

digest 权限示例:

语法:

setAcl <path> digest :<用户名>:<密钥>:<权限位>

addauth digest <用户名>:<密码>

# 通过sha1与base64组合加密码生成密钥

echo -n <用户名>:<密码> | openssl dgst -binary -sha1 | openssl base64

# 先 sha1 加密,然后base64加密
echo -n test:123456 | openssl dgst -binary -sha1 | openssl base64

# 返回密钥
PbXQT4DQMDcaYC1X0EY0B2RZCwM=

设置digest 权限

setAcl /test digest:test:PbXQT4DQMDcaYC1X0EY0B2RZCwM=:cdrw

查看节点将显示没有权限

#查看节点
get /test

# 显示没有权限访问
Authentication is not valid : /test

给当前会话添加认证后再查看

为节点设置digest 权限后,访问前必须执行addauth,当前会话才可以防问。

# 给当前会话添加权限帐户
addauth digest test:123456

# 再次查看即可成功查看
get /test

客户端工具

ZooInspector

下载地址: https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

解压进入ZooInspector\build目录,执行命令:

D:\Development\ZooInspector\build>java -jar zookeeper-dev-ZooInspector.jar

在这里插入图片描述

PrettyZoo

下载地址: https://github.com/vran-dev/PrettyZoo
在这里插入图片描述

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

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

相关文章

chatgpt赋能python:量化金融中的Python模型

量化金融中的Python模型 随着互联网的发展&#xff0c;金融行业也在不断地发生变化。量化金融是近年来崛起的一种新兴方式&#xff0c;它将数学、计算机科学和统计学等领域的理论和方法应用于金融领域中&#xff0c;以期望实现比传统投资更高的效益。其中&#xff0c;Python是…

计算机网络那些事之 MTU 篇 pt.2

哈喽大家好&#xff0c;我是咸鱼 在《计算机网络那些事之 MTU 篇 》中&#xff0c;咸鱼跟大家介绍了 MTU 是指数据链路层能够传输的最大数据帧的大小 如果发送的数据大于 MTU&#xff0c;则就会进行分片操作&#xff08;Fragment&#xff09;&#xff1b;如果小于 MTU&#x…

$.each用法

看到$ 自然可以想到这是JQ的一个方法JQ each可以当成是数组的forEach 具体用法&#xff1a;需要注意函数第一项是索引&#xff0c;第二项才是具体的值

React Hooks的讲解与教程

什么是React Hooks React Hooks 是 React 16.8 新增的一种特性&#xff0c;它可以让你在函数式组件中使用 state、生命周期、context 等 React 特性。Hooks 可以让你将复杂的逻辑拆分成多个独立可重用的函数&#xff0c;并且使得这些函数更加易于理解和测试。 Class组件存在的问…

Java的模块(module)

简单介绍 Java的模块&#xff08;module&#xff09;是Java SE 9支持的组件。一个模块可以包含多个包。通过模块系统&#xff0c;更加容易开发和维护大型的系统。引入模块的目标&#xff1a; 提供一种可靠的配置机制。用模块机制替换脆弱的、容易出错的类路径配置机制。模块作…

物化视图功能验证

物化视图(Materialized View)和视图(View)类似&#xff0c;也是一个视图名字对应一个SQL查询查询语句。不同之处在于&#xff1a;物化视图定义时使用了额外的关键字materialized&#xff0c; 它把结果集保存在起来&#xff0c;查询的时候直接读取保存的结果集&#xff0c;而不必…

力扣单调栈专题 739. 每日温度 496.下一个更大元素I 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形 步骤及C++实现 总结

文章目录 739. 每日温度496.下一个更大元素 I503.下一个更大元素II方法一 数组拼接方法二 模拟遍历两边nums 42. 接雨水双指针 暴力法双指针优化单调栈 84.柱状图中最大的矩形暴力解法双指针解法单调栈 总结 739. 每日温度 暴力解法&#xff0c;双层for循环&#xff0c;时间复杂…

「完美解决」concrt140.dll丢失怎么恢复(解决方案)

我们平时在打开 Adobe 应用程序、Halo、Forza Horizon 5 等时&#xff0c;可能会遇到找不到 concrt140.dll。因此&#xff0c;这不是特定于某个应用程序的问题。如果没有安装正确的 DLL&#xff0c;应用程序将无法正常工作&#xff0c;因为它们的代码依赖于这些库中编写的代码。…

C++入门笔记--【精简完备】【快速入手】

目录 ​​​​​​​1 C初识 1.1 第一个C程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1.1.4 运行程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型&#xff08;浮点型&#xff09; 2.4 字…

基于STM32单片机的大棚温度测控系统

目录 基于STM32单片机的大棚温度测控系统一、原理图二、部分代码三、视频演示 基于STM32单片机的大棚温度测控系统 功能&#xff1a; 1.通过LCD屏幕显示温湿度值和上限阈值 2.通过按键完成阈值加减功能 3.通过DHT11完成温湿度采集 4.若实时数据不满足条件&#xff0c;则进行降…

linux curl命令使用教程(curl指令)

文章目录 curl指令介绍curl的历史curl指令的安装Ubuntu/DebianCentOS/RHELFedoramacOSWindows curl使用方法示例使用curl命令注意事项 curl指令介绍 curl是一个用于发送HTTP请求的命令行工具&#xff0c;它支持多种协议&#xff0c;包括HTTP、HTTPS、FTP、SMTP等。curl可以用来…

人工智能:揭示未来科技所带来的革命性变革

目录 引言&#xff1a; 一、人工智能的定义与发展历程&#xff1a; 二、人工智能的应用领域&#xff1a; 三、人工智能对未来的影响&#xff1a; 结论&#xff1a; 引言&#xff1a; 在当今科技快速发展的时代&#xff0c;人工智能&#xff08;Artificial Intelligence&am…

开展全媒体营销的具体步骤和策略

随着移动互联网的发展和智能手机的普及&#xff0c;网络营销的主战场从PC端向移动端转移&#xff0c;新型的全媒体营销就是在如此的背景下兴起且被广泛应用。全媒体营销强调的是通过多个平台和渠道传播信息&#xff0c;与目标受众进行全方位、多角度的沟通。 企业如何高效开展全…

1σ Random Jitter of SSB for TIE Period

1σ Random Jitter of SSB for TIE & Period &#xff0c;该章节厘清了jitter基本概念&#xff0c;并给出了对应的表达式。

FineReport学习4

通过按钮控件来实现插入删除行 通过sql公式实现填报联动 设置插入行策略 通过sql实现控件联动

数据结构---------(2)排序

排序 1.选择排序 从待排序的数据中选择最小的元素&#xff0c;将其放在已排序的序列末尾&#xff0c;然后在剩余的数据中再选择最小的元素&#xff0c;放在已排序序列的末尾&#xff0c;以此类推&#xff0c;直到所有的数据都排好序为止。 public static void main(String[…

大数据分析案例-基于KMeans聚类算法对客户进行分群分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【GESP】2023年03月图形化二级 -- 绘制图形

文章目录 绘制图形1. 准备工作2. 功能实现3. 设计思路与实现&#xff08;1&#xff09;角色、舞台背景设置a. 角色设置b. 舞台背景设置 &#xff08;2&#xff09;脚本编写a. 角色&#xff1a;小猫 4. 评分标准 绘制图形 1. 准备工作 &#xff08;1) 隐藏默认角色小猫。 2. 功…

【Redis入门】 —— 关于Redis的一点儿知识

&#x1f4a7; 【 R e d i s 入门】——关于 R e d i s 的一点儿知识 \color{#FF1493}{【Redis入门】 —— 关于Redis的一点儿知识} 【Redis入门】——关于Redis的一点儿知识&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页…

2023年华中杯数学建模B题小学数学应用题相似性度量及难度评估解题全过程文档及程序

2023年华中杯数学建模 B题 小学数学应用题相似性度量及难度评估 原题再现 某 MOOC 在线教育平台希望能够进行个性化教学&#xff0c;实现用户自主学习。在用户学习时&#xff0c;系统从题库中随机抽取若干道与例题同步的随堂测试题&#xff0c;记录、分析学生的学习和答题信息…