zk实现分布式锁

 我来答
抛下思念17
2022-06-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6484
采纳率:99%
帮助的人:36.8万
展开全部

常见的几种分布式锁的实现方案,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已经实现。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式