zookeeper详解(3)
zookeeper详解
- 权限模式(Scheme):授权的策略
- 授权对象(ID):授权的对象
- 权限(Permission):授予的权限
所谓的ACL就是每个Znode创建时都会有一个列表,用于决定谁可以对它执行何种操作。
什么是Zookeeper中的Watch
Watcher在Zookeeper中是一个核心的功能,Watcher可以监控目录节点变化以及目录的变化。一旦这些状态发生变动,服务器就会通知所有设置在这个目录节点上的Watcher,从而每个客户端可以很快知道它所关注的目录节点的状态发生了变化,以便做出对应的处理。
- 在Zookeeper中可以设置观察的操作有:
exists、getChildren、getData - 在Zookeeper中可以触发观察的操作有:
create、delete、setData
Zookeeper中的Watch整体思路很像是分布式环境下的观察者模式。
Watch在客户端的大致实现流程
- 客户端会发送请求将信息封装成Packet对象。
- 发送时会采用Java NIO/Netty的方式,如果注册了Watch,会向服务器发送Watch信息
- 发送完成后,客户端通过回调方法获取
ZKWatchManager中对应的Watch Map,在Map中注册相关的Watch。
注意:getWatch的过程没有加锁,注册Watch时通过synchronized关键字来保证原子性。因为只有写操作下才有可能出现线程安全问题。
Watch在服务端大致的实现流程
- 当Zookeeper服务端接收到一个客户端请求时,首先会对请求进行解析,判断该请求中是否包含了Watch事件,如果包含,则将Watch事件存储到
WatchManager中。 - 在Zookeeper中底层是通过
FinalRequestProcessor#processRequest方法实现的。
利用Zookeeper的Watch机制衍生的应用有哪些
- 配置中心
我们可以把类似数据库配置信息存储在Zookeeper数据节点中。服务器集群客户端对该节点添加Watch事件监控,当即群众的服务启动时,会读取该节点数据获取数据配置信息。而当该节点数据发生变化时,【Zookeeper服务器会发送Watch事件给各个客户端(推)】,集群中的客户端在接收到该通知后,【重新读取节点中的数据库配置信息(拉)】
- 注册中心
Dubbo项目中采用Zookeeper作为注册中心(CP),原理和配置中心类似,其与Eurka的AP设计形成了鲜明对比。
Zookeeper是如何保证创建节点的唯一性的
Zookeeper主要通过两方面来保证节点创建的唯一性:
- 所有的写请求都会由Leader进行,即使是请求到Follower节点,也会被转发到Leader节点上执行
- 在Leader上写入数据的时候,通过加锁(synchronized)和CAS(ConcurrentHashMap)操作,保证了并发情况下只有一个线程添加成功
相关阅读
-
什么是跨站脚本 XSS攻击?
为网友解答什么是跨站脚本的相关话题,下面为详细的介绍。 跨站脚本(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用该漏洞在受害者的网页中插入恶意脚本,从而能够获取
-
dns服务器未响应怎么修复 分享dns未响应最简单的修复办法
今天为大家介绍dns服务器未响应怎么修复和分享dns未响应最简单的修复办法的教程内容,继续往下看吧! 很多人在浏览网页时,经常会遇到DNS服务器未响应的情况,那么什么是DNS服务器?DNS未
-
HTTP状态码深入解析:401 Unauthorized
为大家介绍HTTP状态码深入解析的教程内容,接下来一起来看看吧。 在互联网通信中,HTTP状态码是用来表示服务器响应的一种方式。 当我们在浏览器中访问网页时,服务器会返回一个状态码,
-
个人网站备案流程 工信部个人网站备案过程讲解
您可能不了解个人网站备案流程和工信部个人网站备案过程讲解的IT小经验,继续往下看吧! 嗨,大家好,我是希留。 前面文章介绍了下使用https访问网站的相关配置,然后发现访问https时灵时


