Zookeeper-04应用-分布式锁

@toc:

  • 分布式锁需要具备哪些特性?
  • 如何使用Zookeeper实现分布式锁?
  • 比较Redis分布式锁方案;

➤ 分布式锁特性: 互斥性, 超时放锁

➤ 使用Zk实现分布式锁: Zk实现分布式锁利用了Zk的诸多特性: 节点有序性, 临时节点, Watch ..

  • 加锁: client 在/lock节点下创建”有序”Znode , 节点id递增由父节点维护, 例如 /lock/node00000 , 如果client的节点是最小的, 则获得锁;
    获得锁失败的client, 监听 /lock 节点, 当/lock下面节点结构发生变化, zk会通知/lock下全部的node的Client (此处可以改进性能, node00001 只监听 node00000, node00002只监听 node0001 …);
  • 解锁: Client删除自己的节点, zk Watch进行通知
  • 超时: 似乎只能等临时Znode被删除(Client的回话结束, Znode被删除)

@ref 10分钟看懂!基于Zookeeper的分布式锁_qiangcuo6087的博客-CSDN博客