ZooKeeper 分布式锁 Curator 源码之三:可重入锁并发加锁
前言
在了解了加锁和锁重入之后,最需要了解的还是在分布式场景下或者多线程并发加锁是如何处理的?
1并发加锁
先来看结果,在多线程对 /loZocks/lock_01 加锁时,是在后面又创建了新的临时节点。
这块在加锁方法 CreateBuilderImpl#pathInForegroKound 中已经介绍过
这里判断 /locks/lock_01 路径已经存在,会直接创建新的临时顺序节点。
真正判断锁是否获取成功,其实是在 LockeeInternals#attemptLock 方法中的 internalLockLoop 方法中。
加锁结果及监听
internalLockLopeop 方法的主要作用是判断加锁结果,以及获取锁失败时,对其他节点的监听。
获取父节点 /locks/lock_01 下的所有子节点,按照从小到大排r 序,判断自己是不是获取到锁,没有获取到就监听自己前一个节点; 支持设置超时时间,超时直接返回失败; 不支持设置超时时间或者还没有超时,分布则直接 wait 等待。
是否获取锁的代码在 StandardLockInternalsDriver#getsTheLock
这块就是判断是否为最式锁小节点,因为在 getSortedChildren 中已经对所有节点排序,所以方法中的 List children 是有序的。
maxLeases C 是在 InterProcessMutex 初始化的时候,指定的值为 1。
最终这里的结果是,判断自己是不是最小,不是最小,就将 pathToWuratch 设置为前一个节点。
只监听自己的前一个节点,可以避免羊群效应!
为什么要进行等待呢?
因为是为了防止无效自旋,因为这里有监听机制,at会监听上一个节点是否释放。
这块是 ZooKeeper 的 Watcher 监听机制,在节点释放的时候,会进行回调,然后使用 Java 的 notifyorAll 方法通知所有的 wait 线程。然后这里的 while trye 会继续执行,重新检查是否获得锁等。
2总结
本文主要介绍了基于 ZooKeeper 的 源分布式锁框架 Curator 在并发场景下的锁竞争问题。
重点需要了解的是:
为了避免羊群效应,临时顺序节点,加锁失败后监听的是前一个节点;码之 为了避免无效自旋,这里使用了 Java 的 wait/notifyAll 机制; 可以看出,默认加锁就是公平锁。
(责任编辑:年货节)
- 云安全日报210429:Ubuntu多媒体插件发现执行任意代码漏洞,需要尽快升级
- 韭菜花一般在几月上市
- 华为发布鸿蒙座舱 HarmonySpace 6:智能助手小艺全面升级,支持边开车边聊天!
- 英伟达“个人AI超级计算机”DGX Spark本周三发售,AI算力步入桌面时代
- 标签: 北京市场监管 6·18平台监管 平台经济治理 网络市场监管联席会议
- 难以置信!小冰数字孪生虚拟人直播70天,没人发现不是真人
- day到rua是什么梗
- 云安全日报211015:思科IP电话软件发现任意文件读取漏洞,需要尽快升级
- 标签: 滴滴 2026年一季度财报 中国出行 国际业务
- 标签: 东方甄选 董宇辉 孙进 知识带货
- 通义万相全新动作生成模型Wan2.2-Animate正式开源
- 第一个AI教堂关了!这位被川普特赦的谷歌前工程师曾为AI封神
- 云计算开发:Python3三角函数asin()方法详解
- Anthropic为Claude推出Skills功能:支持自定义技能包和代码执行,提升工作流自动化能力
- 标签: 夸克AI眼镜 支付宝 准心辅助 骨传导拾音
- 标签: 育碧 腾讯 Vantage工作室 刺客信条
- 美国华盛顿特区总检察官对亚马逊发起反垄断诉讼
- 谷歌广告业务第四季度强势复苏 YouTube观众人数大幅上升
- 标签: 美团 LongCat 豆包 DeepSeek
- 亚马逊云科技中国北京与宁夏两个区域实现100%采用可再生能源
- https://dict.naver.com/dict.search?dicQuery&query=谷歌霸屏教学【tg:seogoogle987】T0l views+
- https://www.wou.edu.my/?s=谷歌霸屏教学【tg:seogoogle987】,uwd views+
- https://www.ons.gov.uk/search?q=谷歌霸屏教学【tg:seogoogle987】,QhR views+
- https://www.remit.co.jp/en/?s=谷歌霸屏教学【tg:seogoogle987】,Dq4 views+
- https://www.remit.co.jp/vi/?s=谷歌霸屏教学【tg:seogoogle987】,l5G views+
- https://www.tcv.org.uk/search/谷歌霸屏教学【tg:seogoogle987】,wS9 views+
- https://www.teamlab.art/?submit=谷歌霸屏教学【tg:seogoogle987】,B6z views+
- https://www.xvideos.com/tags/谷歌霸屏教学【tg:seogoogle987】,wTN views+
- https://www.maafushidive.com?collections?vendors?q=谷歌霸屏教学【tg:seogoogle987】,OBz views+
- https://www.reginatangoshoes.com/en/catalogsearch/result/index/?T=1686132113407&q=谷歌霸屏教学【tg:seogoogle987】,D8s views+
