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

これはどう-

ディレクトリにリソースがあります(たとえば/ locks)

ロックする必要のある各プロセスは、このディレクトリのすべての子を一覧表示し、ロックするリソースに応じて/ locks / resource1/lockという一時的なノードを作成します。リソースのセットでランダム化できます。

このエフェメラルノードは、リソースの使用が完了するとすぐにプロセスによって削除されます。プロセスは、/ locks / resource_ {i} / locksを作成できた場合にのみ、resource_{i}に使用する必要があります。

それはうまくいくでしょうか?

ありがとうmahadev

于 2010-02-23T18:42:22.260 に答える