zookeeper分布式锁的设计思路与实现

分布式锁有多种实现方式,比如通过数据库,redis都可以实现,作为分布式协同工具zookeeper也有着标准的实现方式.
设计思路:

  1. 每个客户端往/Locks下创建临时有序节点/Locks/Lock_,创建成功之后/Locks下面会有每个客户端对应的节点,如/Locks/Lock_0000000001
  2. 客户端取得/Locks下子节点,并进行排序,判断最前面的是否为自己,如果自己的锁节点在第一位,代表获取锁成功.
  3. 如果自己的锁节点不在第一位,则监听自己前一位的锁节点,例如自己锁节点Lock_000000002,那么监听Lock_000000001
  4. 当前一位锁节点(Lock_000000001)对应的科技迪阿敏执行完毕,释放了锁,将会触发监听客户端(Lock_000000002)的逻辑
  5. 监听客户端重新执行第二步逻辑,判断自己是否获得了锁

zookeeper的分布式唯一id以及分布式配置中心的案例github链接 欢迎star

代码如下

package com.sofency.top;

import org.apache.zookeeper.*;

猜你喜欢

转载自blog.csdn.net/qq_43079376/article/details/108696737