java - zookeeper 分布式锁 场景应用问题

 Federer2012_554 发布于 2022-10-26 21:52

zookeeper 分布式锁 问题描述:

线程A获取锁成功,执行逻辑方法action(),线程B获取锁失败,跳过逻辑方法action()不执行,锁监听watcher监听到A释放了锁,B尝试获取并获取成功,此时怎么再次触发线程B调用Action()?

前提:
逻辑方法是在集群服务器【多台】,zookeeper 分布式锁服务在另一台服务器

问题如上,目前我能想到的方法:
新建一个回调函数callback(),将线程B调用Action的方法参数及该回调函数地址传给zookeeper加锁服务,作为对象参数,等Watcher通知获取锁后,调用该回调函数再次进行Action()方法的调用

疑惑:
觉得我的这个方法非常low,一点都不灵活,想咨询各位segmentfault大神,有没有用过分布式锁服务遇到过类似场景的问题,辛苦给个最佳实践,不胜感激

1 个回答
  • 画了一下获取锁的基本流程实现。大致现在的zookeeper分布式锁都是这样来实现的。

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

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

    2022-11-12 01:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有