zookeeper-watcher、事务、分布式锁的 API 使用
watcherAPI
curator 提供了两种 Watcher(Cache)来监听结点的变化:
Node Cache : 只是监听某一个特定的节点,监听节点的新增和修改
PathChildren Cache : 监控一个 ZNode 的子节点. 当一个子节点增加, 更新,删除时, Path Cache 会改变它的状态, 会包含最新的子节点, 子节点的数据和状态
new NodeCache(arg1,arg2) :arg1:连接对象、arg2:监视节点的路径
nodeCache.start(): 启动监视器对象
addListener(): 节点变化时的回调方法
另外也可以定义监视子节点的方法,不同的地方是:
其中第三个参数用于设置事件中是否可以获取节点的数据
zookeeper 事务
将两次创建节点合并为了一个原子操作,只有都创建成功后事务才会提交,否则会回滚,两个节点都不会创建成功
分布式锁
首先 zookeeper 实现分布式锁有两种类型,一种是排它锁,另一种是读写锁。
InterProcessMutex:分布式可重入排它锁
InterProcessReadWriteLock:分布式读写锁
定义并获取排它锁:
代码释义:new InterProcessMutex(arg1,arg2) : 定义排它锁
interProcessLock.acquire() : 获取排它锁
interProcessLock.release() : 释放排它锁
定义并获取读锁:
代码释义:new InterProcessReadWriteLock: 定义读写锁
lock.readLock(): 获取读锁对象
interProcessLock.acquire() :获取读锁
interProcessLock.release() : 释放读锁
定义并获取写锁:
代码释义:new InterProcessReadWriteLock: 定义读写锁
lock.writeLock(): 获取写锁对象
interProcessLock.acquire() :获取读锁
interProcessLock.release() : 释放读锁
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/e8eb3b75ef3db2419467d6e09】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论