城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

如何用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之家了解到,目前一……
比特币就是一个骗局,为什么还这么多人相信?配电脑5000左右有推荐吗?Java高频面试题Http到底是短连接还是长连接投影仪哪家好美国突然警告印度弃美亲俄,中国华为就是你的下场阿里女员工咆哮揭露丑闻,鱼死网破不应成为女性最后的挣扎MySql学习笔记25标识列字节如何跳动十年?Windows操作笔记(六)造芯片赚大发了!三星手机销量下滑利润却激增近4成教程27国产编程语言CbrotherSocket模块大数据赋能业务运营中国软件技术研发实现新突破
花生油要密封保存吗花生油怎么辨别真假教大家抖音怎样升级最新版本的方法河南印发最新通知勤俭节约坚持过紧日子小三生孩子是重婚罪吗需参照法律收集完善证据怎样确定传播性病罪的刑罚热议聚热点网 新生儿胎毒用什么治疗炖羊肉可以不放萝卜,但4种香料一定要放!羊肉鲜美酥嫩,无膻味 婚纱礼服馆(如何开一家婚纱礼服馆)发展渠道商传销是怎样洗脑的微信公众号流量主分成比例将于明天起优化上调MSI入围赛首个晋级队伍诞生!BLG2:1击败GG,ON洛太 一千到一千五什么手机好?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁