代码之家  ›  专栏  ›  技术社区  ›  Martin

动物园管理员-锁定其中一个

  •  1
  • Martin  · 技术社区  · 16 年前

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

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

    ZooKeeper看起来是管理这些锁的一个很好的候选者,具有快速和弹性,而且从客户机故障中恢复起来似乎很简单。

    有人能想到我该如何利用动物园管理员来实现这一点吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   mahadev    16 年前

    这个怎么样?

    在A目录中有资源(例如/locks)

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

    此临时节点将在使用完成后被进程删除。 资源。一个进程应该只用于资源i,如果它能够 创建/locks/resource_i/locks。

    这样行吗?

    谢谢 马哈德夫