赞
踩
创建临时顺序节点执行create -e -s /znode
即可实现分布式锁。
如果有大量的节点都想实现写锁,且最小节点已经实现了锁,那么会有大量节点监听zk中的最小节点,会造成大量节点的并发访问,对zk的压力非常大–羊群效应。
解决方法:将上述的获取写锁的方式,调整为链式监听。
有点类似于 juc 里的写锁获取的方式
使用 get -w /znode
参数,可以监听一次 znode 节点的变化,类似于把 Watch注册成了znode 的触发器。当调用create
,delete
或set
时,会触发 znode 上的注册的对应事件,请求 Watch 的客户端就会收到异步通知。
只能监听到当前节点的变化,不能监听到当前节点的子节点的变化
客户端使用了 NIO 通信模式监听服务的调用。
一次性
无论是服务端还是客户端,一旦一个 Watcher 被 触 发 ,Zookeeper 都会将其从相应的存储中移除。这样的设计有效的减轻了服务端的压力
轻量
异步
Watch 机制被触发后,另一端异步的发送事件的变化。
由于网络延迟或其他因素导致客户端在不同的时刻监听到事件变化,zookeeper只能保证最终的一致性,而无法保证强一致性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。