zk实现分布式锁
1个回答
展开全部
常见的几种分布式锁的实现方案,Redis、Mysql 、zookeeper;
本文主要讲的是如何使用zk实现分布式锁:
具体思路:
1、首先zookeeper中我们可以创建一个/distributed_lock持久化节点
2、然后再在/distributed_lock节点下创建自己的临时顺序节点,比如:/distributed_lock/task_00000000008
3、获取所有的/distributed_lock下的所有子节点,并排序
4、判读自己创建的节点是否最小值(第一位)
5、如果是,则获取得到锁,执行自己的业务逻辑,最后删除这个临时节点。
6、如果不是最小值,则需要监听自己创建节点前一位节点的数据变化,并阻塞。
7、当前一位节点被删除时,我们需要通过递归来判断自己创建的节点是否在是最小的,如果是则执行5);如果不是则执行6)(就是递归循环的判断)
主要包括了zk客户端的依赖,mybatis-plus的依赖。
分布式锁工具类
具体业务实现
至此一个简单的分布式锁的demo已经实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询