为了账号安全,请及时绑定邮箱和手机立即绑定

zookeeper 分布式锁 场景应用问题

zookeeper 分布式锁 场景应用问题

四季花海 2019-03-21 18:15:09
zookeeper 分布式锁 问题描述:线程A获取锁成功,执行逻辑方法action(),线程B获取锁失败,跳过逻辑方法action()不执行,锁监听watcher监听到A释放了锁,B尝试获取并获取成功,此时怎么再次触发线程B调用Action()?前提:逻辑方法是在集群服务器【多台】,zookeeper 分布式锁服务在另一台服务器问题如上,目前我能想到的方法:新建一个回调函数callback(),将线程B调用Action的方法参数及该回调函数地址传给zookeeper加锁服务,作为对象参数,等Watcher通知获取锁后,调用该回调函数再次进行Action()方法的调用疑惑:觉得我的这个方法非常low,一点都不灵活,想咨询各位segmentfault大神,有没有用过分布式锁服务遇到过类似场景的问题,辛苦给个最佳实践,不胜感激
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

画了一下获取锁的基本流程实现。大致现在的zookeeper分布式锁都是这样来实现的。
https://img1.sycdn.imooc.com//5cbecd9400018a7d03480272.jpg

上面是一个完整的获取锁过程就类似 Lock.lock() 该方法实现的操作一样,并不会说创建节点失败就直接返回错误,然后由使用方决定流程走向。

现有的 ZooKeeper 实现楼主可以参数一下。
Apache urator
GitHub Libraries


查看完整回答
反对 回复 2019-04-23
  • 1 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号