安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

如何用Zookeeper优雅地实现分布式锁?这下懂了1分钟系

3月19日 飞虹谷投稿
  在上一篇文章中,我们介绍了怎么使用Redis实现分布式锁。没看的小伙伴可以点击下面链接:
  前文阅读:《原来这就是分布式锁!这下懂了。。。1分钟系列》
  今天我们就介绍如何用Zookeeper来实现分布式锁?
  对Zookeeper不熟悉的同学,可以参考之前的文章:
  《Zookeeper到底是个什么鬼?这下懂了。。。1分钟系列》
  在此之前,我们首先要了解一下Zookeeper的临时顺序节点。
  让我们回顾一下Zookeeper节点的概念,Zookeeper的数据存储结构就像一棵树,树的节点叫做Znode。
  Znode分为四种类型:
  1、持久节点
  创建节点的客户端与zookeeper断开后,节点仍然存在。
  2、持久节点顺序节点
  所谓顺序,就是在创建节点时,Zookeeper根据创建的时间顺序给该节点名称进行编号。没办法,到哪都得排资论辈
  3、临时节点
  持久节点是有编制的合同工,临时节点就是跑龙套的群众演员。当创建节点的客户端与zookeeper断开后,临时节点就会被删除:
  4、临时顺序节点
  最悲催的存在,结合了临时节点和顺序节点的特点:创建节点时,Zookeeper根据创建的时间顺序给该节点名称进行编号;当创建节点的客户端与zookeeper断开后,临时节点就会被删除。
  Zookeeper分布式锁恰恰利用了临时顺序节点。具体是怎么实现的呢?让我们来看一下:
  获取锁
  首先,在Zookeeper当中创建一个持久节点ParentLock。当第一个客户端想要获得锁时,需要在ParentLock这个节点下面创建一个临时顺序节点Lock1。
  之后,Client1查找ParentLock下所有的临时顺序节点,并排序。判断自己创建的节点Lock1是不是最靠前的一个?如果是则成功获得锁。
  这时,如果再有一个客户端Client2想要获取锁,则在ParentLock下再创建一个临时顺序节点Lock2。
  Client2同样查找并判断自己所创建的节点Lock2是不是最靠前的一个?结果发现它前面有一个Lock1。
  于是,Client2抢锁失败,进入等待状态。它向Lock1注册监听,等待前面的锁释放。
  如果这时,又有一个客户端Client3前来获取锁,则会再创建一个临时顺序节点Lock3。
  同样,Client3发现节点Lock3并不是最小的。于是,它向排在它前面Lock2注册监听,并进入等待状态。
  这样一来,Client1得到了锁,Client2监听了Lock1,Client3监听了Lock2。这就形成了一个等待队列。
  释放锁
  释放锁分为两种情况:
  1、客户端显示释放
  当任务执行完毕后,Client1会调用删除节点Lock1的指令。
  2、执行过程中,客户端崩溃
  如果Client1在执行过程中,咣当崩溃了,则会断开与Zookeeper的连接。根据临时节点的特性,节点Lock1会随之被删除。
  不管是哪种情况,Client2一直监听着Lock1,当Lock1节点被删除,Client2就会马上收到通知。这时,Client2就获得了锁。
  同理,如果Client2执行完毕,或者中途崩溃了。那么节点Lock2就会被删除,Client3就会收到到通知,最终获得锁。
  Apache的开源框架ApacheCurator,包含了对Zookeeper分布式锁的实现,有兴趣的小伙伴可以查看:https:github。comapachecurator
  关注【老张聊架构】,成为百万年薪架构师!
投诉 评论 转载

欧研发收集海底垃圾的机器人系统近日,一个欧洲科研团队开发了一种可在水下收集垃圾的机器人系统,并成功进行了原型机的首次测试。该机器人系统由4个自主机器人组成,能通过深度学习算法和声学传感器将垃圾与海洋动植物区……5只具有潜力翻倍的氢能源概念股(附名单)氢能源作为我国新能源产业未来重要的发展方向之一,一直受到各方的高度重视。早间发改委发布氢能产业发展中长期规划20212035年,并召开新闻发布会介绍该规划。该规划主要有三大看点……云闪付推广不开来的原因大家议议?怎么说!说白了,银行自己没有推广的动力!找个第三方,给钱推广试试!肯定比现在强!有了第三方,有了为推广支出的费用,就有了利益链条!那,大家就都有了动力!说真的,银行的收付款平台……英国戴森日本松下国产小狗,3款家用高端吸尘器,该怎么选?当前,无线手持吸尘器,已经成为许多家庭日常生活的标配。相比扫地机器人,吸尘器的吸力更大,清洁能力更强更彻底。人工的参与使得清洁效率高几倍,还能清洁各种缝隙和除螨,实用性要……国产先进封装光刻机突围商业前景如何?本报记者李玉洋李正豪上海报道在虎年首个工作日,上海微电子装备(集团)股份有限公司(以下简称上海微电子)的一则消息轰动了中国半导体圈。2月7日,该公司举行首台2。5D3D先……拉卡拉数字人民币成为支付服务重点,已累计服务商户155万移动支付网消息:4月28日,拉卡拉发布2021年年报,报告显示其2021年实现营业收入65。96亿元,同比增长19;归属上市公司股东的净利润10。83亿元,同比增长16。……不要大惊小怪互联网裁员!保持好心态且做planB计划,应对生互联网发展太快了年年都是这样子说的制造恐慌情绪都被打到措手不及!因为没有planB!因为没有planB!因为没有planB!要是你有因为没有……宋PLUS新能源热销中可到店品鉴宋PLUSDMi是配备了DMi超级混动系统的三款产品之一,宋PLUSDMi到来充实了比亚迪混动家族实力,更挺直了自主混动车型的腰板。【外观】采用了家族最新的龙颜设计理念,……吃土也要入手的4款智能家居产品,无论是不是发烧友,都建议装上现如今,智能家居产品渐渐地走入了大众的视野,很多人家里也都开始慢慢地享受起了智能生活。但是,总的来说,使用智能家具的家庭还是极为少数的。仅有那些发烧友,恨不得把家里所有东……MySQLSQL为啥排序没了今天分析一个特殊的案例,非常有意思rootmysql3357。sock〔employees〕showcreatetablesalaries2G1。rowTable:sal……如何用Zookeeper优雅地实现分布式锁?这下懂了1分钟系在上一篇文章中,我们介绍了怎么使用Redis实现分布式锁。没看的小伙伴可以点击下面链接:前文阅读:《原来这就是分布式锁!这下懂了。。。1分钟系列》今天我们就介绍如何……一加手机宣布一加8系列可于2022年正式升级ColorOS稳IT之家7月9日消息一加管理员今日在社区发布了一份公告,表示经过内部确认,一加8、一加8Pro和一加8T可于2022年正式更新ColorOS稳定版。IT之家了解到,目前一……
高技术岗位需求保持高增长,互联网行业从人才规模转向追求质量FF遭做空,被指为骗局,贾跃亭如何收场?家用监控器远程监控要收费吗?每月费用多少?你愿意发给大家看看你用手机拍的最美照片吗?又双叒叕有员工猝死了三星不拘一格,12GB512GB降下5000!雷军都没这么大荣耀到底还能走多远?苹果手握大杀器杀入中国市场,数码博主预测或将狼狈而逃百度造车,是资本的宠儿,还是我国智能车的领导者?这就是夏天开空调费电的秘密,别再交冤枉电费了vivo创始人总裁兼CEO沈炜坚持科技创新用心拥抱用户国家发改委调研并实地查看新能源汽车更换动力电池

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利