5

Google の Chubby 分散ロック マネージャーには、ZooKeeper を使用してエミュレートしたい「シーケンサー」と呼ばれる機能があります。そうするための既知の良い方法はありますか?

シーケンサーは次のように機能します。

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

目標は、ロックで保護する必要があるリモート サービスを呼び出した後にクライアントが停止する状況を防ぐことです。

Chubby に関する主な論文は、http://research.google.com/archive/chubby.htmlで入手できます。シーケンサーについては、セクション 2.4 で説明します。

ありがとう!

4

1 に答える 1

6

Zookeeperのロック レシピはすべて、順次一時的な znodeを作成するロック プロセスを伴います。シーケンシャル エフェメラル znode の名前は一意であり、ロッカーがタイムアウト内に有効なハートビートを送信しないためにロッカー セッションが期限切れになると、znode は存在しなくなります。

そのため、ロック プロセスは、リモート サービスへのロック中に作成したシーケンシャル エフェメラル znode の名前を渡すだけでよく、リモート サービスは処理前に znode の存在を確認できます。

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

于 2012-01-10T06:32:35.467 に答える