ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zookeeper(2)

2022-03-27 18:02:22  阅读:176  来源: 互联网

标签:删除 zookeeper watch path 权限 节点


1. zookeeper客户端操作

新增节点

create [-s] [-e] path data  //其中-s 为有序节点,-e 临时节点

创建持久化节点并写入数据:

创建持久化有序节点,此时创建的节点名为指定节点名 + 自增序号:

创建临时节点,临时节点会在会话过期后被删除:

创建临时有序节点,临时节点会在会话过期后被删除:

更新节点
更新节点的命令是 set ,可以直接进行修改,如下:

也可以基于版本号进行更改,此时类似于乐观锁机制,当你传入的数据版本号(dataVersion) 和当前节点的数据版本号不符合时,zookeeper 会拒绝本次修改:

删除节点
删除节点的语法如下:

delete path [version]
rmr path

和更新节点数据一样,也可以传入版本号,当你传入的数据版本号 (dataVersion)和当前节点的数据版本号不符合时,zookeeper 不会执行删除操作。

要想删除某个节点及其所有后代节点,可以使用递归删除,命令为 rmr path

查看节点

get path

节点各个属性如下。其中一个重要的概念是 Zxid(ZooKeeper TransactionId),ZooKeeper 节点的每一次更改都具有唯一的 Zxid,如果 Zxid1 小于 Zxid2,则Zxid1 的更改发生在 Zxid2 更改之前。

  • cZxid:数据节点创建时的事务 ID
  • ctime:数据节点创建时的时间
  • mZxid:数据节点最后一次更新时的事务 ID
  • mtime:数据节点最后一次更新时的时间
  • pZxid:数据节点的子节点最后一次被修改时的事务 ID
  • cversion:子节点的更改次数
  • dataVersion:节点数据的更改次数
  • aclVersion:节点的 ACL 的更改次数
  • ephemeralOwner:如果节点是临时节点,则表示创建该节点的会话的
  • SessionID:如果节点是持久节点,则该属性值为 0
  • dataLength:数据内容的长度
  • numChildren:数据节点当前的子节点个数

查看节点状态
可以使用 stat 命令查看节点状态,它的返回值和 get 命令类似,但不会返回节点数据

查看节点列表
查看节点列表有 ls path 和 ls2 path 两个命令,后者是前者的增强,不仅可以查看指定路径下的所有节点,还可以查看当前节点的信息

监听器get path [watch]
使用 get path [watch] 注册的监听器能够在节点内容发生改变的时候,向客户端发出通知。需要注意的是 zookeeper 的触发器是一次性的 (One-time trigger),即触发一次后就会立即失效。

监听器stat path [watch
使用 stat path [watch] 注册的监听器能够在节点状态发生改变的时候,向客户端发出通知

监听器ls\ls2 path [watch]
使用 ls path [watch] 或 ls2 path [watch] 注册的监听器能够监听该节点下所有子节点的增加和删除操作。

2. zookeeper的acl权限控制

2.1 概述

zookeeper 类似文件系统,client 可以创建节点、更新节点、删除节点,那么如何做到节点的权限的控制呢?zookeeper的access control list 访问控制列表可以做到这一点。

acl 权限控制,使用scheme:id:permission 来标识,主要涵盖 3 个方面:

  • 权限模式(scheme):授权的策略
  • 授权对象(id):授权的对象
  • 权限(permission):授予的权限

其特性如下:

  • zooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限
  • 每个znode支持设置多种权限控制方案和多个权限
  • 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
setAcl /test2 ip:192.168.60.130:crwda // 将节点权限设置为Ip:192.168.60.130的客户端可以对节点进行增、删、改、查、管理权限

2.2 权限模式

采用何种方式授权

  • world:只有一个用户:anyone,代表登录zokeeper所有人(默认)
  • ip:对客户端使用IP地址认证
  • auth:使用已添加认证的用户认证
  • digest:使用“用户名:密码”方式认证

2.3 授权的对象

给谁授予权限
授权对象ID是指,权限赋予的实体,例如:IP 地址或用户。

2.4 授予的权限

授予什么权限
create、delete、read、writer、admin也就是 增、删、改、查、管理权限,这5种权限简写为cdrwa,注意:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

  • create:c 可以创建子节点
  • delete:d 可以删除子节点(仅下一级节点)
  • read:r 可以读取节点数据及显示子节点列表
  • write:w 可以设置节点数据
  • admin:a 可以设置节点访问控制列表权限

2.5 授权的相关命令

  • getAcl:读取ACL权限
  • setAcl:设置ACL权限
  • addauth:添加认证用户

2.6实践

world授权模式:

setAcl <path> world:anyone:<acl>

IP授权模式:

setAcl <path> ip:<ip>:<acl>

Auth授权模式:

addauth digest <user>:<password> #添加认证用户
setAcl <path> auth:<user>:<acl>


另起一个终端访问,就是没有全限的,如下:

然后执行addauth digest itcast:123456就可以正常访问了

Digest授权模式:

setAcl <path> digest:<user>:<password>:<acl>

这里的密码是经过SHA1及BASE64处理的密文,在SHELL中可以通过以下命令计算:

echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64

先来计算一个密文

echo -n itheima:123456 | openssl dgst -binary -sha1 | openssl base64

acl 超级管理员
zookeeper的权限管理模式有一种叫做super,该模式提供一个超管可以方便的访问任何权限的节点

标签:删除,zookeeper,watch,path,权限,节点
来源: https://www.cnblogs.com/bill-g-chen/p/16063695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有