开发者社区> 问答> 正文

HBase如何使用ZooKeeper实现分布式锁?

HBase如何使用ZooKeeper实现分布式锁?

展开
收起
追风少年刘全有 2021-10-22 16:20:28 698 0
来自:华章出版社
1 条回答
写回答
取消 提交回答
  • 具体实现步骤如下:

    1)客户端调用create()方法创建名为“locknode/lock-”的节点,需要注意的是,节点的创建类型需要设置为EPHEMERAL_SEQUENTIAL。

    2)客户端调用getChildren(“locknode”)方法来获取所有已经创建的子节点。

    3)客户端获取到所有子节点path之后,如果发现自己在步骤1)中创建的节点序号最小,那么就认为这个客户端获得了锁。

    4)如果在步骤3)中发现自己并非所有子节点中最小的,说明集群中其他进程获取到了这把锁。此时客户端需要找到最小子节点,然后对其调用exist()方法,同时注册事件监听。

    5)一旦最小子节点对应的进程释放了分布式锁,对应的临时节点就会被移除,客户端因为注册了事件监听而收到相应的通知。这个时候客户端需要再次调用getChildren("locknode")方法来获取所有已经创建的子节点,然后进入步骤3。

    资料来源:《HBase原理与实践》,文章链接:https://developer.aliyun.com/article/724670

    2021-10-22 16:34:28
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
《MSE 微服务网关》 立即下载
微服务引擎 MSE 治理中心重磅发布 立即下载
阿里云微服务引擎 MSE 2.0 线上发布 立即下载