2012-01-09 44 views
5

谷歌的Chubby分布式锁定管理器有一个叫做“音序器”的特性,我想用ZooKeeper来模拟。有没有一种好的方法可以做到这一点?如何使用ZooKeeper实现Chubby风格的锁定序列器?

定序器的工作原理如下:

  1. 客户端获取资源上的锁
  2. 客户端请求序为它的锁,这与一些元数据
  3. 客户端的字符串进行调用到服务并将序列器作为参数传递
  4. 该服务使用音序器验证客户端在处理请求之前仍保持锁定

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

Chubby的主要论文可在。排序器在2.4节中讨论。

谢谢!

回答

6

zookeeper lock recipes都涉及锁定过程创建一个sequential ephemeral znode。顺序短暂znode的名称将是唯一的,并且如果锁定器会话由于锁定器未在超时内发送有效心跳而过期,则znode将不再存在。

因此,锁定过程只需传递它在锁定到远程服务时创建的顺序短暂znode的名称,并且远程服务可以在处理之前检查znode的存在。

您甚至可以让远程服务将节点添加到znode,并在znode被移除时收到通知。

+0

谢谢。不知何故,我错过了序列号单调递增的事实。 – 2012-01-11 07:36:08

+0

音序器是实现强制锁定的一种方式吗? – ady 2016-05-02 18:53:08