1、节点类型

Zookeeper是一个一致性的文件系统,保证了其每个节点的唯一性。
有4种节点类型:

  • 持久化目录节点
    客户端与Zookeeper断开后,该节点依旧存在。
  • 持久化顺序编号目录节点
    保持持久化目录节点的特性外,每个节点的名称会被顺序编号。
  • 临时目录节点
    客户端与Zookeeper断开后,该节点被删除。
  • 临时顺序标号目录节点
    保持临时目录节点的特性外,每个节点的名称会被顺序编号。

节点类型.png

顺序号是单调递增的计数器,由父节点维护。

2、分布式锁

分布式锁就是利用了Zookeeper的临时顺序标号目录节点的原理来实现,Locks主节点下面的ID最小的节点获的锁的权限,其他客户端来获取锁时,发现自己不是最靠前的,会监视他的前一个锁节点,当锁释放时,相应的节点被删除,会通知这个等待的客户端,其获取锁的权利,相当于形成了一个等待队列。

分布式锁原理.png

Zookeeper分布式锁的优点就是有现成的框架可以拿来就用,因为有等待队列,枪锁的效率也会高。缺点是因为Zookeeper是类似文件系统的数据结构,所以删除和新增节点的效率会比较低。

tencent.jpg