1

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

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

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

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

4

1 回答 1

2

这个怎么样-

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

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

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

那行得通吗?

谢谢马哈德夫

于 2010-02-23T18:42:22.260 回答