之前通过客户端连接之后我们已经知道了zk相关的很多命令(Zookeeper(1)---初识)。

节点属性

现在我们就通过stat指令来看看节点都有哪些属性,或者使用get 指令和-s参数来查看节点数据以及属性

abc  节点数据

cZxid = 0x5 创建节点的事务ID

ctime = Sat Oct 17 15:25:43 CST 2020   创建时间

mZxid = 0xc 修改节点的事务ID(修改当前节点数据)

mtime = Wed Oct 21 22:51:14 CST 2020  最后修改时间

pZxid = 0x6 子节点变更(增加和删除,数据修改不会影响该ID)的事务ID

cversion = 1 子节点进行的更改(增加和删除,数据修改不会影响该ID)次数(不包括子节点)

dataVersion = 1  数据版本

aclVersion = 0 权限变化版本 access control list

ephemeralOwner = 0x0  字面翻译临时节点拥有者,持久节点值为0,非持久节点不为0(会话ID)

dataLength = 3  数据长度

numChildren = 1 子节点数量(不包括子子节点)

监听:

我们可以通过-w参数对一些节点设置监听,适用于分布式保障数据一致性的场景。多个服务同时监听一个节点,当这个节点发生对应的变化时,就会通知到监听了该节点的所有服务。

比如之前说的配置信息发生变化,每个服务获取到变更信息之后进行变更,而不需要一个一个服务的去操作。

ls -w 监听子节点的变化(增,删)

get -w 监听节点数据的变化

stat -w 监听节点属性的变化

printwatches on|off 触发监听后,是否打印监听事件(默认on)

现在我们开启两个客户端来看看上面的这些监听操作

1.数据变化监听 get -w

客户端添加监听

客户端2修改数据

客户端1监听到数据变化

可以看到监听的了数据变化

如果我们再次修改数据,会发现无法再次监听到变化了。因为这个监听是一次性的,只会出发一次,如果还需要监听需要重新设置监听

2.节点变化(增、删)ls -w

这个监听可以用于服务心跳维护或者服务注册。监听一个持久节点,每个服务上线的时候在该持久节点下面,新增一个临时(序号)节点,date可以存放ip信息和端口。当某个服务宕机的时候,该节点的子节点变化就会被监听到了。

客户端1监听

客户端2新增节点

客户端1监听到节点变化

3.监听属性变化 stat -w

这个监听相当于就是前面两个监听的汇总,数据修改,子节点变更都会涉及到属性变化

权限设置:

Access Control List(访问控制列表),用于控制节点的访问操作权限

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

scheme:认证模型

world   开放模式, world表示全世界都可以访问(这是默认设置)

ip        ip模式,  限定客户端IP防问

auth     用户密码认证模式,只有在会话中添加了认证才可以防问

digest    与auth类似,区别在于auth用明文密码,而digest 用sha-1+base64加密后的密码

permission权限位

c   CREATE 可以创建子节点

d  DELETE 可以删除子节点(仅下一级节点)

r  READ 可以读取节点数据及显示子节点列表

w  WRITE 可以设置节点数据

a  ADMIN 可以设置节点访问控制列表权限

acl 相关命令:

getAcl getAcl <path> 读取ACL权限

setAcl setAcl <path> <acl> 设置ACL权限

addauth   addauth <scheme> <auth> 添加认证用户(addauth digest <用户名>:<密码>)

开放模式:只有一个值anyone, 未设置写权限,无法写入数据:

Ip模式:

setAcl /apps ip:127.0.0.1:ra

setAcl /apps ip:127.0.0.1/101:ra 网段设置

digest 权限示例:

  1. setAcl <path> digest :<用户名>:<密钥>:<权限位>
  2. addauth digest <用户名>:<密码>

注1:密钥 通过sha1与base64组合加密码生成,可通过以下命令生成

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

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

ACL的特殊说明:

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

Zookeeper(2)---节点属性、监听和权限的更多相关文章

  1. vue对象属性监听

    对象属性监听的两种方法: 1.普通的watch data() { return { frontPoints: 0 } }, watch: { frontPoints(newValue, oldValu ...

  2. 迷你MVVM框架 avalonjs 学习教程15、属性监听与模块通信

    avalon的ViewModel对象从其内部EventManager里继承了三个方法,$watch.$unwatch.$fire三个方法,它们就是我们本节的主题. 词如其名,非常直白,一看就知道做什么 ...

  3. 微信小程序实现watch属性监听数据变化

    Vue 提供了一种通用的方式来观察和响应 Vue 实例上的数据变动:监听属性 watch. 虽然watch的滥用会导致性能不佳,但在一些情况下我们还是需要watch,使得代码更加简洁.逻辑更加清晰(其 ...

  4. Vue 变量,成员,属性监听

    Vue变量 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  5. Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别

    一. 计算属性(computed) 1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷. 例如: <div id="app"> {{ myname ...

  6. Vue.js之计算属性(computed)、属性监听(watch)与方法选项(methods)

    vue.js官网:https://cn.vuejs.org/v2/guide/components-registration.html 一.计算属性-computed 1. 作用:能够避免数据冗余,通 ...

  7. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  8. Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)

    8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...

  9. ZooKeeper个人笔记之节点的监听

    create public String create(String path, byte[] data, List<ACL> acl, CreateMode createMode) th ...

随机推荐

  1. Oracle学习(十二)标量函数

    UCASE()大写转换  LCASE()小写转换 --把查询结果对应的列进行大写转换 SELECT UCASE(列) FROM 表; --把查询结果对应的列进行小写转换 SELECT LCASE(列) ...

  2. 手撸Mysql原生语句--多表

    在开始之前,我们需要建立表,做建表和数据的准备的工作. 1.建表 create table department( id int, name varchar(20) ); create table e ...

  3. 详细分析 Java 中启动线程的正确和错误方式

    目录 启动线程的正确和错误方式 前文回顾 start 方法和 run 方法的比较 start 方法分析 start 方法的含义以及注意事项 start 方法源码分析 源码 源码中的流程 run 方法分 ...

  4. if else与switch for与foreach

    if...else...适用于变量判断 switch适用于常量判断(switch只判断一次,if else 判断多次) foreach只适用于集合和数组查询(foreach不支持增加删除操作) for ...

  5. 秋天的第一份“干货” I Referer 防盗链,为什么少了个字母 R?

    Referer 为什么叫 Referer?它代表什么意思?在诸多防盗链竞争中它有什么优势? 今天,在聊 Referer 防盗链之前,先来聊聊我们在现实生活中常常碰到的推荐人(Referrer)信息. ...

  6. modelviewset settings 配置

    # 过滤器 # 1,安装 django-filter # 2,注册应用 # 3,配置settings, 在view里配置可过滤的字段 # 4,使用 查询字符串携带过滤信息 REST_FRAMEWORK ...

  7. Python-运算符和其优先级

    运算符 算数运算符 + - * ** / // % print(4 + 5) print("a" + "b") print([1, 2] + [1, 4]) p ...

  8. Go 数组&切片

    数组相关 在Go语言中,数组是一种容器相关的数据类型,用于存放多种相同类型的数据. 数组定义 在定义数组时,必须定义数组的类型以及长度,数组一经定义不可进行改变. 同时,数组的长度是按照元素个数进行统 ...

  9. java安全编码指南之:死锁dead lock

    目录 简介 不同的加锁顺序 使用private类变量 使用相同的Order 释放掉已占有的锁 简介 java中为了保证共享数据的安全性,我们引入了锁的机制.有了锁就有可能产生死锁. 死锁的原因就是多个 ...

  10. 【字符串算法】AC自动机

    国庆后面两天划水,甚至想接着发出咕咕咕的叫声.咳咳咳,这些都不重要!最近学习了一下AC自动机,发现其实远没有想象中的那么难. AC自动机的来历 我知道,很多人在第一次看到这个东西的时侯是非常兴奋的.( ...