Zookeeper--Watcher 和 ACL
Zookeeper--Watcher 和 ACL
Watcher (观察)
Zookeeper中的znode可以被监控,这是zk的核心特性。
通过exists,getChildren和getData这些读操作可以设置观察,通过create,delete和setData这些写操作触发观察。当一个观察被触发时会产生一个事件,这个观察和触发它的操作共同决定了观察事件的类型。
1.当所观察的znode被创建,删除或其数据被更新时,设置在exists操作上的观察被触发。
2.当所观察的znode被删除或其数据被更新时,设置在getData操作上的观察被触发。创建znode不会触发getData上的观察。
3.当所观察的znode的子节点被创建或删除,或所观察的znode被删除时,设置在getChildren上的观察会被触发。通过观察事件的类型来判断被删除的是znode还是其子节点:NodeDelete或NodeChildrenChanged。
观察和触发映射表:
创建节点 创建子节点 删除节点 删除子节点 setData
exists NodeCreated NodeDeleted NodeDataChanged
getData NodeDeleted NodeDataChanged
getChildren NodeChildrenChanged NodeDeleted NodeChildrenChanged
观察事件参数中可获取到被观察节点的路径,因此对于NodeCreated和NodeDeleted事件可获取到是哪个节点被创建和获取。
对于NodeChildrenChanged事件则需要使用getChildren方法获取新创建的节点。
对于NodeDataChanged事件则需要调用getData方法获取更新后的数据。注意:观察被触发后和获取数据之间节点可能又发生了变化。
ACL相关的操作不触发任何观察。
ACL (访问控制表)
每个znode被创建时都需要指定一个ACL列表,定义了该节点被执行各种操作的权限。
ACL依赖于Zookeeper的客户端身份验证机制。zk提供了以下几种验证方式:
Digest 通过用户名和密码来识别客户端
sasl 通过Kerberos来识别客户端
IP 通过客户端IP地址来识别客户端
每个ACL都是验证方式和赋予权限的组合,如 new ACL(Perms.READ, new ID("ip", "10.11.19.18")); 使用IP验证方式赋予READ权限
注意exists操作不需要任何权限,因此任何客户端都可以调用。
ACL权限表:
CREATE 允许create
READ 允许getChildren getData
WRITE 允许setData
DELETE 允许delete
ADMIN 允许setACL
在ZookDefs.Ids中定义了一些ACL,如OPEN_ACL_UNSAFE,将除ADMIN外的其他权限赋予每个客户端。
end
Zookeeper--Watcher 和 ACL的更多相关文章
- java zookeeper权限控制ACL(digest,IP)
java zookeeper权限控制ACL(auth,digest,ip) 学习前请参考:https://www.cnblogs.com/zwcry/p/10407806.html zookeeper ...
- 8.7.ZooKeeper Watcher监听
1.ZooKeeper Watcher ZooKeeper 提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象, 当这个主题对 ...
- ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...
- zookeeper Watcher API 说明
Watcher 在 ZooKeeper 是一个核心功能,Watcher 可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的 Watcher,从而 ...
- Zookeeper——Watcher原理详解
文章目录 引言 正文 一.如何注册监听 二.如何触发监听事件 三.事件类型有哪些 四.Watcher可以被无限次触发么?为什么要这么设计? 五.Watcher实现原理 1. 客服端发送请求 a. 初始 ...
- [转载] Zookeeper中的 ACL(Access Control List)访问控制列表
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...
- Zookeeper Watcher 解析
1.Watcher 接口源码 1. 当客户端向zookeeper注册了watcher时,当服务器向客户端发送一个watcher事件通知时,客户端会调用回调方法process(WatchedEvent ...
- zookeeper watcher
ZooKeeper 的 watcher 机制主要包括客户端线程.客户端 WatchManager 和 ZooKeeper 服务器三部分. 工作方式:客户端在向 zk 服务器注册 Watcher 的同 ...
- ZooKeeper Watcher注意事项
zookeeper watch的定义如下:watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher. 需要注意三点: 1.一次性触发器 c ...
- Zookeeper Watcher接口
在ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了 ...
随机推荐
- Personal Introduction
专业:计算机科学与技术 我是博客园的新人,虽然接触编程世界只有一年,基础知识比较差,编程能力差,但对于这个专业,我还是充满兴趣,希望有一天能独当一面,从今天起,我将分享一些在学习web前端和其他方面的 ...
- Redis数据结构:字典(hash表)
使用场景: # set person name "tom" # set person name "jerry" 1. 字典结构: 哈希表数据结构 typedef ...
- kibana安装
kibana,ELK中的K,主要为ES提供界面化操作,据说还是比较炫的,今天安装5.5.2版本进行尝试一把. 安装过程不难,简单的配置了一下端口和IP即可,难度不大. config下的kibana.y ...
- Volatility2.4以上版本及fmem使用指南
因为要做一个取证项目,需要用到volatility这款软件,网上很多教程已经是很多年以前的东西了,导致很多人在制作profile这一步就卡住了,今天解决了这个问题,记录在此,分享给大家共同学习 1.安 ...
- Python中常用的内值方法
1)min(2,4) ## 求最小值 2)max(2,4) ## 求最大值3)sum(range(1,100,2)) ## 求和4)枚举:返回 ...
- (转)MapReduce Design Patterns(chapter 6 (part 2))(十二)
Chain Folding 这是对job 链的一种优化.基本上是一种大体规则:每条记录都会提交给多个mapper,或者给reducer然后给mapper.这种综合处理方法会节省很多读文件和传输数据的时 ...
- [AOP] 7. 一些自定义的Aspect - Circuit Breaker
Circuit Breaker(断路器)模式 关于断路器模式是在微服务架构/远程调用环境下经常被使用到的一个模式.它的作用一言以蔽之就是提高系统的可用性,在出现的问题通过服务降级的手段来保证系统的整体 ...
- 设计模式 - 代理模式(Proxy Pattern)
一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...
- proc介绍及问题分析
文件系统 基本介绍 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得到系统的信息,并可以改变内 ...
- 关于HTTPS理论和实践
Summary: HTTP 通信时,可能信息被监听.服务器或客户端身份伪装等安全问题,HTTPS 则能有效解决这些问题. 原始的HTTP连接的时候,因服务器与用户之间是直接进行明文传输,导致用户面临着 ...