当前位置: 代码网 > it编程>编程语言>Java > ZK(ZooKeeper)分布式锁实现,史上超级详细

ZK(ZooKeeper)分布式锁实现,史上超级详细

2024年08月06日 Java 我要评论
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料25881)][外链图片转存中…(img-V9m0bH3J-1711985225882)][外链图片转存中…(img-41bDzCZN-1711985225882)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

在这里插入图片描述

当然除了 clienta、clientb还有c\d\e等,这字母看着好奇怪又好熟悉,原理都是一样的,都是最小节点进行解锁,如果不是,监听前一个节点是否释放,如果释放了,再次尝试加锁。如果前一节节点释放了,自己就是最小了,就排到前面去了,有点类似于 银行取号 的操作。

代码实现


使用zookeeper 创建临时顺序节点来实现分布式锁,大体的流程就是 先创建一个持久父节点,在当前节点下,创建临时顺序节点,找出最小的序列号,获取分布式锁,程序业务完成之后释放锁,通知下一个节点进行操作,使用的是watch来监控节点的变化,然后依次下一个最小序列节点进行操作。

首先我们需要创建一个持久父类节点:我这里是 /mxn

在这里插入图片描述

watchcallback

import org.apache.zookeeper.*;

import org.apache.zookeeper.data.stat;

import java.util.collections;

import java.util.list;

import java.util.concurrent.countdownlatch;

/**

  • @program: mxnzookeeper

  • @classname watchcallback

  • @description:

  • @author: 微信搜索:牧小农

  • @create: 2021-10-23 10:48

  • @version 1.0

**/

public class watchcallback implements watcher, asynccallback.stringcallback ,asynccallback.children2callback ,asynccallback.statcallback {

zookeeper zk ;

string threadname;

countdownlatch cc = new countdownlatch(1);

string pathname;

public string getpathname() {

return pathname;

}

public void setpathname(string pathname) {

this.pathname = pathname;

}

public string getthreadname() {

return threadname;

}

pu

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com