首页 > 其他 > 详细

《zookeeper》之分布式锁

时间:2020-12-14 18:48:08      阅读:26      评论:0      收藏:0      [点我收藏+]

排它锁

 

定义锁:

通过zookeeper上的数据节点来表示一个锁,例如/exclusive_lock/lock节点就可以定义为一个锁。

 

获取锁:

在获取排它锁时,所有的客户端都试图在/exclusive_lock节点下创建临时子节点/exclusive_lock/lock

1)只有一个客户端能够创建成功,那么就认为该客户端获取了锁。

2)同时,没有获取到锁的客户端需要到/exclusive_lock 节点上注册一个子节点变更的watcher监听,以便实时的获取到lock节点的变更情况。

 

释放锁:

在定义锁的时候,/exclusive_lock/lock是一个临时节点,在以下情况下,会释放锁:

1)当前获取锁的客户端发生宕机,zookeeper上的这个临时节点就会被移除

2)正常执行完业务逻辑后,客户端就会主动将自己创建的临时节点删除

移除lock节点,zookeeper就会通知所有在/exclusive_lock节点上注册子节点变更watcher监听的客户端。

这些客户端在接受到通知后,再次重新发起分布式锁的获取。

 

《zookeeper》之分布式锁

原文:https://www.cnblogs.com/zrzct/p/14133330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!