Concurrency 如何使用ZooKeeper实现胖乎乎的锁序列器?

Concurrency 如何使用ZooKeeper实现胖乎乎的锁序列器?,concurrency,locking,apache-zookeeper,Concurrency,Locking,Apache Zookeeper,谷歌胖乎乎的分布式锁管理器有一个叫做“sequencers”的功能,我想用ZooKeeper来模仿它。有没有已知的好方法可以做到这一点 定序器的工作原理如下: 客户端获取资源上的锁 客户机请求序列器获取其锁,锁是一个包含一些元数据的字符串 客户端调用服务并将sequencer作为参数传递 该服务使用sequencer在处理请求之前验证客户端是否仍然持有锁 目标是防止客户端在调用远程服务后死亡的情况,远程服务必须受到锁的保护 关于查比的主要论文可在以下网址获得:。定序器在第2.4节中讨论 谢谢 所

谷歌胖乎乎的分布式锁管理器有一个叫做“sequencers”的功能,我想用ZooKeeper来模仿它。有没有已知的好方法可以做到这一点

定序器的工作原理如下:

  • 客户端获取资源上的锁
  • 客户机请求序列器获取其锁,锁是一个包含一些元数据的字符串
  • 客户端调用服务并将sequencer作为参数传递
  • 该服务使用sequencer在处理请求之前验证客户端是否仍然持有锁
  • 目标是防止客户端在调用远程服务后死亡的情况,远程服务必须受到锁的保护

    关于查比的主要论文可在以下网址获得:。定序器在第2.4节中讨论

    谢谢

    所有这些都涉及到锁定过程,因此创建了一个。顺序临时znode的名称将是唯一的,如果由于锁定程序在超时时间内未发送有效的心跳,锁定程序会话过期,znode将不再存在

    因此,锁定过程只需要将锁定时创建的顺序临时znode的名称传递给远程服务,远程服务可以在处理之前检查znode的存在


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

    谢谢。不知怎的,我忽略了序列号是单调递增的这一事实。