zookeeper锁机制
[*]加锁:
ZooKeeper将按照如下方式实现加锁的操作:
1)ZooKeeper调用create()方法来创建一个路径格式为“_locknode_/lock-”的节点,此节点类型为sequence(连续)和ephemeral(临时)。也就是说,创建的节点为临时节点,并且所有的节点连续编号,即“lock-i”的格式。
2)在创建的锁节点上调用getChildren()方法,来获取锁目录下的最小编号节点,并且不设置watch。
3)步骤2中获取的节点恰好是步骤1中客户端创建的节点,那么此客户端获得此种类型的锁,然后退出操作。
4)客户端在锁目录上调用exists()方法,并且设置watch来监视锁目录下比自己小一个的连续临时节点的状态。
5)如果监视节点状态发生变化,则跳转到第2步,继续进行后续的操作,直到退出锁竞争。
[*]解锁:
ZooKeeper解锁操作非常简单,客户端只需要将加锁操作步骤1中创建的临时节点删除即可。
原文地址:http://blog.csdn.net/shenlan211314/article/details/6152098
页:
[1]