2019年面试官最喜欢问的28道ZooKeeper面试题(30)

新机器加入也是类似 , 所有机器收到通知:新兄弟目录加入 , highcount 又有了 , 对于第二点 , 我们稍微改变一下 , 所有机器创建临时顺序编号目录节点 , 每次选取编号最小的机器作为 master 就好 。

Zookeeper 分布式锁(文件系统、通知机制)

有了 zookeeper 的一致性文件系统 , 锁的问题变得容易 。 锁服务可以分为两类 , 一个是保持独占 , 另一个是控制时序 。

对于第一类 , 我们将 zookeeper 上的一个 znode 看作是一把锁 , 通过 createznode的方式来实现 。 所有客户端都去创建 /distribute_lock 节点 , 最终成功创建的那个客户端也即拥有了这把锁 。 用完删除掉自己创建的 distribute_lock 节点就释放出锁 。

对于第二类 , /distribute_lock 已经预先存在 , 所有客户端在它下面创建临时顺序编号目录节点 , 和选 master 一样 , 编号最小的获得锁 , 用完删除 , 依次方便 。

Zookeeper 队列管理(文件系统、通知机制)

推荐阅读