之前通过客户端连接之后我们已经知道了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. Luogu 3376 【模板】网络最大流

    0.网络流解释:如果你还是不能理解,我们就换一种说法,假设s城有inf个人想去t城,但是从s到t要经过一些城市才能到达,(以上图为例)其中s到3城的火车票还剩10张,3到t的火车票还剩15张,其他路以 ...

  2. pormise和async

    pormise 1.异步问题 假设现在我刚认识你,需要和你说话,但是我普通话不够标准,需要间隔一秒钟才能说一句话,以此让你可以慢慢思考.这样的话我们就需要用到定时器. 最沙雕的代码如下: setTim ...

  3. 简单聊聊 Ironic

    上一篇文章里我简单介绍了一下「裸金属」的概念,提到了 OpenStack 中的核心项目 Ironic,今天简单来聊聊它. Ironic 项目的吉祥物 Bare Metal 所以用 Bear 来做吉祥物 ...

  4. Java反应式框架Reactor中的Mono和Flux

    1. 前言 最近写关于响应式编程的东西有点多,很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼.但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebF ...

  5. 基础篇:深入解析JAVA异常

    目录 1 异常的分类和继承关系 2 几种常见异常类的解析 3 Java异常关键字 4 开发过程处理异常注意点 5 异常和AutoCloseable(1.7-JDK的语法糖) 6 throw和throw ...

  6. 探讨JVM运行机制和执行流程

    JVM是什么 概述 JVM是Java Virtual Machine的缩写.它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机. JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了 ...

  7. 使用内置对象Math.random实现猜数字游戏

    function getRandom(min,max){ return Math.floor(Math.random()*(max-min+1))+min;    //得到两个数之间的随机整数,包含实 ...

  8. c#后台代码请求访问api接口

    前言:最近公司项目与外部api接口对接较多 ,写下自己的代码总结.介绍两种访问方式(HttpClient.HttpWebRequest) 一.HttpWebRequest 访问Api private ...

  9. 【题解】Computer Network

    Description 给你一棵N(N<=10000)个节点的树,求每个点到其他点的最大距离. Input 第一行一个数N.接下来若干行每行两个数k,t描述一条点k到点t的边(输入数据保证无重复 ...

  10. javaOOP9.17刷题

    今天在吃晚饭和朋友们聊天的时候,一个已经在自己写java全栈项目并且准备面试的同学说要我好好学习OOP这部分,他现在写代码写面试题,发现自己都忘了基类派生类调用构造函数时候的顺序是什么样的巴拉巴拉,说 ...