ZooKeeper实现分布式锁
场景描述
在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这
些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问.本文将介绍如何利用zookeeper实现分布式锁.
思路
进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisPath在所有子节
点中最小时, 说明该进程获得了锁. 进程获得锁之后, 就可以访问共享资源了. 访问完成后, 需要将thisPath删除. 锁由新的最小的
子节点获得.
有了清晰的思路之后, 还需要补充一些细节. 进程如何知道thisPath是所有子节点中最小的呢? 可以在创建的时候, 通过
getChildren方法获取子节点列表, 然后在列表中找到排名比thisPath前1位的节点, 称为waitPath, 然后在waitPath上注册监听,
当waitPath被删除后, 进程获得通知, 此时说明该进程获得了锁
相关推荐
savorTheFlavor 2020-10-23
smartbaby 2020-11-11
夙梦流尘 2020-09-23
峰哥 2020-09-23
互联网架构之路 2020-09-03
zhangll00 2020-07-29
大胡子抽雪茄 2020-07-19
middleware0 2020-07-19
Cheetahcubs 2020-07-18
manongxiaomei 2020-07-05
wqbala 2020-07-04
憧憬 2020-07-04
caifengguo 2020-06-28
亦碎流年 2020-06-18
loviezhang 2020-06-17
wangyjbk 2020-06-15
wqbala 2020-06-14
hweiyi 2020-06-14