Apache Curator 锁定并发生在之前
Apache Curator lock and happens before
假设我是一个动物园管理员客户端,create/update/delete 一些动物园管理员(持久)节点持有锁(InterProcessMutex)。是否保证在我释放后获得相同锁的另一个客户端将看到我的修改?
我假设答案是肯定的,因为锁定释放发生在每个 zookeeper 服务器上的节点更新之后,但是任何人都可以证实这个假设吗?
让我们来看看(使用客户端 A 和 B):
- A和B争夺锁,A获得锁
- B现在锁上了一块优秀的手表
- A修改了一些ZNode
- A释放锁(也就是删除他的锁ZNode)
- B 的锁观察器(由 Curator 管理)收到通知
在第 5 步,B 保证看到在 A 的锁定节点被删除之前发生的所有修改,因为 ZooKeeper 保证消息排序。所以,你的问题的答案是肯定的。
假设我是一个动物园管理员客户端,create/update/delete 一些动物园管理员(持久)节点持有锁(InterProcessMutex)。是否保证在我释放后获得相同锁的另一个客户端将看到我的修改?
我假设答案是肯定的,因为锁定释放发生在每个 zookeeper 服务器上的节点更新之后,但是任何人都可以证实这个假设吗?
让我们来看看(使用客户端 A 和 B):
- A和B争夺锁,A获得锁
- B现在锁上了一块优秀的手表
- A修改了一些ZNode
- A释放锁(也就是删除他的锁ZNode)
- B 的锁观察器(由 Curator 管理)收到通知
在第 5 步,B 保证看到在 A 的锁定节点被删除之前发生的所有修改,因为 ZooKeeper 保证消息排序。所以,你的问题的答案是肯定的。