2012-01-09 5 views
5

GoogleのChubby分散ロックマネージャには、ZooKeeperを使ってエミュレートしたいシーケンサーという機能があります。そうすることが知られていますか?ZooKeeperでChubbyスタイルのロックシーケンサーを実装する方法は?

次のようにシーケンサーが動作します。

  1. クライアントリソースのロックを取得し
  2. クライアントは
  3. クライアントがへの呼び出しを行い、いくつかのメタデータを含む文字列であることのロックのシーケンサーを、要求サービスを呼び出し、シーケンサーをパラメーターとして渡します
  4. サービスはシーケンサーを使用して、要求を処理する前にクライアントがまだロックを保持していることを確認します

目的は、ロックによって保護されなければならないリモートサービスを呼び出した後にクライアントが死亡することを防ぐことです。

Chubbyのメインペーパーはです。シーケンサーについては、2.4節で説明します。

ありがとうございます!

答えて

6

zookeeper lock recipesにはすべてロックプロセスが含まれ、sequential ephemeral znodeが作成されます。シーケンシャルエフェメラルznodeの名前は一意であり、ロッカーがタイムアウト内に有効なハートビートを送信しないためにロッカーセッションが切れた場合、znodeは存在しなくなります。

ロックプロセスは、リモートサービスにロックしている間に作成した順次エフェメラルznodeの名前を渡すだけでよく、リモートサービスは処理前にznodeの存在をチェックできます。

リモートサービスでznodeに時計を追加しても、znodeが削除されたときに通知を受けることさえできます。

+0

ありがとうございました。どういうわけか私はシーケンス番号が単調増加しているという事実を忘れてしまった。 –

+0

シーケンサーは必須ロックを実装する方法ですか? – ady

関連する問題