【问题标题】:zookeeper - locking one-of-manyzookeeper - 锁定多者之一
【发布时间】:2010-02-24 02:42:22
【问题描述】:

我有一组资源,每个资源都有一个唯一的标识符,每个资源元素在使用前必须锁定,然后再解锁。应用的逻辑是:

lock any one element;
if (none locked) then 
   exit with error;
else
   get resource-id from lock
   use resource
   unlock resource
end

Zookeeper 看起来是管理这些锁的理想选择,速度快且有弹性,而且从客户端故障中恢复似乎很简单。

谁能想到我如何使用 Zookeeper 来实现这一点?

【问题讨论】:

    标签: locking apache-zookeeper


    【解决方案1】:

    这个怎么样-

    你在 a 目录中有资源(比如 /locks)

    每个需要锁定的进程,列出该目录的所有子进程 然后创建一个名为 /locks/resource1/lock 的临时节点,具体取决于 它要锁定哪个资源。它可以在资源集上随机化。

    该临时节点将在使用完成后立即被进程删除 资源。一个进程应该只使用资源_{i} 如果它能够 创建 /locks/resource_{i}/locks。

    这行得通吗?

    谢谢 马哈德夫

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多