开发者

zookeeper - locking one-of-many

I have a set of resources each of which has a unique identifier, and each resource element must be locked before it is used, and unlocked afterwards. The logic of the application is:

lock any one element;
if (none locked) then 
   exit with error;
else
   get resource-id from lock
   use resource
开发者_开发技巧   unlock resource
end

Zookeeper looks like a good candidate for managing these locks, being fast and resilient, and it seems quite simple to recover from client failure.

Can anyone think how I could use Zookeeper to achieve this ?


How about this-

you have resources in the a directory (say /locks)

each process which needs to lock, lists all the children of this directory and then creates an ephemeral node called /locks/resource1/lock depending on which resource it wants to lock. It could be randomized on the set of resources.

This ephemeral node will be deleted by the process as soon as its done using the resource. A process should only use to resource_{i} if its been able to create /locks/resource_{i}/locks.

Would that work?

Thanks mahadev

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜