ZooKeeper 分布式锁 Curator 源码之三:可重入锁并发加锁
前言
在了解了加锁和锁重入之后,最需要了解的还是在分布式场景下或者多线程并发加锁是如何处理的?
1并发加锁
先来看结果,在多线程对 /loZocks/lock_01 加锁时,是在后面又创建了新的临时节点。
这块在加锁方法 CreateBuilderImpl#pathInForegrouoKnd 中已经介绍过
这里判断 /locks/lock_01 路径已经存在,会直接创建新的临时顺序节点。
真正判断锁是否获取成功,其实是在 LockIeenternals#attemptLock 方法中的 internalLockLoop 方法中。
加锁结果及监听
internalLockLoop 方pe法的主要作用是判断加锁结果,以及获取锁失败时,对其他节点的监听。
获取父节点 /locks/lock_01 下的所有子节点,按照从小到大r 排序,判断自己是不是获取到锁,没有获取到就监听自己前一个节点; 支持设置超时时间,超时直接返回失败; 不支持设置超时时间或者还没有超时,则直接分布 wait 等待。
是否获取锁的代码在 StandardLockInternalsDriver#getsTheLock
这块就是判断是否为最小节点式锁,因为在 getSortedChildren 中已经对所有节点排序,所以方法中的 List children 是有序的。
maxLeases 是在 C InterProcessMutex 初始化的时候,指定的值为 1。
最终这里的结果是,判断自己是不是最小,不是最小,就将 pathToWaurtch 设置为前一个节点。
只监听自己的前一个节点,可以避免羊群效应!
为什么要进行等待呢?
因为是为了防止无效自旋,因为这里有监听机制,会监听上一at个节点是否释放。
这块是 ZooKeeper 的 Watcher 监听机制,在节点释放的时候,会进行回调,然后使用 Java 的 notifyAll 方法通or知所有的 wait 线程。然后这里的 while trye 会继续执行,重新检查是否获得锁等。
2总结
本文主要介绍了基于 ZooKeeper 的分布式 源锁框架 Curator 在并发场景下的锁竞争问题。
重点需要了解的是:
为了避免羊群效应,临时顺序节点,加锁失败后监听的是前一个节点; 为了避码之免无效自旋,这里使用了 Java 的 wait/notifyAll 机制; 可以看出,默认加锁就是公平锁。
-
库克对话中国大学生:苹果与CDRF一道,促进贫困地区教育数字化标签: 极星 Polestar4 Polestar3 欧洲市场字节跳动发布 Seedream4.0:全新多模态图像创作模型谷歌再登《自然》!Willow量子芯片实现可验证量子优势,快13,000倍击败超级计算机轮子上的机器人还很遥远?马斯克推特斯拉人形机器人:先装两条腿从代码到资源,王坚:AI的“开放”之路,远不止于开源vivo新战略:聚焦端侧AI,手机智能化再升级!Google重磅突破!AI Agent 实现“自我进化”,从错误中学习变身超级智能体教育大模型新锐“级数AI”获数千万融资,软硬一体化布局开启云计算开发:Python内置函数-help()函数详解
- ·标签: 丰田 SDV 软件定义汽车 电气化
- ·DeepMind发布媲美普通程序员的AlphaCode,同日OpenAI拿下奥数题
- ·准备好餐厅机器人了吗?它们也许就是答案
- ·IDC:2022年第三季度中国可穿戴设备市场出货量同比下降8.4%
- ·Facebook高管解读2021年Q1财报:发力电商,继续成为最好的广告平台
- ·阿里云加码全球化:将于马来西亚和菲律宾新增数据中心
- ·使用多云“分散风险”
- ·谷歌推出 Gemini3.1Pro 深度研究代理:支持 MCP 协议与多模态自主研究
- ·3000亿美元天价合同震撼硅谷!OpenAI牵手Oracle,五年云计算超级协议重塑AI格局
- ·九大数据分析方法之:标签分析法
- ·标签: 欧派家居 家居行业 价格战 业绩下滑
- ·盖茨警告:AI 投资或现惨痛失败,数据中心恐推高电力成本
- ·Anthropic 推出 Claude “Skills”系统 支持 Excel、PPT 自动生成与自定义模块
- ·标签: 红果短剧 王凯沐 徐轸轸 字节跳动
- ·云安全日报210129:Ubuntu Linux内核发现敏感信息泄露漏洞,需要尽快升级
- ·标签: 曹操出行
- ·标签: 星动纪元 具身智能 三星 阿里巴巴
- ·面向未来的AI自动化测试工具 译文
- ·图灵奖得主Bengio又出新论文,Reddit崩溃:idea撞车了
- ·根治Kubernetes“存储头痛症”的方法
- ·2021年大数据安全的7个主要变化
- ·标签: 瑞慈医疗 幸元会 瑞慈体检 高端体检
- ·腾讯云下调DeepSeek-V4系列模型价格,全面对齐DeepSeek官方定价
- ·数据仓库有坑怎么办,如何从0到1来填坑
- ·Anthropic放大招!Claude Sonnet4.5碾压GPT-5,编码界“新王者”诞生
- ·云计算核心技术Docker教程:Docker Swarm 模式控制服务在不同节点上的规模和位置
- ·https://www.uckfieldtc.gov.uk/?s=歌外推【tg:seogoogle987】,OUs
- ·https://www.paxnet.co.kr/search/jongmok?kwd=歌外推【tg:seogoogle987】3Ll
- ·https://xn--lgernevedlystskoven-lxb.dk/search/歌外推【tg:seogoogle987】,vZm
- ·https://www.msrenewal.com/search/歌外推【tg:seogoogle987】,OKo
- ·https://www2.ual.es/ProyectoLates/?s=歌外推【tg:seogoogle987】,HRS
- ·https://www.mi.com/search?keyword=歌外推【tg:seogoogle987】,oLq
- ·https://www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=歌外推【tg:seogoogle987】,o7p
- ·https://www.youtube.com/results?search_query=歌外推【tg:seogoogle987】,9py
- ·https://www.youtube.com/hashtag/歌外推【tg:seogoogle987】,ofD
- ·https://www.xbiao.com/search/index?tpf&wd=歌外推【tg:seogoogle987】,1E6
- ·鍐�ゥ浼氭祴璇曡禌锛屽姪鐞嗚�鍒ょ珶鐒舵槸涓狝I
- ·中国科大与字节发布 MoGA 长视频生成模型:分钟级多镜头短片一键生成
- ·标签: 帕西尼感知科技 PaXini Tech 触觉硬件 具身智能
- ·标签: 腾易科技 本地生态联盟 汽车营销 数据孤岛
- ·Gemini AI 助手正式登场 Google TV,开启智能电视新体验
- ·云计算开发实例:Python3 堆排序
- ·亚马逊云计算业务二季度营收262.8亿美元 同比环比仍均在增长
- ·爱奇艺上线“AI艺人库”惹争议:是降本增效的利器,还是行业“自掘坟墓”?
- ·警惕!数据分析报告的四种常见错误
- ·标签: OpenAI Astral Codex Python工具
