标签:ret children override 会话 moni 唤醒 enc 多个 无法找到
Curator
是ZooKeeper
的一个客户端框架,其中封装了分布式互斥锁
的实现,最为常用的是InterProcessMutex
,本文将对其进行代码剖析
InterProcessMutex
基于Zookeeper
实现了分布式的公平可重入互斥锁
,类似于单个JVM进程内的ReentrantLock(fair=true)
1
|
// 最常用
|
1
|
// 无限等待
|
1
|
private boolean internalLock(long time, TimeUnit unit) throws Exception{
|
1
|
// 映射表
|
1
|
// 锁信息
|
1
|
// 尝试获取锁,并返回锁对应的Zookeeper临时顺序节点的路径
|
1
|
// From StandardLockInternalsDriver
|
1
|
// 循环等待来激活分布式锁,实现锁的公平性
|
1
|
// From StandardLockInternalsDriver
|
1
|
// From LockInternals
|
1
|
// From LockInternals
|
弄明白了获取锁的原理,释放锁的逻辑就很清晰了
1
|
public void release() throws Exception{
|
1
|
void releaseLock(String lockPath) throws Exception{
|
1
|
// Class:LockInternals
|
InterProcessMutex
的特性
Zookeeper
)监听上一临时顺序节点
+ wait() / notifyAll()
)基于Zookeeper实现的分布式互斥锁 - InterProcessMutex
标签:ret children override 会话 moni 唤醒 enc 多个 无法找到
原文地址:https://www.cnblogs.com/a-du/p/9876314.html