1、zookeeper在HBase中的分布式锁具体实现步骤如下
1)客户端调用create()方法创建名为‘locknode/lock-'的节点,节点的创建类型需要设置为EPHEMERAL_SEQUENTIAL
2)客户端调用getChildren("locknode")方法获取所有已经创建的子节点
3)客户端获取到所有子节点的path之后,如果发现自己在步骤1)中创建的节点序号最小那么就认为这个客户端获得了锁
4)如果在3)步骤发现自己并非所有子节点中最小的,说明集群中其他进程获取到了这个把锁,此时客户端需要找到最小子节点,然后对其调用exist()方法,同事注册事件监听
5)一旦最下子节点对于的进程释放了分布式锁,对应的临时节点会被移除。客户端因为注册了事件监听而受到了相应的通知。这个时候客户端需要再次调用getChildren('locknode')方法来获取所有已经创建的子节点,然后进入步骤3。
网友评论