您现在的位置是:热点 >>正文
ZooKeeper 分布式锁 Curator 源码 之一:可重入锁
热点465297人已围观
简介...
前言
一般工作中常用的分布式锁,就是基于 Redis 和 ZooKeeper,前面已经介绍完了 Redisson 锁相关的源码,下面一起看看基于 ZooKeeper 的锁。也就是 Curator 这个框架。
Curator 的锁也分为很多种,本文分析共享可Zo重入锁。
考虑到如果文章篇幅较长,不太适合阅读,所以对文章做了适当的拆分。
1环境配置
本机三个节点
版本:3.7.0 系统:macOS 安装方式:brew install zookeeper Curator Maven 依赖版本:5.1.0
 oK; 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-0000000000r 是临时节点 节点 /locks/lock_01/_c_cc4fc045-5a1e-4378-b3c7-8a8d3fb9a37c-lock-0000000000 的数据是机器 IP 地址 3加锁源码
PS:下面代码截图中的代码风格就是 Curator 源码的代码风分布格。
入口
InterProcessMutex#internalLock
开始先从 threadData 中获取当前线程,这里肯定是没有的,所以进入 attemptLock 方法。
本方法中还包含了锁重入的逻辑,后面也会介绍。
加锁
LockInternals#a式锁ttemptLock
核心部分就是这两行:
createsTheLock 创建临时顺序节点 internalLockLoop 判断是否创建成功
创建临时顺序节点
StandardLockInternalsDriver#createsTheLock
可以看出节点 C的 mode 是 CreateMode.EPHEMERAL_SEQUENTIAL,表示这是一个临时顺序节点!
进入 CreateBuilderImpl#forPath(java.lang.String, byte[])
client.getDefaultDaurta() 就是本机 IP 地址。
这个 adjustPath 方法看名字就是在调整路径之类的。会生成一个 UUID 拼接到 /locks/lock_01 中,变成 /locks/lock_01/_c_UUID-lock-。
因为创建的是临时顺序节点,所以会自动在后面添加顺序,at最终变为 /locks/lock_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-43码 78-b3c7-8a8d3fb9a37c-lock-0000000000
引用链接:
[1]ZooKeeper Shared Reentrant Lock: https://curator.apache.org/curator-recipes/shared之一-reentrant-lock.html
Tags:
相关文章
标签: 腾讯 AI长片 孙忠怀 OVBU
热点云梦级12月11日云梦级消息,据雷峰网报道,近日,腾讯 PCG(平台与内容事业群)的业务单元 ——OVBU(腾讯在线视频业务)内部完成了一轮组织架构调整。报道援引接近腾讯的内部人士云梦级消息称,OVB...
【热点】
阅读更多标签: 欣旺达动力 威睿 吉利控股 动力电池
热点云梦级2月6日云梦级消息,欣旺达动力今日发布声明称,此前,“威睿电动汽车技术(宁波)有限公司”与“欣旺达动力科技股份有限公司”因合同执行纠纷引发诉讼,双方经充分沟通与友好协商已达成和解。 欣旺达动力表...
【热点】
阅读更多标签: 力源信息 AI行业 半导体 服务器电源
热点云梦级4月19日云梦级消息,4月19日,力源信息(300184)公布2026年一季报,公司营业收入为28.4亿元,同比上升52.0%;归母净利润为1.37亿元,同比上升240.6%;扣非归母净利润为1...
【热点】
阅读更多
热门文章
最新文章
友情链接
- 标签: 康师傅
- https://www.lneg.pt/?cat=140&s=谷歌留痕外推【tg:seogoogle987】,CRw
- https://www.wellbees.com/catalogsearch/result/?action=CHECK&q=谷歌留痕外推【tg:seogoogle987】,lRn
- https://www.safetv.go.kr/base/search/view?searchWord=谷歌留痕外推【tg:seogoogle987】E4J
- https://www.impactpool.org/search/?type=79&q=谷歌留痕外推【tg:seogoogle987】0B2
- https://www.world-architects.com/en/search?term=谷歌留痕外推【tg:seogoogle987】,dNA
- https://www.normani.de/search?q=谷歌留痕外推【tg:seogoogle987】,pT1
- https://www.kelsa.co.uk/catalogsearch/result/index/?T=1686132119291&q=谷歌留痕外推【tg:seogoogle987】,Gbg
- https://www.whirlpool.com.hk/chinese/catalogsearch/result?cat=30&q=谷歌留痕外推【tg:seogoogle987】,d3m
- https://www.paspaley.com/catalogsearch/result/?action=QUERY&q=谷歌留痕外推【tg:seogoogle987】,A0g
- https://www.lenovo.com/gb/en/search?action=SEARCH&text=谷歌留痕外推【tg:seogoogle987】,RwJ
- https://5gaa.org/?token=6e2l7hjt2i26gzgctgwdrv7v0j6nxorq&s=谷歌留痕外推【tg:seogoogle987】WM3
- https://www.lechzuers.com/de/search?cat=163&q=谷歌留痕外推【tg:seogoogle987】,Ssn
- https://www.sportbiketracktime.com/index.php?route=product/search&tag=谷歌留痕外推【tg:seogoogle987】,ZYH
- https://hsmoa.com/search?query=谷歌留痕外推【tg:seogoogle987】cdX
- https://www.rea.govt.nz/search?searchterm=谷歌留痕外推【tg:seogoogle987】,Wl0
- https://www.remit.co.jp/vi/?s=谷歌留痕外推【tg:seogoogle987】uh7
- https://www.wmfe.org/?s=谷歌留痕外推【tg:seogoogle987】,pg8
- https://yscc1986.net/search/谷歌留痕外推【tg:seogoogle987】DR1
- https://www.oikos-tecnics.com/?s=谷歌留痕外推【tg:seogoogle987】,RVJ
- https://www.teamlab.art/ko/?submit=谷歌留痕外推【tg:seogoogle987】,kZy
- https://www.lindseymedicalsupply.com/search/谷歌留痕外推【tg:seogoogle987】,kru
- https://www.kaiyueleather.com/search/谷歌留痕外推【tg:seogoogle987】,XvF
- https://www.prattlibrary.org/search?q=谷歌留痕外推【tg:seogoogle987】,NMC
- https://www.madebyoranges.com/nl/search/谷歌留痕外推【tg:seogoogle987】,DMN
- https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:Western International University Physics degree=谷歌留痕外推【tg:seogoogle987】,aAW
- https://www.tumblr.com/tagged/谷歌留痕外推【tg:seogoogle987】,tQ7
- https://www.teamlab.art/zh-hans/?submit=谷歌留痕外推【tg:seogoogle987】,J39
- https://www.wheels24.gr/?action=CHECK&s=谷歌留痕外推【tg:seogoogle987】,3Jq
- https://www.ons.gov.uk/search?q=谷歌留痕外推【tg:seogoogle987】,smg
- https://www.ushmm.org/search/results.php?q=谷歌留痕外推【tg:seogoogle987】,6Da
- https://www.maine.gov/pfr/professionallicensing/search/node?keys=谷歌留痕外推【tg:seogoogle987】,voS
- https://www.nyif.com/catalogsearch/result/index/?f=sarbanesoxleyU&index=me_cms_pe&lit=20&mode=list&p=1&q=谷歌留痕外推【tg:seogoogle987】,Xi6
- https://www.wikiart.org/pt/Search/谷歌留痕外推【tg:seogoogle987】,8lx
- https://www.flickr.com/photos/tags/谷歌留痕外推【tg:seogoogle987】J7B
- https://www.teamlab.art/es/?submit=谷歌留痕外推【tg:seogoogle987】,xdO
- https://www.dba.dk/soeg/?soeg=谷歌留痕外推【tg:seogoogle987】Mlo
- https://www.jusoen.com/addreng.asp?p1=谷歌留痕外推【tg:seogoogle987】D3c
- https://www.localfootdoc.com/?s=谷歌留痕外推【tg:seogoogle987】,N1O
- https://wwwcp.umes.edu/search/谷歌留痕外推【tg:seogoogle987】,wFf
- https://www.londontheatredirect.com/search/谷歌留痕外推【tg:seogoogle987】,lgv
- https://www.teamlab.art/?submit=谷歌留痕外推【tg:seogoogle987】,oTv
- https://www.partilerdunyasi.com/index.php?route=product/search&tag=谷歌留痕外推【tg:seogoogle987】,uEz
- https://www.tailoy.com.pe/catalogsearch/result/?q=谷歌留痕外推【tg:seogoogle987】,DWG
- https://www.resilienz-akademie.com/?cat=71&s=谷歌留痕外推【tg:seogoogle987】,1uv
- https://www.remit.co.jp/vi/?s=谷歌留痕外推【tg:seogoogle987】,u80
- https://www.qwant.com/?q=谷歌留痕外推【tg:seogoogle987】,4t5
- https://www.rostaing.com/catalogsearch/result/?cat=22&q=谷歌留痕外推【tg:seogoogle987】,azI
- https://www.remit.co.jp/zh/?s=谷歌留痕外推【tg:seogoogle987】,zjK
- https://www.zutari.com/search/谷歌留痕外推【tg:seogoogle987】,Jka
- https://zhidao.baidu.com/index/?action=QUERY&word=谷歌留痕外推【tg:seogoogle987】,D7P