ZooKeeper 分布式锁 Curator 源码 之一:可重入锁
前言
一般工作中常用的分布式锁,就是基于 Redis 和 ZooKeeper,前面已经介绍完了 Redisson 锁相关的源码,下面一起看看基于 ZooKeeper 的锁。也就是 Curator 这个框架。
Curator 的锁也分为很多种,本文分析共享可Zo重入锁。
考虑到如果文章篇幅较长,不太适合阅读,所以对文章做了适当的拆分。
1环境配置
本机三个节点
版本:3.7.0 系统:macOS 安装方式:brew install zookeeper Curator Maven 依赖版本:5.1.0
&nboKsp; org.apache.curator curator-recipes 5.1.0 ee 2加锁示例
详细信息可参考官方文档[1]。
加锁前
在加锁之前,ZooKeeper 仅有一个节点 /zookeeper。
加锁中
在 /locks/lock_01 路径上加锁。
加锁之后:
创建了一个 /locks/lock_01 的持久节点,节点下有一个子节点 _c_cpec4fc045-5a1e-4378-b3c7-8a8d3fb9a37c-lock-0000000000 节点 /locks/lock_01/_c_cc4fc045-5a1e-4378-b3c7-8a8d3fb9a37c-lock-000000000r 0 是临时节点 节点 /locks/lock_01/_c_cc4fc045-5a1e-4378-b3c7-8a8d3fb9a37c-lock-0000000000 的数据是机器 IP 地址 3加锁源码
PS:下面代码截图中的代码风格就是 Curator 源码的代码风格。
入分布口
InterProcessMutex#internalLock
开始先从 threadData 中获取当前线程,这里肯定是没有的,所以进入 attemptLock 方法。
本方法中还包含了锁重入的逻辑,后面也会介绍。
加锁
LockInternals#attempt式锁Lock
核心部分就是这两行:
createsTheLock 创建临时顺序节点 internalLockLoop 判断是否创建成功
创建临时顺序节点
StandardLockInternalsDriver#createsTheLock
可以看出节点的 mode 是 Cre CateMode.EPHEMERAL_SEQUENTIAL,表示这是一个临时顺序节点!
进入 CreateBuilderImpl#forPath(java.lang.String, byte[])
client.getDefaultData() 就是本机 IP 地址。
这ur个 adjustPath 方法看名字就是在调整路径之类的。会生成一个 UUID 拼接到 /locks/lock_01 中,变成 /locks/lock_01/_c_UUID-lock-。
因为创建的是临时顺序节点,所以会自动在后面添加顺序,最终变为 /locks/latock_01/_c_UUID-lock-0000000000。
具体创建节点是在 CreateBuilderImpl#pathInForeground 中。
创建临时节点,如果路径存在,会创建成功,如果路径不存在会创建失败;
创建失败后,先创建路径,再创or建节点。
4总结
本篇文章主要介绍了基于 ZooKeeper 的分布式锁框架 Curator 的使用,以及加锁流程,源码分析。
下面对内容做下总结:
重点需要关注的是:
基于 ZooKeeper 的分布式锁,是使用的临时顺序节点,父节点是持久节点; 创建临时节点时,父 源节点不存在,会先创建父节点(路径); 锁的组成结构为:对 /locks/lock_01 加锁,实际锁住的是 /locks/lock_01/_c_UUID-lock-序号,举例为 /locks/lock_01/_c_cc4fc045-5a1e-4378-b3c码 7-8a8d3fb9a37c-lock-0000000000
引用链接:
[1]ZooKeeper Shared Reentrant Lock: https://curator.apache.org/curator-recipes/shared-reentra之一nt-lock.html
- ·标签: 追觅科技 俞浩 小红书 SEO关键词
- ·亚马逊CEO贝索斯最后一封年度股东信:还要为员工做得更多
- ·标签: 迪哲医药 舒沃哲 高瑞吉 EGFR TKI
- ·标签: 大疆 影石创新 无人机专利 专利权属纠纷
- ·Twitter Spaces社交语音聊天功能抢先Clubhouse登陆安卓平台
- ·半数英国成年人担忧 AI 对就业的影响,工会呼吁更大参与
- ·谷歌将应用商店开发者每年首次100万美元收入抽成减少至15%
- ·标签: 万辰集团
- ·谷歌收集iPhone数据遭起诉 英国最高法院驳回
- ·标签: 京东物流 2025Q3 一体化供应链 云仓
- ·标签: 雷诺集团 雷诺品牌 电动化 全球销量
- ·强势登上Github热榜,这个数据可视化分析平台火了!
- ·IDC:2021 年中国平板电脑市场预计全年增长 22.4%
- ·微软员工分享薪资数据:Cloud + AI 部门平均薪资突破20万美元
- ·英伟达发布Jetson Thor机器人计算平台 算力提升7.5倍售价2.5万元
- ·阿里云打假:目前通义系列产品免费 要收费充值的都是山寨应用
- ·标签: Meta Limitless Rewind Mac AI穿戴设备
- ·Epic Games在澳大利亚起诉谷歌
- ·Mistral 推出新型企业 AI 助手 Le Chat Enterprise 和 Medium 3 模型
- ·为什么 Kubernetes 要替换 Docker
- ·OpenAI收购Xcode AI工具Alex团队 人才收购成科技巨头常态
- ·1Password 推出新功能可以修复 AI 浏览器代理的登录安全性
- ·标签: 英矽智能 Pharma.AI Biotech AI制药
- ·标签: 德尔玛 小米 飞利浦 清洁电器
- ·Fish Audio 推出 S1 语音克隆模型升级:10 秒即可复刻真人语音
- ·标签: 埃森哲 Faculty AI初创 并购
- ·https://www.synonyms.com/antonyms/快排霸屏软件【tg:seogoogle987】,22E
- ·https://www.shacknews.com/editorial-search?q=快排霸屏软件【tg:seogoogle987】,yeT
- ·https://www.yidian51.com/taobao/快排霸屏软件【tg:seogoogle987】,kLn
- ·https://www.navymwr.org/search/?query=快排霸屏软件【tg:seogoogle987】,Jts
- ·https://www.tullygroup.us/?ID=hbkq8jFjrQlVRrwzEmvoUJJAY4e1Lfo5&s=快排霸屏软件【tg:seogoogle987】,Q4d
- ·https://www.lgnewsroom.com/search/快排霸屏软件【tg:seogoogle987】,TPx
- ·https://www.rea.govt.nz/search?searchterm=快排霸屏软件【tg:seogoogle987】,2Xa
- ·https://xehay.vn/tim-kiem/=快排霸屏软件【tg:seogoogle987】,y8F
- ·https://www.remit.co.jp/id/?s=快排霸屏软件【tg:seogoogle987】,cq1
- ·https://www.nbm.org/?action=QUERY&s=快排霸屏软件【tg:seogoogle987】,QLt
- ·标签: 法拉第未来 FF 91 FX Super One 洛杉矶车展
- ·Netflix财报强调AI战略:将生成式AI定位为创意辅助工具而非内容核心
- ·测绘无人机:对建筑行业的重新思考
- ·标签: 英飞凌 AI数据中心 电源解决方案 财报
- ·"最美产品经理"做AI化妆镜:宋紫薇离开vivo创业,瞄准时尚AI硬件市场
- ·一图生动画,人物无缝替换!Wan-Animate开源引爆AI视频革命,阿里黑科技免费玩转?
- ·从传统图引擎到GNN:计算图和机器学习的演变
- ·标签: 零跑汽车
- ·云安全日报220526:红帽HTTP加速器发现请求走私漏洞,需要尽快升级
- ·Anthropic支持加州 AI 安全法案,科技行业的反对声浪依旧
