5

Google 的 Chubby 分布式锁管理器有一个称为“序列器”的功能,我想使用 ZooKeeper 来模拟它。有没有已知的好方法可以做到这一点?

定序器的工作原理如下:

  1. 客户端获取资源锁
  2. 客户端为它的锁请求一个排序器,这是一个带有一些元数据的字符串
  3. 客户端调用服务并将定序器作为参数传递
  4. 服务在处理请求之前使用定序器来验证客户端是否仍然持有锁

目标是防止客户端在调用必须由锁保护的远程服务后死亡的情况。

有关 Chubby 的主要论文可在http://research.google.com/archive/chubby.html获得。定序器在 2.4 节中讨论。

谢谢!

4

1 回答 1

6

zookeeper 锁定配方都涉及锁定过程,创建一个连续的临时 znode。顺序临时 znode 的名称将是唯一的,如果由于 locker 在超时内未发送有效的心跳而导致 lockers 会话过期,则 znode 将不存在。

所以加锁过程只需要将其在加锁时创建的顺序临时znode的名称传递给远程服务,远程服务可以在处理前检查znode是否存在。

您甚至可以让远程服务向 znode 添加监视,并在 znode 被删除时收到通知。

于 2012-01-10T06:32:35.467 回答