(57)【特許請求の範囲】
【請求項１】
分散システムにおけるロック・サーバの故障を処理するための方法であって、前記分散システムは少なくとも３つのロック・サーバを含み、各ロック・サーバは同一のロック・サーバ引継ぎ関係情報を格納し、前記方法は、
前記分散システム内の故障していないロック・サーバにより、第１の通知メッセージを受信するステップであって、前記第１の通知メッセージは前記分散システム内の第１のロック・サーバの故障に関する情報を運搬する、ステップと、
前記第１の通知メッセージを受信した後、前記分散システム内の第２のロック・サーバにより、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、前記第２のロック・サーバが前記第１のロック・サーバの引継ぎロック・サーバであると判定するステップであって、前記引継ぎロック・サーバはサイレント状態に入り、前記引継ぎロック・サーバはロック回収要求を処理するが、ロッキング要求は処理しない、ステップと、
前記第１の通知メッセージを受信した後、前記分散システム内の第３のロック・サーバにより、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、前記第３のロック・サーバが前記第１のロック・サーバの前記引継ぎロック・サーバでないと判定するステップと、
ロッキング要求を受信したとき前記第３のロック・サーバにより、前記ロッキング要求に従ってロック許可情報を割り当てるステップと、
を含む、方法。
【請求項２】
ロック回収要求を受信したとき前記引継ぎロック・サーバにより、ロック許可情報テーブルに従って対応するロック許可情報を返すステップと、
ロッキング要求を受信したとき前記引継ぎロック・サーバにより、拒否応答メッセージを返すステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記分散システムはさらに、少なくとも３つのプロトコル・サーバおよび対応するロック・プロキシを含み、プロトコル・サーバおよび対応するロック・プロキシは同一のノード装置に配置され、前記方法はさらに、
ロック要求を受信した後に前記プロトコル・サーバにより、前記ロック要求を前記対応するロック・プロキシに送信するステップであって、前記ロック要求はロック回収要求またはロッキング要求であるステップ
を含む、請求項１または２に記載の方法。
【請求項４】
各ロック・プロキシは前記ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報をローカルに格納し、前記方法はさらに、
前記ロック要求を受信した後に前記ロック・プロキシにより、前記ロック要求を処理するためのロック・サーバを前記ローカルに格納された管理範囲情報に従って決定するステップと、
前記ローカルに格納された管理範囲情報に従って決定された前記ロック要求を処理するための前記ロック・サーバが故障状態としてマークされる場合、前記ローカルに格納されたロック・サーバ引継ぎ関係に従って前記ロック・プロキシにより、前記故障状態にある前記ロック・サーバの引継ぎロック・サーバを決定するステップと、
前記受信されたロック要求を前記引継ぎロック・サーバに送信するステップと、
を含む、請求項３に記載の方法。
【請求項５】
前記ロック・サーバ引継ぎ関係情報はコンシステント・ハッシュ・リングを用いることによって決定され、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って前記第３のロック・サーバにより、前記第３のロック・サーバが前記第１のロック・サーバの前記引継ぎロック・サーバでないと判定するステップは、
ローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って前記第３のロック・サーバにより、前記第３のロック・サーバが前記第１のロック・サーバの前記引継ぎロック・サーバでないと判定するステップ
である、請求項３に記載の方法。
【請求項６】
故障していない前記ロック・サーバが第１の通知メッセージを受信した後、前記方法はさらに、
故障していない前記ロック・サーバにより、故障していない前記ロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内の前記第１のロック・サーバを故障状態としてマークするステップと、
予め設定した時刻に到達したとき、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、ステップと、
を含む、請求項５に記載の方法。
【請求項７】
各ロック・プロキシは前記ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報をローカルに格納し、前記ロック・サーバ管理範囲情報および前記ロック・サーバ引継ぎ関係情報は前記コンシステント・ハッシュ・リングを用いることによって決定され、
ロック要求を受信した後、前記ロック・プロキシは、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って、前記ロック要求を処理するためのロック・サーバを決定し、
前記ローカルに格納されたコンシステント・ハッシュ・リング内にある前記ロック要求を処理するための前記ロック・サーバが故障状態としてマークされる場合には、前記ロック・プロキシは、前記ローカルに格納されたコンシステント・ハッシュ・リングの同一方向に従って、前記ロック要求を処理するための前記ロック・サーバの引継ぎロック・サーバを決定する、
請求項５乃至６の何れか１項に記載の方法。
【請求項８】
前記ロック・プロキシにより、前記第１の通知メッセージを受信するステップと、
前記ロック・プロキシにより、前記ローカルに格納されたコンシステント・ハッシュ・リング内の前記第１のロック・サーバを故障状態としてマークするステップと、
予め設定した時刻に到達したとき、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、ステップと、
をさらに含む、請求項７に記載の方法。
【請求項９】
故障していない前記ロック・サーバにより、第２の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まず、前記第２の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第２の通知メッセージは前記第１のロック・サーバに関する情報を運搬する、ステップと、
前記ロック・プロキシにより、前記第２の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、ステップと、
をさらに含む、請求項７に記載の方法。
【請求項１０】
故障していない前記ロック・サーバにより、第３の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、前記第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第３の通知メッセージは前記新たに追加されたロック・サーバに関する情報を運搬する、ステップと、
前記ロック・プロキシにより、前記第３の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するステップであって、前記更新されたコンシステント・ハッシュ・リングは前記新たに追加されたロック・サーバを含む、ステップと、
をさらに含む、請求項６乃至９の何れか１項に記載の方法。
【請求項１１】
少なくとも３つのロック・サーバを備えたロック・サーバの故障の処理を実装する分散システムであって、各ロック・サーバは同一のロック・サーバ引継ぎ関係情報を格納し、  前記少なくとも３つのロック・サーバのうち故障していないロック・サーバは、第１の通知メッセージを受信するように構成され、前記第１の通知メッセージは第１のロック・サーバの故障に関する情報を運搬し、
第２のロック・サーバは、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、前記第２のロック・サーバが前記第１のロック・サーバの引継ぎロック・サーバであると判定するように構成され、前記引継ぎロック・サーバはサイレント状態に入り、前記引継ぎロック・サーバはロック回収要求を処理するが、ロッキング要求は処理せず、
第３のロック・サーバは、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、前記第３のロック・サーバが前記第１のロック・サーバの前記引継ぎロック・サーバでないと判定するように構成され、
前記第３のロック・サーバは、ロッキング要求を受信した後、前記ロッキング要求に従ってロック許可情報を割り当てるように構成される、
システム。
【請求項１２】
前記引継ぎロック・サーバが、
ロック回収要求を受信したとき、ロック許可情報テーブルに従って対応するロック許可情報を返し、
ロッキング要求を受信したとき、拒否応答メッセージを返す
ように構成される、請求項１１に記載のシステム。
【請求項１３】
前記分散システムはさらに、少なくとも３つのプロトコル・サーバおよび対応するロック・プロキシを含み、プロトコル・サーバおよび対応するロック・プロキシは同一のノード装置に配置され、
前記プロトコル・サーバは、ロック要求を受信した後、前記ロック要求を前記対応するロック・プロキシに送信するように構成され、前記ロック要求はロック回収要求またはロッキング要求である、
請求項１１または１２に記載のシステム。
【請求項１４】
各ロック・プロキシは前記ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を格納し、
前記ロック・プロキシは、ロック要求を受信した後、ローカルに格納されたロック・サーバ管理範囲情報に従って、前記ロック要求を処理するためのロック・サーバを決定するように構成され、
前記ロック・サーバ管理範囲情報内にある前記ロック要求を処理するための前記ロック・サーバが故障状態としてマークされる場合、前記ロック・プロキシは、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、前記ロック要求を処理するための前記ロック・サーバの引継ぎロック・サーバを決定し、前記受信されたロック要求を、前記ロック要求を処理するための前記ロック・サーバの引継ぎロック・サーバに送信するようにさらに構成される、
請求項１３に記載のシステム。
【請求項１５】
前記ロック・サーバ引継ぎ関係はコンシステント・ハッシュ・リングを用いることによって決定され、前記第３のロック・サーバは、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って、前記第３のロック・サーバが前記第１のロック・サーバの前記引継ぎロック・サーバでないと判定する、請求項１３に記載のシステム。
【請求項１６】
故障していない前記ロック・サーバが、第１の通知メッセージを受信した後、故障していない前記ロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内の前記第１のロック・サーバを故障状態としてマークし、予め設定した時刻に到達したとき、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、請求項１５に記載のシステム。
【請求項１７】
各ロック・プロキシは前記ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報をローカルに格納し、前記ロック・サーバ管理範囲情報および前記ロック・サーバ引継ぎ関係情報は前記コンシステント・ハッシュ・リングを用いることによって決定され、
前記ロック・プロキシは、ロック要求を受信した後、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って、前記ロック要求を処理するためのロック・サーバを決定するようにさらに構成され、
前記ローカルに格納されたコンシステント・ハッシュ・リング内にある前記ロック要求を処理するための前記ロック・サーバが故障状態としてマークされる場合、前記ロック・プロキシは、前記ローカルに格納されたコンシステント・ハッシュ・リングの同一方向に従って、前記ロック要求を処理するための前記ロック・サーバの引継ぎロック・サーバを決定するようにさらに構成される、
請求項１５または１６に記載のシステム。
【請求項１８】
前記ロック・プロキシは、前記第１の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リング内の前記第１のロック・サーバを故障状態としてマークし、予め設定した時刻に到達したとき、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、請求項１７に記載のシステム。
【請求項１９】
故障していない前記ロック・サーバは、第２の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、前記第２の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第２の通知メッセージは前記第１のロック・サーバに関する情報を運搬し、
前記ロック・プロキシは、前記第２の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは前記第１のロック・サーバを含まない、請求項１７に記載のシステム。
【請求項２０】
故障していない前記ロック・サーバは、第３の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、前記第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第３の通知メッセージは前記新たに追加されたロック・サーバに関する情報を運搬し、
前記ロック・プロキシは、前記第３の通知メッセージを受信し、前記ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにさらに構成され、前記更新されたコンシステント・ハッシュ・リングは前記新たに追加されたロック・サーバを含む、
請求項１６乃至１９の何れか１項に記載のシステム。
【請求項２１】
受信モジュール、処理モジュール、および記憶モジュールを備えた分散システムにおける故障処理を実装するロック・サーバであって、前記記憶モジュールはロック・サーバ引継ぎ関係情報を格納し、
前記受信モジュールは、第１の通知メッセージを受信し、前記第１の通知メッセージを前記処理モジュールに送信するように構成され、前記第１の通知メッセージは故障したロック・サーバに関する情報を運搬し、
前記処理モジュールは、前記第１の通知メッセージを受信した後、前記ロック・サーバが前記故障したロック・サーバの引継ぎロック・サーバであるかどうかを前記ロック・サーバ引継ぎ関係情報に従って判定するように構成され、前記ロック・サーバが前記故障したロック・サーバの引継ぎロック・サーバである場合、前記ロック・サーバはサイレント状態に入り、前記引継ぎロック・サーバはロック回収要求を処理するが、ロッキング要求は処理しない、
前記処理モジュールは、ロッキング要求を受信した後、前記ロック・サーバがサイレント状態にあるかどうかを判定し、前記ロック・サーバが前記サイレント状態にない場合、前記ロッキング要求に従ってロック許可情報を割り当てるか、または、前記ロック・サーバが前記サイレント状態にある場合、拒否応答メッセージを返し、前記割り当てられたロック許可情報または前記拒否応答メッセージを前記受信モジュールに送信するようにさらに構成され、
前記受信モジュールは、前記受信されたロック許可情報または前記受信された拒否応答メッセージをロック・プロキシに返すようにさらに構成される、
ロック・サーバ。
【請求項２２】
前記処理モジュールは、ロック回収要求を受信した後、前記記憶モジュールに格納されたロック許可情報テーブルに従って対応するロック許可情報を返すようにさらに構成される、請求項２１に従うロック・サーバ。
【請求項２３】
コンシステント・ハッシュ・リングを用いて前記ロック・サーバ引継ぎ関係情報を決定でき、前記処理モジュールが、前記ロック・サーバが前記故障したロック・サーバの引継ぎロック・サーバであるかどうかを、前記記憶モジュールに格納されたロック・サーバ引継ぎ関係情報に従って判定することは、
前記処理モジュールが、前記ロック・サーバが前記故障したロック・サーバの引継ぎロック・サーバであるかどうかを、前記コンシステント・ハッシュ・リングの時計方向または反時計方向に従って判定することであってもよい、
請求項２１または２２に従うロック・サーバ。
【請求項２４】
前記処理モジュールは、前記第１の通知メッセージを受信した後、前記記憶モジュールに格納された前記コンシステント・ハッシュ・リング内の前記故障したロック・サーバを故障状態としてマークするようにさらに構成される、請求項２３に従うロック・サーバ。
【請求項２５】
前記受信モジュールは、第２の通知メッセージを受信して、前記第２の通知メッセージを前記処理モジュールに送信するようにさらに構成され、前記第２の通知メッセージは、前記記憶モジュールに格納された前記コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第２の通知メッセージは前記故障したロック・サーバに関する情報を運搬し、
前記処理モジュールは、前記記憶モジュールに格納された前記コンシステント・ハッシュ・リングを更新して、前記更新されたコンシステント・ハッシュ・リングが前記故障したロック・サーバを含まないようにするようにさらに構成される、
請求項２３または２４に従うロック・サーバ。
【請求項２６】
前記受信モジュールは、第３の通知メッセージを受信し、前記第３の通知メッセージを前記処理モジュールに送信するようにさらに構成され、前記第３の通知メッセージは、コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、前記第３の通知メッセージは新たに追加されたロック・サーバに関する情報をさらに運搬し、
前記処理モジュールは、前記記憶モジュールに格納された前記コンシステント・ハッシュ・リングを更新して、前記更新されたコンシステント・ハッシュ・リングが前記新たに追加されたロック・サーバを含むようにするようにさらに構成される、
請求項２３乃至２５の何れか１項に記載のロック・サーバ。
【請求項２７】
請求項２１乃至２６の何れかに記載のロック・サーバを備える、分散システムにおける故障処理を実装するロック
・マネージャ。
【請求項２８】
請求項１乃至１０の何れか１項に記載の方法をコンピュータに実行させるプログラムを
記録した、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶技術に関し、特に、分散システムにおけるロック・サーバ（マスタ）の故障を処理するための方法およびシステムに関する。
【背景技術】
【０００２】
ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ、ネットワーク・アタッチト・ストレージ）システムは、利用の容易さ、高効率、および管理の容易さのようなその特徴に起因する企業の分散ファイル・システムにおける共有の目的のために広く使用されている。ＮＡＳの典型的なネットワーキングを図１に示す。
【０００３】
ＮＡＳシステムでは、同一のファイルに対して、異なるアプリケーション・ホストにより送信された読書き要求を受信することができる。読書きの衝突を回避するために、ファイルに対する読書き要求をアプリケーション・ホストから受信したとき、ノード装置内のロック・サーバが、共有リソースに対する並列かつ相互排他的なアクセスを実装するために、現在のファイルをロックする必要がある（ロック許可）。読書き動作が完了すると、ファイルが解放される。ロック許可情報とアプリケーション・ホストの間の対応関係を各ノードに格納でき、または共有記憶装置に格納することができる。当該共有記憶装置は各ノードと独立であり、各ノードによりアクセスすることができる。当該記憶装置は図１には示されていない。
【０００４】
近年、仮想化技術が発展すると、ＶＤＩ（Ｖｉｒｔｕａｌ  Ｄｅｓｋｔｏｐ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ、仮想デスクトップ基盤）、Ｏｒａｃｌｅデータベース・プラットフォーム、およびＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ、構造化問合せ言語）サーバ・データベース・プラットフォームのようなアプリケーションが分散システム内に展開され始め、これがより高い要件を分散システムの信頼性に課している。分散システム内のノード装置が故障に遭遇すると、ＮＡＳシステムは、別のノード装置内の故障したノード装置のＩＰアドレスをノード装置のＩＰフェール・オーバ（ＩＰ  ｆａｉｌｏｖｅｒ）の方式で構成して、ＮＡＳシステムの信頼性を高める。この切替えは各アプリケーション・ホストに対して透過的である。即ち、各アプリケーション・ホストは、ＮＡＳシステム内のノード装置の間のＩＰフェール・オーバを認識できず、各アプリケーション・ホスト内の各アプリケーションに対する影響が軽減される。
【０００５】
ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ネットワーク・ファイル・システム）Ｖ３は、現在のところ最も長く最も広範囲に使用されているプロトコル・バージョンである。しかし、当該プロトコルにおけるロックの不完全な定義のため、当該プロトコルは、ＮＬＭ（Ｎｅｔｗｏｒｋ  Ｌｏｃｋ  Ｍａｎａｇｅｒ、ネットワーク・ロック・マネージャ）およびＮＳＭ（Ｎｅｔｗｏｒｋ  Ｓｔａｔｕｓ  Ｍａｎａｇｅｒ、ネットワーク・ステータス・マネージャ）のような他の補助プロトコルに依存する。それ故に、ＮＦＳ  Ｖ３におけるロック復元手続きは複雑である。
【０００６】
図１に示すように、ノード装置１が故障しているとき、ノード装置１のＩＰアドレスはノード装置２にフェール・オーバされる。即ち、ノード装置１のＩＰアドレスはノード装置２で構成される。当該ＩＰフェール・オーバはアプリケーション・ホスト１に透過的である。即ち、アプリケーション・ホスト１は当該ノード装置の間で発生する変化を知らない。ＮＦＳプロトコルおよびＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ、サーバ・メッセージ・ブロック）プロトコルのような幾つかのプロトコルの設計方式では、アプリケーション・ホストの高アクセス効率に関して、故障したノード装置のＩＰアドレスが別のノード装置にフェール・オーバされた後、当該アプリケーション・ホストは、ロック回収（Ｒｅｃｌａｉｍ）要求を使用して、当該アプリケーション・ホスト内のアプリケーションにより得られたファイルのロック許可を再適用することができる。このように、当該分散システム内のロック・サーバは、ロック回収要求またはロッキング要求のようなロック要求を安全に制御する必要がある。そうでなければ、複数のアプリケーション・ホストにより取得されたデータが不正確な許可制御のため矛盾する可能性があり、または、複数のアプリケーション・ホストがデータを同時に読書きするとき、システム故障の問題すら生ずる。
【０００７】
この場合、分散システム内のノード装置が故障しているとき、例えば、当該ノード装置内のロック・サーバが故障しているとき、当該分散システム内の全てのロック・サーバはサイレントである。即ち、各ノード装置内のロック・サーバはサイレント状態に入る。この場合、ロック回収要求を受信したとき、当該ノード装置内のプロトコル・サーバは、当該ロック回収要求で運搬される情報または格納されたロック許可に従って、当該ロック回収要求を、処理するために対応するロック・サーバに送信し、ロッキング要求を受信したとき、当該ロック・サーバは拒否応答メッセージを直接要求者に返す。当該ロッキング要求は、ファイルの新たなロック許可のために当該ロック・サーバに適用するために、アプリケーション・ホスト内のアプリケーションにより使用される。即ち、当該ノード装置内のロック・サーバがサイレント状態にあるとき、分散システムはロック回収要求のみを処理することができ、ロッキング要求を処理することはできない。この場合、当該分散システム内の１つロック・サーバだけが故障しているが、全てのロック・サーバがサイレントであるので局所的な問題が全体的な問題となり、さらに、正常なロック要求を処理できず、これがサービス割込みを生じさせ、分散システムの信頼性を劣化させるおそれがある。
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明の諸実施形態では、ロック・サーバが故障しているとき、全てのロック・サーバがサイレントになり、ロッキング要求を処理できず、分散システムの信頼性が低下するという先行技術の問題を解決するために、分散システムにおけるロック・サーバの故障を処理するための方法およびシステムを提供する。
【０００９】
第１の態様によれば、本発明の１実施形態では、分散システムにおけるロック・サーバの故障を処理するための方法を提供する。当該分散システムは少なくとも３つのロック・サーバを含み、各ロック・サーバは同一のロック・サーバ引継ぎ関係情報を格納し、当該方法は、当該分散システム内の故障していないロック・サーバにより、第１の通知メッセージを受信するステップであって、当該第１の通知メッセージは当該分散システム内の第１のロック・サーバの故障に関する情報を運搬する、ステップと、当該第１の通知メッセージを受信した後、当該分散システム内の第２のロック・サーバにより、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第２のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバであると判定するステップであって、当該引継ぎロック・サーバはサイレント状態に入る、ステップと、当該第１の通知メッセージを受信した後、当該分散システム内の第３のロック・サーバにより、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第３のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバでないと判定するステップと、ロッキング要求を受信したとき非引継ぎロック・サーバであると判定された当該第３のロック・サーバにより、当該ロッキング要求に従ってロック許可情報を割り当てるステップとを含む。
【００１０】
第１の態様を参照して、第１の態様の第１の可能な実装方式では、ロック回収要求を受信したとき、引継ぎロック・サーバがロック許可情報テーブルに従って対応するロック許可情報を返し、ロッキング要求を受信したとき、当該引継ぎロック・サーバが拒否応答メッセージを返す。
【００１１】
第１の態様の第１の可能な実装方式を参照して、第１の態様の第２の可能な実装方式では、分散システムは少なくとも３つのプロトコル・サーバおよび対応するロック・プロキシをさらに含み、プロトコル・サーバおよび対応するロック・プロキシは同一のノード装置に配置され、当該方法は、ロック要求を受信した後に当該プロトコル・サーバにより、当該ロック要求を当該対応するロック・プロキシに送信するステップであって、当該ロック要求はロック回収要求またはロッキング要求であるステップをさらに含む。
【００１２】
第１の態様の第２の可能な実装方式を参照して、第１の態様の第３の可能な実装方式では、各ロック・プロキシはロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報をローカルに格納し、当該方法は、ロック要求を受信した後にロック・プロキシにより、当該ロック要求を処理するためのロック・サーバを当該ローカルに格納された管理範囲情報に従って決定するステップと、当該ローカルに格納された管理範囲情報に従って決定されたロック要求を処理するためのロック・サーバが故障状態としてマークされる場合、当該ローカルに格納されたロック・サーバ引継ぎ関係に従ってロック・プロキシにより、故障状態にあるロック・サーバの引継ぎロック・サーバを決定するステップと、受信されたロック要求を当該引継ぎロック・サーバに送信するステップとをさらに含む。
【００１３】
第１の態様の第２の可能な実装方式を参照して、第１の態様の第４の可能な実装方式では、ロック・サーバ引継ぎ関係情報はコンシステント・ハッシュ・リングを用いることによって決定され、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って第３のロック・サーバにより、当該第３のロック・サーバが第１のロック・サーバの引継ぎロック・サーバでないと判定するステップは特に、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って当該第３のロック・サーバにより、当該第３のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバでないと判定するステップである。
【００１４】
第１の態様の第４の可能な実装方式を参照して、第１の態様の第５の可能な実装方式では、各ロック・プロキシはロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報をローカルに格納する。当該ロック・サーバ管理範囲情報および当該ロック・サーバ引継ぎ関係情報はコンシステント・ハッシュ・リングを用いることによって決定され、ロック要求を受信した後にロック・プロキシはローカルに格納されたコンシステント・ハッシュ・リングの時計方向または反時計方向に従って、当該ロック要求を処理するためのロック・サーバを決定し、ローカルに格納されたコンシステント・ハッシュ・リング内にあるロック要求を処理するためのロック・サーバが故障状態としてマークされる場合、ロック・プロキシは、当該ローカルに格納されたコンシステント・ハッシュ・リングの同一方向に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定する。
【００１５】
第２の態様によれば、本発明の１実施形態では、少なくとも３つのロック・サーバを備えた、ロック・サーバの故障の処理を実装する分散システムを提供する。各ロック・サーバは同一のロック・サーバ引継ぎ関係情報を格納し、当該少なくとも３つのロック・サーバのうち故障していないロック・サーバは第１の通知メッセージを受信するように構成される。当該第１の通知メッセージは第１のロック・サーバの故障に関する情報を運搬し、第２のロック・サーバは、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第２のロック・サーバが第１のロック・サーバの引継ぎロック・サーバであると判定するように構成され、当該引継ぎロック・サーバはサイレント状態に入る。第３のロック・サーバは、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第３のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバでないと判定するように構成される。ロッキング要求を受信した後、非引継ぎロック・サーバであると判定される第３のロック・サーバが当該ロック要求に従ってロック許可情報を割り当てる。
【００１６】
第３の態様によれば、本発明の１実施形態では、分散システムにおける故障処理を実装するロック・サーバを提供する。当該ロック・サーバは受信モジュール８０１、処理モジュール８０３、および記憶モジュール８０５を含む。記憶モジュール８０５はロック・サーバ引継ぎ関係情報を格納し、受信モジュール８０１は第１の通知メッセージを受信し、当該第１の通知メッセージを処理モジュール８０３に送信するように構成される。当該第１の通知メッセージは故障したロック・サーバに関する情報を運搬する。処理モジュール８０３は、当該第１の通知メッセージを受信した後、当該ロック・サーバが当該故障したロック・サーバの引継ぎロック・サーバであるかどうかを当該ロック・サーバ引継ぎ関係情報に従って判定するようにさらに構成される。当該ロック・サーバが当該故障したロック・サーバの引継ぎロック・サーバである場合、当該ロック・サーバはサイレント状態に入る。処理モジュール８０３は、ロッキング要求を受信した後に当該ロック・サーバがサイレント状態にあるかどうかを判定し、当該ロック・サーバがサイレント状態にない場合、当該ロッキング要求に従ってロック許可情報を割り当てるか、または、当該ロック・サーバがサイレント状態にある場合、拒否応答メッセージを返し、当該割り当てられたロック許可情報または当該拒否応答メッセージを受信モジュール８０１に送信するようにさらに構成される。受信モジュール８０１は、受信されたロック許可情報または受信された拒否応答メッセージをロック・プロキシに返すようにさらに構成される。
【００１７】
第４の態様によれば、本発明の１実施形態では、ロック・サーバ引継ぎ関係情報およびロック許可情報テーブルを格納するように構成されたメモリ９０１と、外部接続を提供するように構成されたインタフェース９０２と、コンピュータ・プログラムを格納するように構成されたコンピュータ可読媒体９０３と、メモリ９０１、インタフェース９０２、およびコンピュータ可読媒体９０３に接続され、当該プログラムを実行することによって、ロック・サーバの故障を処理するための上述の方法を実装するように構成されたプロセッサ９０４とを備えた、分散システムにおける故障処理を実装するロック・サーバを提供する。
【００１８】
第５の態様によれば、本発明の１実施形態では、受信モジュール１００１、処理モジュール１００３、記憶モジュール１００５、および送信モジュール１００７を備えた、分散システムにおいて故障処理を実装するロック・プロキシ装置を提供する。受信モジュール１００１は、プロトコル・サーバにより送信されたロック要求を受信し、当該受信されたロック要求を処理モジュール１００３に送信するように構成される。当該ロック要求はロック回収要求またはロッキング要求である。処理モジュール１００３は、当該ロック要求を受信した後、記憶モジュール１００５に格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該受信されたロック要求を送信モジュール１００７に送信するように構成され、送信モジュール１００７は当該ロック要求を決定されたロック・サーバに送信するように構成される。
【００１９】
第５の態様を参照して、第５の態様の第１の可能な実装方式では、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報はコンシステント・ハッシュ・リングを用いることにより決定され、処理モジュール１００３が当該ロック要求を処理するためのロック・サーバを記憶モジュール１００５に格納されたロック・サーバ管理範囲情報に従って決定することは特に、処理モジュール１００３が、当該コンシステント・ハッシュ・リングの時計方向または反時計方向に従って、当該ロック要求を処理するためのロック・サーバを決定することである。処理モジュール１００３が、記憶モジュール１００５に格納されたロック・サーバ引継ぎ関係情報に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定することは特に、処理モジュール１００３が、当該コンシステント・ハッシュ・リングの同一方向に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定することである。
【００２０】
第６の態様によれば、本発明の１実施形態では、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を格納するように構成されたメモリ１１０１と、外部接続を提供するように構成されたインタフェース１１０２と、コンピュータ・プログラムを格納するように構成されたコンピュータ可読媒体１１０３と、メモリ１１０１、インタフェース１１０２、およびコンピュータ可読媒体１１０３に接続され、当該プログラムを実行することによって、ロック・サーバの故障を処理するための上述の方法を実装するように構成されたプロセッサ１１０４とを備えた、分散システムにおける故障処理を実装するロック・プロキシ装置を提供する。
【００２１】
第７の態様によれば、本発明の１実施形態では、上述のロック・サーバおよび上述のロック・プロキシ装置を備えた、分散システムにおける故障処理を実装するロック・マネージャを提供する。
【００２２】
本発明の諸実施形態では、分散システム内のロック・サーバはロック・サーバの引継ぎ関係情報を記録する。したがって、ロック・サーバの１つが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバが当該ロック・サーバの引継ぎ関係情報に従って決定され、当該引継ぎロック・サーバのみがサイレントであり、非引継ぎロック・サーバは正常に実行し、ロッキング要求を正常に処理することができる。当該方法では、当該分散システム内のロック・サーバが故障しているとき、影響範囲を最小化でき、引継ぎロック・サーバのみがサイレントであり、非引継ぎロック・サーバは正常に実行する。これにより、サービスの正常な実行に影響が及ばず、分散システムの安定性が高まる。
【図面の簡単な説明】
【００２３】
【図１】先行技術における分散システムの略構造図である。
【図２】本発明の１実施形態に従う分散システムの略構造図である。
【図３−１】本発明の１実施形態に従うコンシステント・ハッシュ・リングの略図である。
【図３−２】本発明の１実施形態に従う別のコンシステント・ハッシュ・リングの略図である。
【図３−３】本発明の１実施形態に従う更新されたコンシステント・ハッシュ・リングの略図である。
【図３−４】本発明の１実施形態に従うさらに別のコンシステント・ハッシュ・リングの略図である。
【図３−５】本発明の１実施形態に従う更新されたコンシステント・ハッシュ・リングの略図である。
【図４−１】本発明の１実施形態に従うロック・サーバの故障を処理するための方法を実装する分散システムの略構造図である。
【図４−２】本発明の１実施形態に従う分散システムにおけるロック・サーバの故障を処理するための方法の略流れ図である。
【図４−３】本発明の１実施形態に従う分散システムにおけるロック・サーバの故障を処理するための別の方法の略流れ図である。
【図５−１】本発明の１実施形態に従うロック・サーバの故障を処理するための方法を実装する分散システムの略構造図である。
【図５−２】本発明の１実施形態に従う分散システムにおけるロック・サーバの故障を処理するための方法の略流れ図である。
【図５−３】本発明の１実施形態に従うコンシステント・ハッシュ・リングの略図である。
【図６−１】本発明の１実施形態に従うロック・サーバの故障を処理するための方法を実装するさらに別の分散システムの略構造図である。
【図６−２】本発明の１実施形態に従う分散システムにおけるロック・サーバの故障を処理するための方法の略流れ図である。
【図７】本発明の１実施形態に従うロック・サーバの故障を処理するための分散システムの略構造図である。
【図８】本発明の１実施形態に従う分散システムにおける故障処理を実装するロック・サーバの略構造図である。
【図９】本発明の１実施形態に従う分散システムにおける故障処理を実装するロック・サーバ装置の略図である。
【図１０】本発明の１実施形態に従う分散システムにおける故障処理を実装するロック・プロキシの略構造図である。
【図１１】本発明の１実施形態に従う分散システムにおける故障処理を実装するロック・プロキシ装置の略図である。
【図１２】本発明の１実施形態に従う分散システムにおける故障処理を実装するロック・マネージャの略構造図である。
【図１３】本発明の１実施形態に従う分散システムにおける故障処理を実装するノード装置の略図である。
【発明を実施するための形態】
【００２４】
分散システム内のロック・サーバが故障しているとき、全てのロック・サーバをサイレントにする必要があり、サイレント期間の間は、ロック回収要求のみを処理できロッキング要求を処理できないという問題を解決するために、本発明の諸実施形態では、分散システム内の各ロック・サーバがロック・サーバ引継ぎ関係情報を格納する解決策を提供する。このように、ロック・サーバが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバが当該ロック・サーバ引継ぎ関係情報を用いて決定され、非引継ぎロック・サーバ（当該システム内の引継ぎロック・サーバを除いたロック・サーバ）はロッキング要求を正常に処理することができ、それにより、故障したロック・サーバの影響範囲が最小化され、システム全体の信頼性が高まる。
【００２５】
本発明の１実施形態に従う分散システムを図２に示す。複数のアプリケーション・ホストがＮＡＳネットワークを用いて複数のノード装置に接続される。各ノード装置はプロトコル・サーバとロック・プロキシを含む。当該プロトコル・サーバは、ＦＣサーバ、ＮＦＳサーバ、およびＳＭＢサーバのような、様々なプロトコルを使用するサーバであり、ＮＡＳネットワークを用いて上層のアプリケーション・ホストと通信する。異なるプロトコル・サーバに対して、動作原理は同様である。プロトコル・サーバとロック・プロキシは１対１の対応関係にあり、同一のノード装置に配置される。ロック・プロキシはさらにロック・サーバと対応関係にあり、当該ロック・サーバを、当該プロトコル・サーバおよびロック・プロキシと同一のノード装置に配置してもよく、または、別のノードに独立に配置してもよい。本発明の諸実施形態では、ロック・サーバはプロトコル・サーバおよびロック・プロキシと同一のノード装置に配置される。
【００２６】
当該分散システムでは、管理ノードを独立に配置してノード装置を制御および管理してもよく、または、１つのノード装置がノード装置上の制御および管理を実施してもよい。当該複数のノード装置を管理し制御するノード装置は一般にマスタノード装置であり、または、管理ノード装置と称してもよい。
【００２７】
図２に示すように、当該分散システムはｎ個のノード装置を含む。ｎは２より大きい自然数である。各ノード装置はプロトコル・サーバＰＳとロック・プロキシＰを含む。区別の簡単さのため、ノード装置１内のプロトコル・サーバとロック・プロキシをそれぞれＰＳ１およびＰ１で表す。同様に、ノード装置２内のプロトコル・サーバとロック・プロキシをそれぞれＰＳ２およびＰ２で表す。残りは類推により推測することができ、ここではさらに説明を提供することはしない。
【００２８】
上述のように、ロック・サーバを、プロトコル・サーバおよびロック・プロキシと同一のノード装置に配置してもよく、または、異なるノード装置に配置してもよい。ロック・サーバをＳで表す。図２に示す分散システムがｍ個のロック・サーバを含んでもよい。ｍは２より大きい自然数である。１つのロック・サーバが複数のロック・プロキシに対応してもよい。即ち、ロック・サーバＳ１がノード装置１内のロック・プロキシＰ１に対応してもよく、ノード装置２内のロック・プロキシＰ２にさらに対応してもよい。
【００２９】
明確さのため、図２では、ロック・サーバはプロトコル・サーバおよびロック・プロキシと同一のノード装置に配置される。例えば、ロック・サーバＳ１、ロック・プロキシＰ１、およびプロトコル・サーバＰＳ１はノード装置１に配置され、ロック・サーバＳ２、ロック・プロキシＰ２、およびプロトコル・サーバＰＳ２はノード装置２に配置され、残りは類推により推測することができる。この場合、１つのロック・サーバが依然として複数のロック・プロキシに対応してもよい。しかし、この場合、ロック・プロキシは、同一のノード内のロック・サーバに格納された情報を共有してもよい。したがって、ロック・プロキシのキャッシュは比較的少ない情報を格納することができる。
【００３０】
本発明の当該実施形態では、分散システム内のロック・サーバが故障しているとき、当該分散システム内の別のロック・サーバが当該故障したロック・サーバのロック関連のサービスを引き継いでもよい。当該故障したロック・サーバのロック関連のサービスを引き継ぐロック・サーバは引継ぎロック・サーバと呼ばれる。ロック・サーバが故障しているとき、当該故障したロック・サーバのロック関連のサービスが１つの引継ぎロック・サーバによって引き継がれてもよく、または、当該故障したロック・サーバのロック関連のサービスが複数の引継ぎロック・サーバによって引き継がれてもよい。以下の実施形態では、当該故障したロック・サーバのロック関連のサービスが１つの引継ぎロック・サーバにより引き継がれるケースを説明のために使用する。複数の引継ぎロック・サーバがあるとき、当該複数の引継ぎロック・サーバの実装原理は同様であるが、アルゴリズムを、当該故障したロック・サーバのロック関連のサービスを当該複数の引継ぎロック・サーバの間で割り当てるように予め設定する必要がある。詳細についてはここでは再度説明することはしない。
【００３１】
本発明の当該実施形態では、ロック・サーバ引継ぎ関係情報を２つの方式で記録することができる。一方の方式は（表１に示すように）テーブルを用いることによって当該情報を記録することであり、他方の方式は（図３に示すように）コンシステント・ハッシュ・リングを用いることによって当該情報を決定することである
【００３２】
本発明の当該実施形態では、４つのロック・サーバを有する分散システムを説明のための例として用いる。当該４つのロック・サーバはＳ１、Ｓ２、Ｓ３、およびＳ４である。ロック・サーバ引継ぎ関係情報が、表１（ロック・サーバ引継ぎ関係テーブル）に示すようにテーブルを用いることによって記録される。当該ロック・サーバ引継ぎ関係テーブルは管理ノードにより構成され、格納のために全てのロック・サーバに送信され、または、各ロック・サーバ内で別々に構成してもよい。
【００３３】
【表１】
0006388290.tif 000002
【００３４】
表１に示すように、ロック・サーバＳ１が故障しているとき、分散システム内の故障していないロック・サーバは通知メッセージを受信し、当該通知メッセージを受信した後、当該分散システム内の故障していないロック・サーバの各々は、当該ロック・サーバがロック・サーバＳ１の引継ぎロック・サーバであるかどうかをローカルに格納されたロック・サーバ引継ぎ関係テーブルに従って判定する。表１に示すように、Ｓ２はＳ２がロック・サーバＳ１の引継ぎロック・サーバであると判定し、Ｓ３はＳ３がロック・サーバＳ１の引継ぎロック・サーバでないと判定し、Ｓ４はＳ４がロック・サーバＳ１の引継ぎロック・サーバでないと判定する。判定結果に従って、ロック・サーバＳ２はサイレント状態に入り、この場合、ロック回収要求のみを処理するが、ロッキング要求は処理せず、ロック・サーバＳ３およびＳ４はサイレントでなく、ロッキング要求を正常に処理することができる。
【００３５】
本発明の当該実施形態ではさらに、ロック・サーバ引継ぎ関係情報を記録する別の方式、即ち、分散システム内のロック・サーバの間の引継ぎ関係をコンシステント・ハッシュ・リングの具体的な順序に従って決定するための別の方式を提供する。
【００３６】
ロック・サーバがロック・プロキシおよびプロトコル・サーバと同一のノード装置に配置されるとき、コンシステント・ハッシュ・リングを、コンシステント・ハッシング・アルゴリズムを用いることによってノード装置の名前に基づいて取得してもよく、または、コンシステント・ハッシュ・リングを、コンシステント・ハッシング・アルゴリズムを用いることによってノード装置のＩＰアドレスに基づいて取得してもよい。ロック・サーバがロック・プロキシおよびプロトコル・サーバと同一のノード装置に配置されていないとき、コンシステント・ハッシュ・リングを、コンシステント・ハッシング・アルゴリズムを用いることによってロック・サーバの名前またはＩＤに基づいて取得してもよい。確かに、コンシステント・ハッシュ・リングをまた、コンシステント・ハッシング・アルゴリズムを用いることによって別の識別子に基づいて取得してもよい。本発明の当該実施形態では、コンシステント・ハッシング・アルゴリズムを用いることによってロック・サーバのＩＤに基づいてハッシング計算を実施してコンシステント・ハッシュ・リングを取得することを、説明のための例として使用する。
【００３７】
管理ノードは、各ロック・サーバ内で、コンシステント・ハッシング・アルゴリズムおよびロック・サーバ引継ぎ関係を決定するためのルールのような情報を予め構成する。このように、当該システムを初期化し開始した後、各ロック・サーバは当該事前に構成された情報に従って対応するハッシング計算を行い、当該ロック・サーバ引継ぎ関係を示すコンシステント・ハッシュ・リングを取得する。アルゴリズム、パラメータ、および範囲決定ルールは全て同一であるので、各ロック・サーバは計算を通じて同一のコンシステント・ハッシュ・リングを取得する。確かに、管理ノードは、事前に構成された情報に従って計算を行ってコンシステント・ハッシュ・リングを取得してもよく、次いで、計算を通じて取得された当該コンシステント・ハッシュ・リングを各ロック・サーバにブロードキャストする。管理ノードおよび各ロック・サーバはさらに、コンシステント・ハッシュ・リングを取得するための計算を別々に行ってもよい。この場合、アルゴリズム、パラメータ、および予め設定されたルールは全て同一であるので、管理ノードおよび各ロック・サーバは別々に、計算を通じて同一のコンシステント・ハッシュ・リングを取得し、同一の引継ぎロック・サーバを決定する。
【００３８】
以下では、ハッシング計算を各ロック・サーバのＩＤに基づいて実施してコンシステント・ハッシュ・リングを取得することを、説明のための例として用いる。例えば、４つのロック・サーバが分散システムにあり、当該４つのロック・サーバのＩＤは１、２、３、および４である。各ロック・サーバは、コンシステント・ハッシング・アルゴリズムを用いることによってＩＤに基づいてハッシング計算を実施し、計算結果を時計方向に従って昇順で配置してコンシステント・ハッシュ・リングを取得する。図３−１に示すように、当該コンシステント・ハッシュ・リングは０‐２３２であり、当該ロック・サーバのＩＤに基づいてハッシング計算を行うことで得られた結果は、ｈａｓｈ（Ｓ１）＝５０００、ｈａｓｈ（Ｓ２）＝８０００、ｈａｓｈ（Ｓ３）＝１０２４、およびｈａｓｈ（Ｓ４）＝５１２である。時計方向に従って、０から開始して、当該ハッシング・リング上のロック・サーバの位置は順番にロック・サーバＳ４、ロック・サーバＳ３、ロック・サーバＳ１、およびロック・サーバＳ２である。
【００３９】
次いで、当該計算結果を、図３−２に示すように反時計方向に従って昇順に配置してコンシステント・ハッシュ・リングを取得してもよい。反時計方向に従う当該ハッシング・リング上のロック・サーバの位置は順番にロック・サーバＳ４、ロック・サーバＳ３、ロック・サーバＳ１、およびロック・サーバＳ２である。
【００４０】
ロック・サーバ引継ぎ関係を決定するために、引継ぎロック・サーバを、生成されたコンシステント・ハッシュ・リングの時計方向に従って決定でき、または、引継ぎロック・サーバを、生成されたコンシステント・ハッシュ・リングの反時計方向に従って決定することができる。
【００４１】
図３−１に示すように、ロック・サーバのＩＤに基づいて実施されたハッシング計算の結果はコンシステント・ハッシュ・リング上で時計方向に従って配置される。ロック・サーバ引継ぎ関係が当該コンシステント・ハッシュ・リングの時計方向に従って決定される場合、ロック・サーバＳ１の引継ぎロック・サーバはＳ２であり、ロック・サーバＳ２の引継ぎロック・サーバはＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはＳ１である。同様に、ロック・サーバ引継ぎ関係が図３−１におけるコンシステント・ハッシュ・リングの反時計方向に従って決定される場合、ロック・サーバＳ１の引継ぎロック・サーバはＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはＳ２であり、ロック・サーバＳ２の引継ぎロック・サーバはＳ１である。
【００４２】
図３−２に示すコンシステント・ハッシュ・リングに対して、引継ぎロック・サーバをコンシステント・ハッシュ・リングの時計方向に従って、または、当該コンシステント・ハッシュ・リングの反時計方向に従って決定してもよい。その実装原理は上述の段落で説明したものと同じであり、ここでは例を用いて説明をさらに提供することはしない。
【００４３】
したがって、ロック・サーバ引継ぎ関係を、ロック・サーバの識別子に基づいて生成されたコンシステント・ハッシュ・リングの時計方向に従って、または、当該コンシステント・ハッシュ・リングの反時計方向に従って決定することができる。
【００４４】
ロック・サーバがロック・プロキシおよびプロトコル・サーバと同一のノード装置に配置されるとき、ロック・サーバの間の引継ぎ関係を決定するための原理は上述の方法のものと同様である。差異は、この場合のコンシステント・ハッシュ・リングを、コンシステント・ハッシング・アルゴリズムを用いることによってノードの名前に基づいて取得してもよい点にある。
【００４５】
本発明の当該実施形態では、ノード装置内のロック・プロキシもロック・サーバ引継ぎ関係情報を格納する必要があり、さらにロック・サーバ管理範囲情報を格納する必要がある。このように、（ロック回収要求またはロッキング要求のような）ロック要求を受信した後に、ロック・プロキシは、当該格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定する。当該ロック要求を処理するための決定されたロック・サーバが故障している場合、ロック・プロキシは引継ぎロック・サーバを当該ロック・サーバ引継ぎ関係情報に従って決定し、当該ロック要求を処理のために当該引継ぎロック・サーバに送信する。
【００４６】
ロック・プロキシにより格納されたロック・サーバ引継ぎ関係情報はロック・サーバにより格納されたロック・サーバ引継ぎ関係情報と同じである。ロック・サーバ引継ぎ関係テーブルが当該ロック・サーバ引継ぎ関係情報を記録するために使用されるとき、当該ロック・サーバ引継ぎ関係テーブルは管理ノードにより構成され、格納のために全てのロック・プロキシに送信される。コンシステント・ハッシュ・リングが当該ロック・サーバ引継ぎ関係情報を決定するために使用されるとき、当該コンシステント・ハッシュ・リングを、計算を通じて管理ノードにより取得し、次いで各ロック・プロキシに送信してもよく、または、各ロック・プロキシを、管理ノードにより事前に構成してもよく、次いで、各ロック・プロキシは別々に計算を実施して同一のコンシステント・ハッシュ・リングを取得し、または、管理ノードおよび各ロック・プロキシは別々に計算を実施して同一のコンシステント・ハッシュ・リングを取得してもよい。ロック・プロキシ内のコンシステント・ハッシュ・リングは当該ロック・サーバ内のコンシステント・ハッシュ・リングと同じである。ロック・プロキシ内のロック・サーバ引継ぎ関係情報を記録する方式はロック・サーバ内のロック・サーバ引継ぎ関係情報を記録する方式と同じである。これは上で詳細に説明されており、ここではさらに説明を提供することはしない。
【００４７】
ロック・プロキシ内のロック・サーバ引継ぎ関係情報がロック・サーバ引継ぎ関係テーブルを用いることによって記録される場合、ロック・プロキシ内のロック・サーバ管理範囲情報も（表２に示すように）テーブルを用いることによって記録する。当該ロック・サーバ管理範囲情報を、管理ノードにより事前に構成し、各ロック・プロキシにロック・サーバ管理範囲記録テーブルの形で送信してもよい。当該ロック・サーバ管理範囲記録テーブルを表２に示す。
【００４８】
【表２】
0006388290.tif 000003
【００４９】
ロック要求を受信した後に、ロック・プロキシは、同一のコンシステント・ハッシング・アルゴリズムを用いることによって当該ロック要求内のファイルの識別子に基づいてハッシング計算を実施し、計算結果が入る範囲に従って、当該ロック要求を処理するための対応するロック・サーバを決定する。例えば、当該ロック要求がロッキング要求であり、当該ロッキング要求で運搬されるファイルが（ｆｏｏ１．ｔｘｔ）である場合、ロック・プロキシは、（ｆｏｏ１．ｔｘｔ）に対してハッシング計算を行って、４５００の結果を取得する。当該結果は、当該ロッキング要求をロック・サーバＳ１により管理すべきであることを示し、ロック・プロキシが当該ロッキング要求をロック・サーバＳ１に送信する。別の例として、ロック回収要求で運搬されるファイル情報が（ｆｏｏ８．ｔｘｔ）である場合、ロック・プロキシは（ｆｏｏ８．ｔｘｔ）に基づいてハッシング計算を実施して、９０００の結果を取得する。当該結果は、当該ロック回収要求をロック・サーバＳ４により管理すべきであることを示し、ロック・プロキシは当該ロック回収要求をロック・サーバＳ４に送信する。ロック・サーバ管理範囲情報に従ってロック・プロキシにより決定されたロック・サーバが故障している場合、ロック・プロキシはさらに、ロック・サーバ引継ぎ関係情報に従って当該故障したロック・サーバの引継ぎロック・サーバを決定する必要がある。
【００５０】
ロック・サーバ管理範囲情報およびロック・サーバ引継ぎ関係情報を、１つのテーブル（例えば表３、ロック・サーバ情報テーブル）に埋め込んでもよく、または、表１および表２に示すように、ロック・サーバ引継ぎ関係テーブルおよびロック・サーバ管理範囲記録テーブルにそれぞれ格納してもよい。
【００５１】
【表３】
0006388290.tif 000004
【００５２】
ロック・サーバが故障しているとき、ロック・プロキシは、故障したロック・サーバを、ロック・サーバ管理範囲記録テーブル、ロック・サーバ引継ぎ関係テーブル、および／またはロック・サーバ情報テーブルにおいて、故障とマークする。ロック要求を受信した後にロック・プロキシは、当該ロック要求で運搬されるファイルの一意な識別子に基づいてハッシング計算を実施し、計算を通じて取得された結果が入るロック・サーバ管理範囲を、当該ロック・サーバ管理範囲記録テーブルまたは当該ロック・サーバ情報テーブルに従って決定する。決定されたロック・サーバが故障している場合、ロック・プロキシは、当該故障したロック・サーバの引継ぎロック・サーバを当該ロック・サーバ引継ぎ関係テーブルまたは当該ロック・サーバ情報テーブルに従って決定し、当該ロック要求を処理のために当該引継ぎロック・サーバに送信する。
【００５３】
表３に示すように、ロック・サーバＳ２が故障している。ロック・プロキシにより受信されたロック回収要求で運搬されるファイル情報が（ｆｏｏ５．ｔｘｔ）である場合、ロック・プロキシは（ｆｏｏ５．ｔｘｔ）に対してハッシング計算を実施し７０００の結果を取得した後、ロック・サーバ管理範囲情報によれば、当該ロック回収要求をロック・サーバＳ２により処理すべきである。しかし、現在、ロック・サーバＳ２が故障状態にあり、ロック・サーバ引継ぎ関係情報によれば、ロック・サーバＳ２の引継ぎロック・サーバはロック・サーバＳ４である。したがって、ロック・プロキシは当該ロック回収要求を、処理のために引継ぎロック・サーバＳ４に送信する。
【００５４】
予め設定した時刻に到達したとき、または、ロック・プロキシが第２の通知メッセージを管理ノードから受信した後、ロック・プロキシは、更新されたロック・サーバ引継ぎ関係情報も更新されたロック・サーバ管理範囲情報も故障したロック・サーバに関する情報を含まないように、格納されたロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を更新する必要がある。当該第２の通知メッセージは、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を更新するようにロック・プロキシに指示するために使用され、当該第２の通知メッセージは故障したロック・サーバに関する情報を運搬する。
【００５５】
確かに、管理ノードはまた、更新されたロック・サーバ引継ぎ関係情報および更新されたロック・サーバ管理範囲情報を各ロック・プロキシに送信してもよい。表３を例として用いると、更新されたロック・サーバ情報テーブルが表４に示される。
【００５６】
【表４】
0006388290.tif 000005
【００５７】
ロック・プロキシ内のロック・サーバ引継ぎ関係がコンシステント・ハッシュ・リングを用いることによって決定されるとき、当該コンシステント・ハッシュ・リングを用いることによって決定できるロック・サーバ引継ぎ関係に加えて、各ロック・サーバの管理範囲を、当該コンシステント・ハッシュ・リングを用いることによって決定することもできる。
【００５８】
本発明の当該実施形態では、同一のコンシステント・ハッシング・アルゴリズムおよびロック・サーバ管理範囲を決定するための同一のルールのような情報を各ロック・プロキシで構成してもよい。このように、システムを初期化し開始した後に、ロック・プロキシは、構成したコンシステント・ハッシング・アルゴリズム、ロック・サーバ管理範囲を決定するためのルール等に従って計算を実施して、コンシステント・ハッシュ・リングを取得する。当該コンシステント・ハッシング・アルゴリズムおよびロック・サーバ管理範囲を決定するためのルールのような、ロック・プロキシで構成された情報は、計算を通じてロック・プロキシにより取得されたコンシステント・ハッシュ・リングがロック・サーバ内のコンシステント・ハッシュ・リングと同じであるように、当該ロック・サーバで構成された関連情報と同一でなければならない。このように、（ロッキング要求またはロック回収要求のような）ロック要求を受信した後に、ロック・プロキシは、コンシステント・ハッシュ・リングに従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ロック要求を当該決定されたロック・サーバに送信してもよい。当該決定されたロック・サーバが故障している場合、ロック・プロキシはまた、当該故障したロック・サーバの引継ぎロック・サーバをコンシステント・ハッシュ・リングに従って決定してもよく、当該ロック要求を処理のために当該引継ぎロック・サーバに送信する。
【００５９】
同様に、計算を通じてコンシステント・ハッシュ・リングを取得した後、管理ノードはまた、当該コンシステント・ハッシュ・リングを各ロック・プロキシおよび各ロック・サーバにブロードキャストしてもよい。
【００６０】
例えば、図３−１に示すコンシステント・ハッシュ・リングが時計方向に従って生成され、ロック・サーバ引継ぎ関係を当該コンシステント・ハッシュ・リングの時計方向に従って決定してもよい。この場合、ロック・サーバ管理範囲も当該コンシステント・ハッシュ・リングの時計方向に従って決定される必要がある。図３−４に示すように、ロック・サーバＳ１の引継ぎロック・サーバはＳ２であり、ロック・サーバＳ２の引継ぎロック・サーバはＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはＳ１である。ロック・サーバＳ３およびロック・サーバＳ１の間の範囲（１０２４‐５０００）はロック・サーバＳ１の管理範囲である。即ち、ロック・サーバＳ３およびロック・サーバＳ１の間の範囲はロック・サーバＳ１により時計方向に管理される。同様に、ロック・サーバＳ１およびロック・サーバＳ２の間の範囲（５０００‐８０００）はロック・サーバＳ２の管理範囲であり、ロック・サーバＳ２およびロック・サーバＳ４の間の範囲（８０００‐５１２）はロック・サーバＳ４の管理範囲であり、ロック・サーバＳ４およびロック・サーバＳ３の間の範囲（５１２‐１０２４）はロック・サーバＳ３の管理範囲である。
【００６１】
図３−１に示すコンシステント・ハッシュ・リングに関して、ロック・サーバ引継ぎ関係も当該コンシステント・ハッシュ・リングの反時計方向に従って決定してもよい。この場合、ロック・サーバの管理範囲も当該コンシステント・ハッシュ・リングの反時計方向に従って決定する必要がある。決定方式は当該ロック・サーバ引継ぎ関係を当該コンシステント・ハッシュ・リングの時計方向に従って決定する方法と同じであり、ここではさらに説明を提供することはしない。
【００６２】
アプリケーション・ホストが分散システム内のファイルにアクセスする必要があるとき、プロトコル・サーバはロッキング要求をロック・プロキシに送信し、ロック・プロキシは、当該ファイルの（ＦＳＩＤまたはＦＩＤのような）一意な識別子に基づいてハッシング計算を実施し、当該ファイルが属する範囲を計算結果に従って決定し、当該ロッキング要求を、対応する処理に対する範囲を管理するロック・サーバに送信する。ファイルの一意な識別子に基づいてハッシング計算を実施するために使用されるハッシング・アルゴリズムは、コンシステント・ハッシュ・リングを生成するためのハッシング・アルゴリズムと同一である必要がある。例えば、ロッキング要求で運搬されているファイル情報が（ｆｏｏ２．ｔｘｔ）であり、ロック・プロキシが当該ファイル情報（ｆｏｏ２．ｔｘｔ）に基づいてハッシング計算を実施し６５００の結果を得た場合、分かるように、当該値は当該コンシステント・ハッシュ・リング上のロック・サーバＳ１およびロック・サーバＳ２の間の範囲に入り、当該ロッキング要求はロック・サーバＳ２により処理される。
【００６３】
ロック・サーバＳ２が故障しているとき、ロック・プロキシはコンシステント・ハッシュ・リング上のロック・サーバＳ２を故障としてマークする。この場合、ロック要求を受信した後に、ロック・プロキシは、当該ロック要求で運搬されるファイル情報（ｆｏｏ３．ｔｘｔ）に基づいてハッシング計算を実施し、７５００の結果を得る。当該値は当該コンシステント・ハッシュ・リング上のロック・サーバＳ１およびロック・サーバＳ２の間の範囲に入る。当該範囲はロック・サーバＳ２により管理される。しかし、ロック・サーバＳ２が故障状態にあるので、当該コンシステント・ハッシュ・リングによれば、ロック・サーバＳ２の引継ぎロック・サーバはロック・サーバＳ４である。したがって、ロック・プロキシは当該ロック要求を、処理のためにロック・サーバＳ４に送信する。
【００６４】
予め設定した時刻に到達したとき、または、ロック・プロキシが第２の通知メッセージを管理ノードから受信した後に、ロック・プロキシは、更新されたロック・サーバ引継ぎ関係情報も更新されたロック・サーバ管理範囲情報も故障したロック・サーバに関する情報を含まないように、格納されたロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を更新する必要がある。確かに、当該ロック・サーバ引継ぎ関係情報および当該ロック・サーバ管理範囲情報を、管理ノードにより更新し、次いで、各ロック・プロキシおよび各ロック・サーバに送信してもよい。
【００６５】
更新されたコンシステント・ハッシュ・リングを図３−３に示す。この場合、各ロック・サーバの管理範囲は以下のように更新される。即ち、ロック・サーバＳ４の管理範囲は（５０００‐５１２）であり、ロック・サーバＳ３の管理範囲は（５１２‐１０２４）であり、ロック・サーバＳ１の管理範囲は（１０２４‐５０００）である。ロック・サーバＳ１の引継ぎロック・サーバはＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはＳ１である。
【００６６】
図３−２に示すコンシステント・ハッシュ・リングは反時計方向に従って生成され、次いで、ロック・サーバ引継ぎ関係を当該コンシステント・ハッシュ・リングの反時計方向に従って決定してもよい。この場合、各ロック・サーバの管理範囲も、当該コンシステント・ハッシュ・リングの反時計方向に従って決定する必要がある。例えば、図３−２に示すように、ロック・サーバＳ１の引継ぎロック・サーバはＳ２であり、ロック・サーバＳ２の引継ぎロック・サーバはＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはＳ１である。ロック・サーバＳ１およびロック・サーバＳ２の間の範囲（５０００‐８０００）はロック・サーバＳ２により管理され、ロック・サーバＳ２およびロック・サーバＳ４の間の範囲（８０００‐５１２）はロック・サーバＳ４により管理され、ロック・サーバＳ４およびロック・サーバＳ３の間の範囲（５１２‐１０２４）はロック・サーバＳ３により管理され、ロック・サーバＳ３およびロック・サーバＳ１の間の範囲（１０２４‐５０００）はロック・サーバＳ１により管理される。
【００６７】
ロック・サーバ引継ぎ関係を図３−２に示すコンシステント・ハッシュ・リングに従って決定するために、当該ロック・サーバ引継ぎ関係を当該コンシステント・ハッシュ・リングの時計方向に従って決定してもよい。この場合、各ロック・サーバの管理範囲も当該コンシステント・ハッシュ・リングの時計方向に従って決定する必要がある。決定方式は、当該ロック・サーバ引継ぎ関係を当該コンシステント・ハッシュ・リングの反時計方向に従って決定する方法と同じであり、ここではさらに説明を提供することはしない。
【００６８】
コンシステント・ハッシュ・リングをコンシステント・ハッシング・アルゴリズムを用いることによってノードの名前またはロック・サーバのＩＤに基づいて取得する方法については、既存の技術を使用することができ、詳細についてはここでは再度説明することはしない。
【００６９】
新たなロック・サーバが分散システムに追加されたとき、管理ノード装置は当該分散システムにおいて第３の通知メッセージをブロードキャストする。当該第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは当該新たに追加されたロック・サーバに関する情報を運搬する。当該分散システム内のロック・サーバおよびロック・プロキシは、ローカルに格納されたロック・サーバ引継ぎ関係情報またはローカルに格納されたロック・サーバ管理範囲情報を、当該第３の通知メッセージで運搬される当該新たに追加されたロック・サーバに関する情報に従って更新する。確かに、当該ロック・サーバ引継ぎ関係情報および当該ロック・サーバ管理範囲情報を、管理ノードにより更新し、次いで当該分散システム内のロック・プロキシおよびロック・サーバに送信してもよい。
【００７０】
（表１に示すように）ロック・サーバ引継ぎ関係情報または（表２に示すように）ロック・サーバ管理範囲情報がテーブルの形で記録される場合には、ロック・サーバが追加されると、管理ノードは、再構成を通じて、当該ロック・サーバ引継ぎ関係または当該ロック・サーバ管理範囲情報を更新する必要がある。管理ノードは、更新されたテーブルを各ロック・サーバおよび各ロック・プロキシに送信してもよく、または、第３の通知メッセージを各ロック・サーバおよび各ロック・プロキシに送信（即ち、当該分散システムにおいて当該第３の通知メッセージをブロードキャスト）して、当該ロック・サーバ引継ぎ関係または当該ロック・サーバ管理範囲情報を更新するようにロック・サーバおよびロック・プロキシに指示してもよい。更新ルールをユーザの要求、システム負荷、およびトラフィック量のような情報に従って設定してもよく、これらは本発明の当該実施形態では限定されない。
【００７１】
新たなロック・サーバが分散システムに追加されたとき、更新されたロック・サーバ引継ぎ関係情報および更新されたロック・サーバ管理範囲情報を表４に示す。
【００７２】
【表５】
0006388290.tif 000006
【００７３】
コンシステント・ハッシュ・リングがロック・サーバ引継ぎ関係情報またはロック・サーバ管理範囲情報を決定するために使用されるとき、および、新たなロック・サーバが追加されたとき、当該新たなロック・サーバを検出した後、管理ノードは分散システムにおいて第３の通知メッセージをブロードキャストする。当該第３の通知メッセージは、当該新たなロック・サーバのＩＤ（またはコンシステント・ハッシュ・リングを取得するための計算を実施するのに使用される他の情報）を運搬する。当該第３の通知メッセージを受信した後、ロック・サーバおよびロック・プロキシは、ローカルなコンシステント・ハッシュ・リングを当該第３の通知メッセージで運搬される情報に従って更新する。当該第３の通知メッセージを受信した後、ロック・サーバ（新たに追加されたロック・サーバを含む）およびロック・プロキシは、当該通知メッセージで運搬されるロック・サーバのＩＤに基づいてハッシング計算を実施し、当該新たに追加されたロック・サーバをハッシング計算の結果に従ってローカルなコンシステント・ハッシュ・リングに追加し、当該コンシステント・ハッシュ・リングにおいて、当該コンシステント・ハッシュ・リング上の当該新たに追加されたロック・サーバおよび隣接するロック・サーバの間の管理範囲および引継ぎ関係を、決定されたルールに従って更新する。
【００７４】
図３−１に示すコンシステント・ハッシュ・リングは、ロック・サーバのＩＤおよび時計回りの原理に従う計算を通じて取得される。ロック・サーバ（例えば、Ｓ５）が分散システムに追加されると、管理ノードは第３の通知メッセージにロック・サーバＳ５のＩＤを追加し、当該第３の通知メッセージを分散システム内のロック・サーバに送信する。当該ロック・サーバはハッシング計算を、コンシステント・ハッシング・アルゴリズムを用いることによってロック・サーバＳ５のＩＤに基づいて実施する。計算を通じて取得された結果が３０００であると仮定すると、更新されたコンシステント・ハッシュ・リングが図３−５に示される。新たに追加されたロック・サーバＳ５は、当該コンシステント・ハッシュ・リング内のロック・サーバＳ３およびロック・サーバＳ１の間にある。対応して、ロック・サーバＳ３の引継ぎロック・サーバはロック・サーバＳ５に変更され、ロック・サーバＳ５の引継ぎロック・サーバはロック・サーバＳ１であり、ロック・サーバＳ１の管理範囲は（３０００‐５０００）に変更され、ロック・サーバＳ５の管理範囲は（１０２４‐３０００）である。当該コンシステント・ハッシュ・リング内の他のロック・サーバの引継ぎ関係および管理範囲は不変のままである。
【００７５】
本発明の１実施形態では、分散システムにおけるロック・サーバの故障を処理するための方法を提供する。当該方法の手続きを図４−２に示す。当該方法は図４−１に示す分散システムに適用可能である。本発明の当該実施形態における分散システムでは、ｉ個のロック・サーバがある。ｉは２より大きい自然数である。区別のため、当該ロック・サーバは、ロック・サーバＳ１、ロック・サーバＳ２、ロック・サーバＳ３、．．．、およびロック・サーバＳｉとして特定される。
【００７６】
分散システム内のロック・サーバ（例えば、ロック・サーバＳ１）が故障しているとき、本発明の当該実施形態における分散システムでのロック・サーバの故障を処理するための方法の手続きは以下の通りである。
【００７７】
ステップ４０１：当該分散システム内の故障していないロック・サーバが第１の通知メッセージを受信する。当該第１の通知メッセージは第１のロック・サーバの故障に関する情報を運搬する。
【００７８】
当該分散システム内のロック・サーバが故障しているとき、当該ロック・サーバが故障していることを検出した後、管理ノード装置は当該第１の通知メッセージをブロードキャストする。当該第１の通知メッセージは故障したロック・サーバＳ１の故障に関する情報を運搬する。当該分散システム内の故障していないロック・サーバは当該第１の通知メッセージを受信することができる。
【００７９】
ステップ４０３：当該第１の通知メッセージを受信した後、当該分散システム内の第２のロック・サーバが、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第２のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバであると判定し、当該引継ぎロック・サーバの役割を果たす当該第２のロック・サーバはサイレント状態に入る。
【００８０】
当該分散システム内の全てのロック・サーバはロック・サーバ引継ぎ関係情報をローカルに格納する。当該第１の通知メッセージを受信した後、ロック・サーバＳ２は、ロック・サーバＳ２がロック・サーバＳ１の引継ぎロック・サーバであると、当該ローカルに格納されたロック・サーバ引継ぎ関係情報に従って判定する。
【００８１】
ロック・サーバ引継ぎ関係情報は分散システム内の全てのロック・サーバの間の引継ぎ関係を記録する。即ち、ロック・サーバが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバが当該故障したロック・サーバのサービスを引き継ぐ。例えば、本発明の当該実施形態では、ロック・サーバＳ１の引継ぎロック・サーバはロック・サーバＳ２である。この場合、ロック・サーバＳ１が故障しているとき、ロック・サーバＳ１の対応するサービスはロック・サーバＳ２により引き継がれ、ロック・サーバＳ２はロック・サーバＳ１の元のサービスを処理する責任を負う。
【００８２】
サイレント状態に入ると、引継ぎロック・サーバは、サイレンス・タイマを有効にすることによってサイレント状態に入ることができる。当該引継ぎロック・サーバは当該サイレンス・タイマが切れたときサイレント状態を出てもよく、または、管理ノードによりサイレント状態を出るよう指示されてもよく、または、ロック回収要求の処理を完了した後にサイレント状態を出てもよく、本発明の当該実施形態では限定されない。
【００８３】
ステップ４０５：当該第１の通知メッセージを受信した後、当該分散システム内の第３のロック・サーバが、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第３のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバでないと判定する。
【００８４】
本発明の当該実施形態では、当該第１の通知メッセージを受信した後、ロック・サーバＳ３は、ロック・サーバＳ３が故障したロック・サーバＳ１の引継ぎロック・サーバではないと、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って判定する。当該第１の通知メッセージを受信した後、ロック・サーバＳ４は、ロック・サーバＳ４が故障したロック・サーバＳ１の引継ぎロック・サーバではないと、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って判定する。残りは類推により推測することができる。当該第１の通知メッセージを受信した後、ロック・サーバＳｉは、ロック・サーバＳｉが故障したロック・サーバＳ１の引継ぎロック・サーバではないと、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って判定する。
【００８５】
故障したロック・サーバの引継ぎロック・サーバでないロック・サーバを集合的に非引継ぎロック・サーバと称することができる。ロック・サーバが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバは当該故障したロック・サーバのサービスを引き継ぎ、非引継ぎロック・サーバのサービスは影響されない。即ち、非引継ぎロック・サーバはサービスを正常に処理することができる。
【００８６】
しかし、先行技術では、ロック・サーバが故障しているとき、分散システム内の全てのロック・サーバをサイレントにする必要があり、サイレント状態のロック・サーバはロック回収要求のみを処理することができるが、ロッキング要求を処理することはできない。したがって、ロック・サーバのうち１つが故障すると、分散システム全体がロッキング要求を処理することはできず、これが、サービス割込みを生じさせるか、または、複数のクライアントがファイルを同時に読書きするときシステム故障の問題すら生じさせる。しかし、本発明の当該実施形態では、ロック・サーバの間の引継ぎ関係が使用され、当該ロック・サーバの１つが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバのみが影響を受け（引継ぎロック・サーバはサイレント状態に入り、ロック回収要求のみを処理することができる）、非引継ぎロック・サーバのサービスは影響されず、即ち、当該非引継ぎロック・サーバはロッキング要求を処理することができる。このように、分散システム内のロック・サーバが故障しているとき、影響範囲を最小化でき、ロッキング要求を処理することができ、これが分散システム全体の安定性を保証する。
【００８７】
ロック・サーバ引継ぎ情報をロック・サーバ引継ぎ情報テーブルの方式で記録してもよく、または、ハッシング計算を、コンシステント・ハッシング・アルゴリズムを用いることによってロック・サーバのＩＤに基づいて実施してもよく、ロック・サーバのコンシステント・ハッシュ・リングを特定のルールに従って取得でき、ロック・サーバの間の引継ぎ関係は当該コンシステント・ハッシュ・リングに従って決定される。関連する内容は上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【００８８】
本実施形態では、ロック・サーバＳ２は故障したロック・サーバＳ１の引継ぎロック・サーバである。この場合、故障したロック・サーバＳ１に対して、他のロック・サーバは非引継ぎロック・サーバである。
【００８９】
ステップ４０７：ロッキング要求を受信したとき、非引継ぎロック・サーバの役割を果たす第３のロック・サーバが当該ロッキング要求に従ってロック許可情報を割り当てる。
【００９０】
ロッキング要求を受信した後、非引継ぎロック・サーバであると判定されるロック・サーバが当該ロッキング要求に従ってロック許可情報を割り当てる。
【００９１】
本発明の当該実施形態では、ロック・サーバＳ３は故障したロック・サーバＳ１の引継ぎロック・サーバではない。即ち、ロック・サーバＳ３は故障したロック・サーバＳ１の非引継ぎロック・サーバでありサイレントでない。したがって、ロッキング要求を受信したとき、ロック・サーバＳ３が当該ロッキング要求に従ってロック許可情報を割り当てる。同様に、故障したロック・サーバＳ１の非引継ぎロック・サーバとして、ロック・サーバＳ４はロッキング要求を処理することができる。
【００９２】
本発明の当該実施形態では、故障したロック・サーバの非引継ぎロック・サーバがサイレントである必要はない。したがって、ロッキング要求を受信したとき、当該非引継ぎロック・サーバが当該ロッキング要求に従ってロック許可情報を割り当てる。ロッキング要求を受信した後に非引継ぎロック・サーバにより実施される処理は先行技術の処理と同じであり、例えば、ロック許可情報テーブル内に相互に排他的なロック要求があるかどうかをチェックして、割り当てられるロック許可情報を決定する。詳細についてはここでは再度説明することはしない。
【００９３】
本発明の当該実施形態で提供する方法では、分散システム内のロック・サーバが故障しているとき、影響範囲を最小化でき、故障したロック・サーバの非引継ぎロック・サーバのサービスは影響されず、当該非引継ぎロック・サーバはロッキング要求を正常に処理することができ、それにより分散システムにおけるサービス割込みおよびシステム安定性の問題が回避される。
【００９４】
本発明の別の実施形態では、当該方法の流れ図は、図４−３に示すように、以下のステップをさらに含む。
【００９５】
ステップ４０９：ロック回収要求を受信した後、引継ぎロック・サーバの役割を果たす第２のロック・サーバが、ロック許可情報テーブルに従って対応するロック許可情報を返す。
【００９６】
当該引継ぎロック・サーバがサイレント状態にあるとき、当該引継ぎロック・サーバはロック回収要求を処理することができる。本発明の当該実施形態では、当該ロック回収要求を受信した後、引継ぎロック・サーバＳ２が対応するロック許可情報をロック許可情報テーブルに従って返す。ＮＦＳ  Ｖ３では、ロック回収要求を受信した後、引継ぎロック・サーバがＯＫ応答メッセージをロック許可情報に従って返す。
【００９７】
ロック許可情報テーブルは、アクセスすべきファイル情報、付与されたロック許可情報、およびアクセスすべきクライアント情報のような情報を格納する。ロック回収要求の処理を、既存の実装の解決策を用いることによって実装してもよく、本発明の当該実施形態では詳細については再度説明しない。当該ロック許可情報テーブルを共有記憶装置に格納してもよく、各ロック・サーバは当該ロック許可情報テーブルにアクセスして情報を取得することができ、または、ロック情報テーブルを各ロック・サーバにローカルに格納してもよく、管理ノードは情報同期の責任を負う。本発明の当該実施形態では詳細については再度説明しない。ロック回収要求はクライアントにより送信される。具体的なトリガ手続きは既存の実装方式と同じであり、本発明の当該実施形態では詳細については再度説明しない。
【００９８】
ステップ４１１：ロッキング要求を受信した後、引継ぎロック・サーバの役割を果たす第２のロック・サーバが拒否応答メッセージを返す。
【００９９】
引継ぎロック・サーバがサイレント状態にあるとき、当該引継ぎロック・サーバはロック回収要求のみを処理することができ、ロッキング要求を処理することはできない。本発明の当該実施形態では、引継ぎロック・サーバＳ２がサイレント状態にあるとき、引継ぎロック・サーバＳ２がロッキング要求を受信する場合、引継ぎロック・サーバＳ２が拒否応答メッセージを返す。確かに、条件を満たしサイレント状態を出た後、当該引継ぎロック・サーバはロッキング要求を処理することができる。この場合、処理方式は非引継ぎロック・サーバによりロック要求を処理する方式と同じであり、詳細についてはここでは再度説明することはしない。
【０１００】
ロック・サーバに加えて、分散システムはまた、プロトコル・サーバおよびロック・プロキシを含む。プロトコル・サーバおよびロック・プロキシは１対１の対応関係にあり、対応関係にあるプロトコル・サーバおよびロック・プロキシは同一のノード装置に配置される。プロトコル・サーバが複数のロック・プロキシに対応してもよく、プロトコル・サーバおよびロック・プロキシを有する同一のノードに配置してもよく、または、別のノード装置に配置してもよい。本発明の１実施形態ではさらに、分散システムにおけるロック・サーバの故障を処理するための別の方法を提供する。当該方法は図５−１に示すシステムに適用可能である。当該方法の手続きを図５−２に示す。
【０１０１】
図５−１に示すように、分散システムにはｊ個のノード装置がある。ｊは２より大きい自然数である。各ノード装置はプロトコル・サーバ、ロック・プロキシ、およびロック・サーバを備える。例えば、プロトコル・サーバＰＳ１、ロック・プロキシＰ１、およびロック・サーバＳ１はノード装置１内にあり、プロトコル・サーバＰＳ２、ロック・プロキシＰ２、およびロック・サーバＳ２はノード装置２内にあり、残りは類推により推測することができる。プロトコル・サーバおよびロック・プロキシは１対１の対応関係にある。即ち、ロック要求を受信した後、プロトコル・サーバＰＳ１は当該ロック要求をロック・プロキシＰ１に送信し、ロック要求を受信した後、プロトコル・サーバＰＳ２は当該ロック要求をロック・プロキシＰ２に送信し、残りは類推により推測することができる。ロック・サーバが複数のロック・プロキシに対応してもよい。即ち、ロック・サーバＳ１がロック・プロキシＰ１により送信されたロック要求を受信してもよく、また、別のロック・プロキシ（例えば、ロック・プロキシＰ２）により送信されたロック要求を受信してもよい。
【０１０２】
本実施形態のロック・サーバにより実装されるステップは図４−２および図４−３ならびに対応するテキストで説明した解決策と同一であり、ここではさらに説明を提供することはしない。
【０１０３】
ステップ５０１：ロック要求を受信した後、プロトコル・サーバは当該ロック要求を対応するロック・プロキシに送信する。当該ロック要求がロック回収要求またはロッキング要求であってもよい。
【０１０４】
当該プロトコル・サーバは外部プロトコル・クライアントに接続され、要求を当該プロトコル・クライアントから受信し処理結果を当該プロトコル・クライアントに返すように構成される。当該プロトコル・サーバがＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ネットワーク・ファイル・システム）プロトコル・サーバであってもよいか、またはＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ、サーバ・メッセージ・ブロック）プロトコル・サーバであってもよく、本発明の当該実施形態では限定されない。当該プロトコル・クライアントにより送信されたロック要求を受信した後、当該プロトコル・サーバは、プロトコル変換処理を実施して、当該受信されたロック要求をＤＬＭ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｌｏｃｋ  Ｍａｎａｇｅｒ、分散ロック・マネージャ）のロック要求に変換し、変換されたロック要求を対応するロック・プロキシに送信する。本発明の当該実施形態では、当該プロトコル・サーバおよび当該対応するロック・プロキシは同一のノード装置に配置される。したがって、当該プロトコル・サーバは当該変換されたロック要求を同一のノード装置内のロック・プロキシに送信する。例えば、ロック要求を受信した後、プロトコル・サーバＰＳ２は変換されたロック要求をロック・プロキシＰ２に送信する。
【０１０５】
先行技術では、ロック・サーバが故障しているとき、分散システム内の全てのロック・サーバはサイレント状態に入る。したがって、ロック要求を受信した後、プロトコル・サーバはロック回収要求を対応するロック・プロキシに送信するだけである。受信されたロック要求に関して、当該プロトコル・サーバは拒否応答メッセージを直接返す。即ち、先行技術における分散システムでは、ロック・サーバが故障しているとき、当該分散システム内の全てのロック・サーバはサイレント状態に入る。この場合、当該分散システムはロッキング要求を処理できず、これが、当該分散システムの正常な実行に影響を及ぼし、当該分散システムの安定性に大きく影響を及ぼす。
【０１０６】
しかし、本発明の当該実施形態で提供する解決策では、ロック・サーバが故障した後、当該故障したロック・サーバの引継ぎロック・サーバのみがサイレント状態に入る必要があり、非引継ぎロック・サーバはサービスを正常に処理することができる。（ロッキング要求およびロック回収要求のような）ロック要求を受信した後、プロトコル・サーバは当該ロック要求を対応するロック・プロキシに送信し、ロック・プロキシは、特定のルールに従って、当該ロック要求を、当該ロック要求を処理する責任を負うロック・サーバに送信する。この場合、サイレント状態にある引継ぎロック・サーバのみがロッキング要求を処理できず、非引継ぎロック・サーバはロッキング要求を処理でき、全てのロック回収要求を処理することができる。したがって、当該分散システム内の大抵のロック要求を処理することができ、これにより当該分散システムの安定性が大幅に高まる。
【０１０７】
ステップ５０３：当該ロック要求を受信した後に、ロック・プロキシが、ローカルに格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、受信されたロック要求を当該決定されたロック・サーバに送信する。
【０１０８】
各ロック・プロキシはロック・サーバ管理範囲情報をローカルに格納する。プロトコル・サーバにより送信されたロック要求を受信した後に、ロック・プロキシは、ローカルに格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理する責任を負うロック・サーバを決定し、当該ロック要求を、処理するために当該決定されたロック・サーバに送信する。
【０１０９】
当該ロック・サーバ管理範囲情報がロック・サーバ管理範囲情報テーブルを用いて記録されるとき、当該ロック要求を受信した後に、ロック・プロキシは、当該ロック要求で運搬される（ファイルＩＤのような）ファイル情報に対してハッシング計算を行う。計算結果が入る管理範囲を有するロック・サーバは、当該ロック要求を処理する責任を負うロック・サーバである。ロック・プロキシは、当該ロック要求を、処理するために当該決定されたロック・サーバに送信する。
【０１１０】
当該ロック・サーバ管理範囲情報がコンシステント・ハッシュ・リングを用いて決定されるとき、当該ロック要求を受信した後に、ロック・プロキシは、当該ロック要求で運搬される（ファイルＩＤのような）ファイル情報に対してハッシング計算を行う。計算結果が入る管理範囲を有するロック・サーバは、当該ロック要求を処理する責任を負うロック・サーバである。ロック・プロキシは当該ロック要求を、処理するために当該決定されたロック・サーバに送信する。当該ロック要求で運搬されるファイル情報にハッシング計算を実施するために使用されるハッシング・アルゴリズムは、コンシステント・ハッシュ・リングを生成するために使用されるコンシステント・ハッシング・アルゴリズムと同じである。
【０１１１】
本発明の当該実施形態では、ロック・サーバが故障していることを検出したとき、管理ノードは分散システムにおいて第１の通知メッセージをブロードキャストする。当該第１の通知メッセージは当該故障したロック・サーバに関する情報を運搬する。ロック・プロキシおよびロック・サーバの両方が当該第１の通知メッセージを受信する。当該第１の通知メッセージを受信した後に、ロック・プロキシは当該故障したロック・サーバを故障として、ローカルに格納されたロック・サーバ管理範囲情報においてマークする。したがって、ロック・プロキシがロック要求を受信した後、ロック・サーバ管理範囲情報に従ってロック・プロキシにより決定され、当該ロック要求を処理する責任を負うロック・サーバが故障したロック・サーバであるかもしれない。この場合、ロック・プロキシは、当該故障したロック・サーバの引継ぎロック・サーバを、格納されたロック・サーバ引継ぎ関係情報に従って決定する必要がある。当該判定方法をステップ５０５で説明する。
【０１１２】
ステップ５０５：当該ロック要求を受信した後に、ロック・プロキシが、ローカルに格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ロック要求のロック・サーバ管理範囲情報で決定された当該ロック要求を処理するためのロック・サーバが故障状態にあるとき、ロック・プロキシが、故障状態にあるロック・サーバの引継ぎロック・サーバを、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って決定し、当該受信されたロック要求を当該引継ぎロック・サーバに送信する。
【０１１３】
当該ロック・サーバ管理範囲情報がロック・サーバ管理範囲情報テーブルを用いて記録されるとき、当該ロック・サーバ引継ぎ関係情報はまた、ロック・サーバ引継ぎ関係テーブルを用いて記録される。当該ロック・サーバ管理範囲情報および当該ロック・サーバ引継ぎ関係情報を、同一のロック・サーバ情報テーブルを用いることによって記録してもよい。当該ロック・サーバ情報テーブルを表３に示す。当該テーブルは各ロック・サーバの管理範囲および当該ロック・サーバの間の引継ぎ関係を記録し、これらをユーザの要求に従って事前に構成することができる。ロック・サーバ情報テーブルおよび更新ステータスは上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１１４】
当該ロック・サーバ管理範囲情報がコンシステント・ハッシュ・リングを用いることによって決定されるとき、当該ロック・サーバ引継ぎ関係情報はまた、同一のコンシステント・ハッシュ・リングを用いることによって決定される。上述のように、ロック・サーバ管理範囲がコンシステント・ハッシュ・リングの時計方向に従って決定される場合、ロック・サーバ引継ぎ関係も、当該コンシステント・ハッシュ・リングの時計方向に従って決定される必要がある。同様に、ロック・サーバ管理範囲がコンシステント・ハッシュ・リングの反時計方向に従って決定される場合、ロック・サーバ引継ぎ関係も当該コンシステント・ハッシュ・リングの反時計方向に従って決定される必要がある。
【０１１５】
図５−３に示すように、ロック・サーバＳ４およびロック・サーバＳ１の間の範囲はロック・サーバＳ１により管理され、ロック・サーバＳ１およびロック・サーバＳ２の間の範囲はロック・サーバＳ２により管理され、ロック・サーバＳ２およびロック・サーバＳ３の間の範囲はロック・サーバＳ３により管理され、ロック・サーバＳ３およびロック・サーバＳ４の間の範囲はロック・サーバＳ４により管理される。ロック・サーバＳ１の引継ぎロック・サーバはロック・サーバＳ２であり、ロック・サーバＳ２の引継ぎロック・サーバはロック・サーバＳ３であり、ロック・サーバＳ３の引継ぎロック・サーバはロック・サーバＳ４であり、ロック・サーバＳ４の引継ぎロック・サーバはロック・サーバＳ１である。
【０１１６】
本発明の当該実施形態で提供する技術的解決策では、分散システム内のロック・サーバが故障しているとき、プロトコル・サーバが、（ロック回収要求またはロッキング要求のような）ロック要求を受信し、当該受信されたロック要求をロック・プロキシに送信してもよい。ロック・プロキシはロック・サーバをロック・サーバ管理範囲情報に従って決定し、当該ロック要求を処理のために当該ロック・サーバに送信する。当該決定されたロック・サーバが故障したロック・サーバである場合、ロック・プロキシはさらに、当該故障したロック・サーバの引継ぎロック・サーバをロック・サーバ引継ぎ関係情報に従って決定し、当該ロック要求を処理のために当該引継ぎロック・サーバに送信する必要がある。サイレント期間の間は、当該引継ぎロック・サーバはロック回収要求のみを処理することができ、ロッキング要求を処理することはできない。このように、故障したロック・サーバの影響範囲が最小化され、大抵のロック要求をタイムリーに処理することができる。これより、ロック要求をタイムリーに処理するのに失敗したことに起因するサービス割込みが防止されるか、または、サービス衝突に起因するシステム故障の問題が防止され、当該分散システムの安定性が高まる。
【０１１７】
本発明の別の実施形態では、分散システムにおけるロック・サーバの故障を処理するための方法が以下のステップをさらに含んでもよい。
【０１１８】
ステップ５０７：第１の通知メッセージを受信した後、当該分散システム内の故障していないロック・サーバが、故障していない当該ロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内の第１のロック・サーバを故障状態としてマークし、予め設定した時刻に到達したとき、故障していないロック・サーバは当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは当該第１のロック・サーバを含まない。
【０１１９】
当該分散システム内のロック・サーバが故障しているとき、当該分散システム内の故障していないロック・サーバが管理ノードにより送信された第１の通知メッセージを受信する。当該第１の通知メッセージは当該故障したロック・サーバの識別子を運搬する。当該第１の通知メッセージを受信した後、故障していないロック・サーバが、故障していない当該ロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内の故障したロック・サーバを故障状態としてマークする。故障していない当該ロック・サーバがさらにタイマを有効にしてもよい。予め設定した時刻に到達したとき、故障していない当該ロック・サーバは当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該更新されたコンシステント・ハッシュ・リングは当該故障したロック・サーバを含まない。
【０１２０】
場合によっては、通知を管理ノードから受信した後、当該分散システム内の故障していないロック・サーバがさらに、ローカルに格納されたコンシステント・ハッシュ・リングを更新してもよい。同様に、更新されたコンシステント・ハッシュ・リングは故障したロック・サーバを含まない。具体的な方法をステップ５０９で説明する。
【０１２１】
ステップ５０９：故障していないロック・サーバが第２の通知メッセージを受信する。当該第２の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第２の通知メッセージは故障したロック・サーバに関する情報を運搬し、故障していないロック・サーバは、ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該更新されたコンシステント・ハッシュ・リングは故障したロック・サーバを含まない。
【０１２２】
ステップ５１１：当該第１の通知メッセージを受信した後に、ロック・プロキシが、ローカルに格納されたコンシステント・ハッシュ・リング内の故障したロック・サーバを故障状態とマークし、予め設定した時刻に到達したとき、ロック・プロキシが当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該更新されたコンシステント・ハッシュ・リングは当該第１のロック・サーバを含まない。
【０１２３】
ステップ５１１およびステップ５０７または５０９の間に厳密な順序はなく、ステップ５１１をステップ５０７または５０９と並列に実施してもよい。
【０１２４】
新たなロック・サーバが分散システムに追加されたとき、本発明の当該実施形態が以下のステップをさらに含んでもよい。
【０１２５】
ステップ５１３：故障していないロック・サーバが第３の通知メッセージを受信し、ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、当該第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは当該新たに追加されたロック・サーバに関する情報を運搬する。
【０１２６】
ステップ５１５：ロック・プロキシが当該第３の通知メッセージを受信し、当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該更新されたコンシステント・ハッシュ・リングは当該新たに追加されたロック・サーバを含む。
【０１２７】
ステップ５１３および５１５を並列に実施してもよく、厳密な順序はない。
【０１２８】
本発明の１実施形態では、分散システムにおけるロック・サーバの故障を処理するための別の方法を提供する。当該手続きを図６−２に示す。当該方法は図６−１に示す分散システムに適用可能である。
【０１２９】
当該分散システムでは、４つのノード装置があり、各ノード装置はプロトコル・サーバ、ロック・プロキシ、およびロック・サーバを備える。例えば、プロトコル・サーバＰＳ１、ロック・プロキシＰ１、およびロック・サーバＳ１はノード装置１内にあり、プロトコル・サーバＰＳ２、ロック・プロキシＰ２、およびロック・サーバＳ２はノード装置２内にあり、残りは類推により推測することができる。プロトコル・サーバは同一のノード内のロック・プロキシと１対１の対応関係にある。ロック・プロキシが複数のロック・サーバに対応してもよい。確かに、ロック・サーバをまた、別のノード装置に配置してもよい。例えば、４つのロック・サーバの全てをノード５（本図では図示せず）に配置してもよい。
【０１３０】
本実施形態では、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報の両方はコンシステント・ハッシュ・リングの時計方向に従って決定される。ロック・プロキシおよびロック・サーバはそれぞれコンシステント・ハッシュ・リングをローカルに格納し、当該格納されたコンシステント・ハッシュ・リングは同一である。ロック・プロキシＰ１内のコンシステント・ハッシュ・リングはＨＰ１によって表され、ロック・サーバＳ１内のコンシステント・ハッシュ・リングはＨＳ１によって表され、残りは類推により推測することができる。本実施形態におけるコンシステント・ハッシュ・リングはノード装置の名前に従って計算を実施することによって取得される。上述のように、コンシステント・ハッシュ・リングをまた、ロック・サーバのＩＤまたはノード装置のＩＰアドレスに従って計算を実施することによって取得してもよく、詳細についてはここでは再度説明することはしない。コンシステント・ハッシュ・リングおよび当該コンシステント・ハッシュ・リングの更新は上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１３１】
本実施形態における、分散システム内の故障を処理する方法の手続きは以下の通りである。
【０１３２】
ステップ６０１：故障していないロック・サーバが第１の通知メッセージを受信する。当該第１の通知メッセージはロック・サーバＳ１の故障に関する情報を運搬する。
【０１３３】
ロック・サーバＳ１が故障していることを検出したとき、分散システム内の管理ノードは、当該第１の通知メッセージを当該分散システム内のロック・プロキシおよびロック・サーバにブロードキャストして、Ｓ１が故障していることをロック・プロキシおよびロック・サーバに通知する。管理ノードを当該ノード装置の１つに配置してもよく、または、ノード装置を独立に配置して、当該分散システムの管理機能を実装してもよい。管理ノードの位置は当該実施形態の実装に影響を及ぼさない。したがって、管理ノードの位置はここでは限定されず、図６−１に示されてもいない。管理ノードは当該分散システムにおいて当該第１の通知メッセージをブロードキャストし、当該分散システム内の故障していないロック・サーバおよびロック・プロキシが当該第１の通知メッセージを受信する。
【０１３４】
ステップ６０２：故障していないロック・サーバが、当該ロック・サーバが故障したロック・サーバＳ１の引継ぎロック・サーバかどうかを、ローカルなコンシステント・ハッシュ・リングに従って判定する。本実施形態では、ロック・サーバＳ２が、ロック・サーバＳ２は故障したロック・サーバＳ１の引継ぎロック・サーバであると、ローカルなコンシステント・ハッシュ・リングＨＳ２に従って判定し、ロック・サーバＳ３は、ロック・サーバＳ３は故障したロック・サーバＳ１の引継ぎロック・サーバではないと、ローカルなコンシステント・ハッシュ・リングＨＳ３に従って判定し、ロック・サーバＳ４は、ロック・サーバＳ４は故障したロック・サーバＳ１の引継ぎロック・サーバではないと、ローカルなコンシステント・ハッシュ・リングＨＳ４に従って判定する。この場合、ロック・サーバＳ３およびロック・サーバＳ４の両方を本実施形態では非引継ぎロック・サーバと称し、ロック・サーバＳ２を引継ぎロック・サーバと称し、ロック・サーバＳ１が故障したロック・サーバである。
【０１３５】
ステップ６０３：故障していないロック・サーバが、故障していないロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内のロック・サーバＳ１を故障状態としてマークする。当該第１の通知メッセージを受信した後、ロック・サーバＳ２はさらに、当該ローカルに格納されたコンシステント・ハッシュ・リングＨＳ２内のロック・サーバＳ１を故障状態としてマークしてもよい。この場合、ロック・サーバＳ２はさらにタイマを有効にし、当該タイマが切れたとき、ローカルなコンシステント・ハッシュ・リングＨＳ２を更新してもよい。同様に、ロック・サーバＳ３およびロック・サーバＳ４が同一の動作を実施してもよい。
【０１３６】
ステップ６０３およびステップ６０２の間に厳密な順序はない。故障していないロック・サーバは先ず、故障していないロック・サーバのローカルに格納されたコンシステント・ハッシュ・リング内のロック・サーバＳ１を故障状態としてマークしてもよく、または先ず、当該ロック・サーバが故障したロック・サーバＳ１の引継ぎロック・サーバかどうかを、当該ローカルに格納されたコンシステント・ハッシュ・リングに従って判定してもよい。
【０１３７】
ステップ６０４：ロック・サーバＳ２が、ロック・サーバＳ２は故障したロック・サーバＳ１の引継ぎロック・サーバであると判定し、サイレント状態に入る。サイレント状態に入る引継ぎロック・サーバはロック回収要求のみを処理することができ、ロッキング要求を処理することはできない。この場合、ロック・サーバＳ２がさらにサイレンス・タイマを有効にしてもよく、当該サイレンス・タイマが切れたとき、ロック・サーバＳ２はサイレント状態を出る。ロック・サーバＳ３およびロック・サーバＳ４は、ロック・サーバＳ３およびロック・サーバＳ４が故障したロック・サーバＳ１の引継ぎロック・サーバでないと判定し、現在の状態を不変のままにする。非引継ぎロック・サーバはロッキング要求を正常に処理することができる。
【０１３８】
ロック・サーバＳ２が故障したロック・サーバＳ１の引継ぎロック・サーバであると判定した後、ロック・サーバＳ２は、ロック・サーバＳ２が故障したロック・サーバＳ１の引継ぎロック・サーバであることを管理ノードに通知するために、応答メッセージを管理ノードに返してもよい。確かに管理ノードも、同一のコンシステント・ハッシュ・リングをローカルに格納してもよい。ロック・サーバＳ１が故障していることを検出した後、管理ノードは、ロック・サーバＳ２が故障したロック・サーバＳ１の引継ぎロック・サーバであると、ローカルに格納されたコンシステント・ハッシュ・リングに従って判定する。
【０１３９】
本発明の当該方法の当該実施形態では、当該分散システム内のロック・サーバが故障しているとき、当該故障したロック・サーバの引継ぎロック・サーバのみをサイレントにする必要があり、非引継ぎロック・サーバは正常に動作する。このように、非引継ぎロック・サーバはロッキング要求を処理することができ、これにより当該分散システムの信頼性が高まる。
【０１４０】
ステップ６０５：ロック・プロキシが当該第１の通知メッセージを受信し、ローカルに格納されたコンシステント・ハッシュ・リング内のロック・サーバＳ１を故障状態としてマークする。当該分散システム内の管理ノードは当該第１の通知メッセージをブロードキャストするので、当該分散システム内のロック・プロキシはまた、当該第１の通知メッセージを受信する。当該第１の通知メッセージを受信した後に、ロック・プロキシが、当該ローカルに格納されたコンシステント・ハッシュ・リング内のロック・サーバＳ１を故障状態としてマークする。例えば、当該第１の通知メッセージを受信した後、当該分散システム内のロック・プロキシＰ２はローカルに格納されたコンシステント・ハッシュ・リングＨＰ２内のロック・サーバＳ１を故障状態としてマークする。この場合、ロック・プロキシはさらにタイマを有効にしてもよく、当該タイマが切れたとき、当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。当該タイマの時間長はステップ６０３における当該タイマの時間長と等しい必要があり、ステップ６０４におけるサイレンス・タイマの時間長と等しいかまたは少し大きくてもよい。この場合、引継ぎロック・サーバＳ２がサイレント状態を出ると、非引継ぎロック・サーバＳ３またはＳ４およびロック・プロキシは、夫々のローカルに格納されたコンシステント・ハッシュ・リングを同時に更新することができる。
【０１４１】
ステップ６０５および上述のステップの間に厳密な順序はないことに留意すべきである。一般に、ロック・プロキシおよびロック・サーバは当該動作を同時に実施することができる。
【０１４２】
ステップ６０６：ロック要求を受信した後、プロトコル・サーバが当該ロック要求を対応するロック・プロキシに送信する。当該プロトコル・サーバおよび当該対応するロック・プロキシは同一のノード装置に配置される。本発明の当該実施形態では、当該ロック要求が、ロック回収要求であってもよく、またはロッキング要求であってもよい。当該分散システム内の引継ぎロック・サーバのみがサイレントであり、他のロック・サーバは正常に動作することができる。したがって、ロック要求を受信した後、プロトコル・サーバは当該ロック要求を同一のノード装置内の対応するロック・プロキシに送信する。例えば、当該ロック要求を受信した後、プロトコル・サーバＰＳ１は当該ロック要求をロック・プロキシＰ１に送信する。
【０１４３】
ロッキング要求を、ＮＡＳネットワークを用いることによって、クライアントによりプロトコル・サーバに送信してもよく、当該ロッキング要求の形式は既存の実装方式における形式と同じである。詳細についてはここでは再度説明することはしない。
【０１４４】
ロック回収要求が、通知をプロトコル・サーバから受信した後にクライアントが当該プロトコル・サーバに送信したロック回収要求であってもよい。先行技術の解決策を使用して、ロック回収要求を開始するように特定のクライアントに指示することができ、ロック・クレーム要求の形式は既存の実装方式における形式と同じである。本発明の当該実施形態では詳細については再度説明しない。
【０１４５】
ステップ６０７：ロック要求を受信した後に、ロック・プロキシが、ローカルに格納されたコンシステント・ハッシュ・リングに従って、当該ロック要求を処理する責任を負うロック・サーバを決定し、当該ロック要求を、当該ロック要求を処理するために当該決定されたロック・サーバに送信する。当該ステップにおける当該ロック要求がロッキング要求であってもよく、またはロック回収要求であってもよい。
【０１４６】
ロック要求を受信した後に、ロック・プロキシは、当該ロック要求で運搬されるファイルの一意な識別子（ＦＳＩＤまたはＦＩＤ）に対してハッシング計算を行い、ローカルに格納されたコンシステント・ハッシュ・リング内の計算結果の位置に従って、当該ロック要求を処理する責任を負うサーバを決定し、当該ロック要求を、当該ロック要求を処理するために当該決定されたロック・サーバに送信する。当該コンシステント・ハッシュ・リング内にある当該ロック要求を処理するための当該決定されたロック・サーバが故障状態にある場合、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバをさらに当該コンシステント・ハッシュ・リングに従って決定する必要があり、ロック・プロキシは当該ロック要求を処理のために当該引継ぎロック・サーバに送信する。例えば、プロトコル・サーバＰＳ１により送信されたロック要求を受信した後に、ロック・プロキシＰ１は、コンシステント・ハッシング・アルゴリズムを用いることによって当該ロック要求内のファイル識別子に対して計算を行う。取得された結果はロック・サーバＳ４およびロック・サーバＳ１の間の範囲に入る。ロック・プロキシＰ１は、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向に従って、受信されたロック要求をロック・サーバＳ１により処理すべきであると判定する。しかし、当該ローカルに格納されたコンシステント・ハッシュ・リングにおいて、ロック・サーバＳ１は故障状態にある。したがって、ロック・プロキシＰ１は、ロック・サーバＳ２はロック・サーバＳ１の引継ぎロック・サーバであると、当該ローカルに格納されたコンシステント・ハッシュ・リングの時計方向に従って判定し、ロック・プロキシＰ１は当該ロック要求をロック・サーバＳ２に送信する。
【０１４７】
ステップ６０８：ロック要求を受信した後、ロック・サーバＳ２が対応する処理を実施する。ロック・サーバＳ２がロック回収要求を受信した場合、ロック・サーバＳ２は、ロック許可情報テーブルに記録された情報に従って、当該ロック回収要求内で運搬されるファイルの一意な識別子に対応するロック許可情報を返す。ＮＦＳ  Ｖ３では、ロック・サーバＳ２がロック回収要求を受信した場合、ロック・サーバＳ２は、ＯＫ応答メッセージを当該ロック許可情報テーブルに記録された情報に従って返す。ロック・サーバＳ２がロッキング要求を受信した場合、ロック・サーバＳ２は、ロック・サーバＳ２がサイレント状態にあるかどうかをチェックする（例えば、サイレンス・タイマが切れたかどうかをチェックする）。ロック・サーバＳ２が依然としてサイレント状態にある場合、ロック・サーバＳ２は拒否応答メッセージを返し、ロック・サーバＳ２がサイレント状態にない場合、ロック・サーバＳ２は当該ロッキング要求に対してロック許可情報を割り当て、当該ロック許可情報をロック・プロキシＰ１に返す。新たなロック許可情報を割り当てた後、ロック・サーバＳ２は、割り当てられた新たなロック許可情報とロック許可情報テーブル内の当該ロッキング要求で運搬されるファイルの一意な識別子の間の対応関係をさらに格納してもよい。当該対応関係は後続のロック回収要求を処理するために使用される。
【０１４８】
ロック許可情報テーブルを管理ノードによって管理してもよい。即ち、ロック許可情報テーブルを更新し、各ロック・サーバに送信してもよい。当該ロック許可情報テーブルを管理ノードにより格納して、要求された情報をロック・サーバが必要なときに管理ノードから取得するようにしてもよい。当該ロック許可情報テーブルをまた、各ロック・サーバにより別々に格納し管理してもよい。この場合、ロック・サーバが新たなロック許可情報を割り当てたとき、他のロック・サーバを、ローカルに格納されたロック許可情報テーブルを更新するように指示する必要がある。
【０１４９】
ロック許可情報は、ロック・サーバにより、ロック要求を送信したロック・プロキシに返され、ロック・プロキシにより、同一のノード内のプロトコル・サーバに返され、プロトコル・サーバにより、ロック要求を開始したクライアントに返される。例えば、ロック・サーバＳ２がロック許可情報をロック・プロキシＰ１に返し、ロック・プロキシＰ１が当該ロック許可情報をプロトコル・サーバＰＳ１に返し、次いで、プロトコル・サーバＰＳ１が当該ロック要求を開始したクライアントに当該ロック許可情報を返す。具体的な処理方式は先行技術の処理方式と同一であってもよく、詳細についてはここでは再度説明しない。
【０１５０】
ステップ６０９：ロック要求を受信した後、非引継ぎロック・サーバが対応する処理を実施する。例えば、ロック要求を受信したとき、ロック・サーバＳ３は当該ロッキング要求に対する新たなロック許可情報を割り当て、当該ロック許可情報をクライアントに返す。同様に、ロック・サーバＳ３は、ロック許可情報テーブルにおいて、当該割り当てられた新たなロック許可情報およびロッキング要求内で運搬されるファイルの一意な識別子の間の対応関係をさらに格納してもよい。当該対応関係は後続のロック回収要求を処理するために使用される。
【０１５１】
当該実施形態の手続きでは、ロック・サーバＳ３は故障したロック・サーバＳ１の引継ぎロック・サーバではないことに留意すべきである。したがって、ロック・サーバＳ３はサイレント状態に入らず、ロッキング要求を処理することができる。しかし、相対的に多数のロック・サーバが分散システム内にあるときは、２つのロック・サーバが故障しているかもしれず、ロック・サーバＳ３が他の故障したロック・サーバの引継ぎロック・サーバであるかもしれない。したがって、当該ロッキング要求を受信したとき、ロック・サーバＳ３も、ロック・サーバＳ３がサイレント状態にあるかどうかをチェックする必要がある。ロック・サーバＳ３がサイレント状態にある場合、処理方式はステップ６０８における処理方式と同じである。即ち、ロック・サーバＳ３は当該ロッキング要求を処理できず、拒否応答メッセージを直接返す。当該ステップでは、故障したロック・サーバの引継ぎロック・サーバおよび非引継ぎロック・サーバの間の処理方式をより明確に区別するために、非引継ぎロック・サーバが、当該非引継ぎロック・サーバがサイレント状態にあるかどうかをチェックするステップは省略される。
【０１５２】
ステップ６１０：故障していないロック・サーバが、ローカルに格納されたコンシステント・ハッシュ・リングを更新する。予め設定した時刻に到達したとき、例えば、タイマが切れた後、故障していないロック・サーバは当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは故障したロック・サーバＳ１を含まない。第２の通知メッセージを管理ノードによって送信してもよい。当該第２の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第２の通知メッセージは当該故障したロック・サーバに関する情報を運搬する。当該第２の通知メッセージを受信した後、故障していないロック・サーバは当該ローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは故障したロック・サーバを含まない。管理ノードは、当該故障したロック・サーバのロック許可情報が再要求された後に更新通知を送信してもよく、または、当該故障したロック・サーバを検出した後の期間内に更新通知を送信してもよい。
【０１５３】
本発明の当該実施形態では、コンシステント・ハッシュ・リングは、ロック・サーバが配置されるノード装置の名前に従ってハッシング計算を実施することによって取得され、故障したロック・サーバの引継ぎロック・サーバは当該コンシステント・ハッシュ・リングの時計方向に従って決定される。したがって、ロック・サーバが故障しているとき、コンシステント・ハッシュ・リングの更新は当該コンシステント・ハッシュ・リング内の故障したロック・サーバに隣接するロック・サーバのみに影響を及ぼし、影響範囲は狭い。
【０１５４】
ステップ６１１：ロック・プロキシがコンシステント・ハッシュ・リングを更新する。予め設定した時刻に到達したとき、例えば、タイマが切れた後、ロック・プロキシはローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは故障したロック・サーバを含まない。管理ノードはまた、更新通知を送信してもよい。当該更新通知を受信した後に、ロック・プロキシはローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは故障したロック・サーバを含まない。
【０１５５】
ステップ６１０および６１１の間に時間的な順序に関する厳密な要件はなく、ステップ６１０および６１１を同時に実施してもよい。故障したロック・サーバを有するノード装置が復元後の再追加を要求するか、または、新たなロック・サーバを有するノード装置が追加されたとき、当該方法の実施形態が以下をさらに含んでもよい。
【０１５６】
ステップ６１２：故障していないロック・サーバが第３の通知メッセージを受信し、ローカルに格納されたコンシステント・ハッシュ・リングを更新する。更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、当該第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは当該新たに追加されたロック・サーバに関する情報を運搬する。新たなロック・サーバが追加されたことを検出したとき、管理ノードは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するように、分散システム内の故障していないロック・サーバに指示する。更新されたコンシステント・ハッシュ・リングは当該新たに追加されたロック・サーバを含む。
【０１５７】
本発明の当該実施形態では、コンシステント・ハッシュ・リングは、ロック・サーバが配置されるノード装置の名前に従ってハッシング計算を実施することによって取得される。したがって、ロック・サーバが新たに追加されたとき、当該コンシステント・ハッシュ・リング内の当該新たに追加されたロック・サーバに隣接するロック・サーバのみが更新され、影響範囲は狭い。
【０１５８】
ステップ６１３：ロック・プロキシが第３の通知メッセージを受信し、ローカルに格納されたコンシステント・ハッシュ・リングを更新する。新たなロック・サーバが追加されたことが検出されたとき、管理ノードは、当該ローカルに格納されたコンシステント・ハッシュ・リングを更新するように分散システム内のロック・プロキシに指示する。更新されたコンシステント・ハッシュ・リングは当該新たに追加されたロック・サーバを含む。
【０１５９】
ステップ６１２および６１３の間の順序に関する厳密な要件はなく、ステップ６１２および６１３を同時に実施してもよい。さらに、ステップ６１２および６１３および上述のステップ６０１乃至６１１の間に厳密な順序はない。本発明の当該実施形態における順序は例示的なものにすぎず、本発明における方法の手続きを厳密に限定しようとするものではない。
【０１６０】
本発明の当該実施形態で提供する方法では、分散システム内のロック・サーバが故障しているとき、コンシステント・ハッシュ・リングの特定の方向に従って決定された故障したロック・サーバの引継ぎロック・サーバのみをサイレントにする必要があり、当該分散システム内の非引継ぎロック・サーバをサイレントにする必要はなく、ロック要求を正常に処理することができる。このように、当該分散システムにより受信された大抵のロック要求を処理することができる。これにより、当該故障したロック・サーバの影響範囲が最小化され、当該分散システムの信頼性が高まる。
【０１６１】
本発明の１実施形態ではさらに、ロック・サーバの故障を処理するための分散システムを提供する。当該分散システムの構造を図７に示す。図７に示すように、当該分散システムは４つのロック・サーバを含む。区別のため、当該ロック・サーバをロック・サーバＳ１、ロック・サーバＳ２、ロック・サーバＳ３、およびロック・サーバＳ４としてマークする。各ロック・サーバはロック・サーバ引継ぎ関係情報をローカルに格納する。
【０１６２】
当該分散システム内の故障していないロック・サーバが第１の通知メッセージを受信する。当該第１の通知メッセージは第１のロック・サーバの故障に関する情報を運搬する。
【０１６３】
当該第１の通知メッセージを受信した後、当該分散システム内の第２のロック・サーバが、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第２のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバであると判定し、当該第２のロック・サーバはサイレント状態に入る。
【０１６４】
当該第１の通知メッセージを受信した後、当該分散システム内の第３のロック・サーバが、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該第３のロック・サーバが当該第１のロック・サーバの引継ぎロック・サーバでないと判定し、ロッキング要求を受信したとき、当該第３のロック・サーバが当該ロッキング要求に従ってロック許可情報を割り当てる。
【０１６５】
引継ぎロック・サーバの役割を果たす第２のロック・サーバがロック回収要求を受信した場合、当該第２のロック・サーバがロック許可情報テーブルに従って対応するロック許可情報を返し、当該第２のロック・サーバがロッキング要求を受信した場合、当該第２のロック・サーバが拒否応答メッセージを返す。
【０１６６】
当該分散システム内のロック・サーバが故障しているとき、別のロック・サーバの処理手続きは上述の方法の実施形態で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１６７】
ロック・サーバ引継ぎ関係情報を記録する方式は上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１６８】
サイレント状態に入る引継ぎロック・サーバは、通知を管理ノードから受信した後にサイレント状態を出てもよく、または、予め設定した時刻に到達したときサイレント状態を出てもよい。
【０１６９】
第１の通知メッセージを受信した後、分散システム内の故障していないロック・サーバはさらに、ローカルに格納されたロック・サーバ管理範囲情報またはローカルに格納されたロック・サーバ引継ぎ関係情報において当該故障したロック・サーバを故障状態としてマークしてもよい。予め設定した時刻に到達したときまたは当該ロック・サーバが第２の通知メッセージを管理ノードから受信した後、当該ロック・サーバは、ローカルに格納されたロック・サーバ管理範囲情報またはローカルに格納されたロック・サーバ引継ぎ関係情報を更新する。更新されたロック・サーバ管理範囲情報または更新されたロック・サーバ引継ぎ関係情報は故障したロック・サーバに関する情報を含まない。
【０１７０】
管理ノードにより送信された第３の通知メッセージを受信した後、当該分散システム内の故障していないロック・サーバがさらに、ローカルに格納されたコンシステント・ハッシュ・リングを更新してもよい。当該更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含み、当該第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは新たに追加されたロック・サーバに関する情報を運搬する。
【０１７１】
当該分散システムは４つのプロトコル・サーバおよび対応するロック・プロキシをさらに含む。プロトコル・サーバおよび対応するロック・プロキシは同一のノード装置に配置される。ロック・サーバをプロトコル・サーバおよびロック・プロキシと同一のノード装置に配置してもよく、ロック・サーバをまた、別のノード装置に配置してもよい。本発明の当該実施形態では、説明を、ロック・サーバがプロトコル・サーバおよびロック・プロキシと同一のノード装置内にあることを１例として用いることによって提供する。
【０１７２】
各ノード装置はプロトコル・サーバ、ロック・プロキシ、およびロック・サーバを備える。例えば、プロトコル・サーバＰＳ１、ロック・プロキシＰ１、およびロック・サーバＳ１はノード装置１内にあり、プロトコル・サーバＰＳ２、ロック・プロキシＰ２、およびロック・サーバＳ２はノード装置２内にあり、残りは類推により推測することができる。プロトコル・サーバおよびロック・プロキシは１対１の対応関係にある。即ち、ロック要求を受信した後、プロトコル・サーバＰＳ１は当該ロック要求をロック・プロキシＰ１に送信し、ロック要求を受信した後、プロトコル・サーバＰＳ２は当該ロック要求をロック・プロキシＰ２に送信し、残りは類推により推測することができる。ロック・サーバが複数のロック・プロキシに対応してもよい。即ち、ロック・サーバＳ１がロック・プロキシＰ１により送信されたロック要求を受信してもよく、また、別のロック・プロキシ（例えば、ロック・プロキシＰ２）により送信されたロック要求を受信してもよい。当該ロック要求がロック回収要求またはロッキング要求であってもよい。
【０１７３】
ロック要求を受信した後、プロトコル・サーバは当該ロック要求を対応するロック・プロキシに送信する。当該プロトコル・サーバおよび当該対応するロック・プロキシは同一のノード装置に配置される。
【０１７４】
当該ロック要求を受信した後、ロック・プロキシが、ローカルに格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ロック要求を処理するための当該決定されたロック・サーバが故障状態にない場合、ロック・プロキシは受信されたロック要求を当該ロック要求を処理するためのロック・サーバに送信する。
【０１７５】
ロック要求を受信した後、ロック・プロキシは、ローカルに格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ローカルに格納されたロック・サーバ管理範囲情報内にあるロック要求を処理するための決定されたロック・サーバが故障状態にあるとき、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定し、受信されたロック要求を当該引継ぎロック・サーバに送信する。
【０１７６】
本明細書で言及したロック・サーバ管理範囲情報またはロック・サーバ引継ぎ関係情報を、テーブルを用いることによって記録してもよく、または、コンシステント・ハッシュ・リングを用いることによって決定してもよい。具体的な実装方式は上で例を用いることによって詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１７７】
ロック・プロキシにおいてロック・サーバ管理範囲情報またはロック・サーバ引継ぎ関係情報を記録する方式はロック・サーバにおいてロック・サーバ管理範囲情報またはロック・サーバ引継ぎ関係情報を記録する方式と同じである。ロック・プロキシにおいてロック・サーバ管理範囲情報またはロック・サーバ引継ぎ関係情報を更新するためのルールもロック・サーバにおけるルールと同一である。したがって、ロック・プロキシによる更新を通じて取得されたロック・サーバ管理範囲情報またはロック・サーバ引継ぎ関係情報も、ロック・サーバによる更新を通じて取得されたものと同一である。
【０１７８】
ロック・サーバ引継ぎ関係がコンシステント・ハッシュ・リングを用いることによって決定されるとき、第１の通知メッセージを受信した後、分散システム内の故障していないロック・サーバは、当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかを、ローカルに格納されたコンシステント・ハッシュ・リングの時計方向に従って判定する。上述のように、故障していないロック・サーバはまた、当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかを、ローカルに格納されたコンシステント・ハッシュ・リングの反時計方向に従って判定してもよい。第２のロック・サーバが、当該第２のロック・サーバが第１のロック・サーバの引継ぎロック・サーバであると、ローカルに格納されたコンシステント・ハッシュ・リングに従って判定した場合、当該引継ぎロック・サーバの役割を果たす第２のロック・サーバはサイレント状態に入る。当該引継ぎロック・サーバの役割を果たす第２のロック・サーバがロック回収要求を受信した場合、当該第２のロック・サーバは対応するロック許可情報をロック許可情報テーブルに従って返す。当該第２のロック・サーバがロッキング要求を受信した場合、当該第２のロック・サーバが拒否応答メッセージを返す。
【０１７９】
故障していない分散システム内の第３のロック・サーバが、当該第３のロック・サーバが第１のロック・サーバの引継ぎロック・サーバでないとローカルに格納されたコンシステント・ハッシュ・リングに従って判定した場合、ロッキング要求を受信したとき、当該第３のロック・サーバは当該ロッキング要求に従ってロック許可情報を割り当てる。
【０１８０】
ロック要求を受信した後、ロック・プロキシは、当該ロック要求を処理するためのロック・サーバを、ローカルに格納されたコンシステント・ハッシュ・リングに従って決定する。全てのロック・プロキシによりローカルに格納されたコンシステント・ハッシュ・リングは同一であり、ロック・プロキシによってローカルに格納されたコンシステント・ハッシュ・リングとロック・サーバによりローカルに格納されたコンシステント・ハッシュ・リングとは同一である。
【０１８１】
第１の通知メッセージを受信した後、ロック・プロキシはさらに、ローカルに格納されたロック・サーバ管理範囲情報またはローカルに格納されたロック・サーバ引継ぎ関係情報において第１のロック・サーバを故障状態としてマークしてもよく、予め設定した時刻に到達したときまたはロック・プロキシが第２の通知を管理ノードから受信した後に、ロック・プロキシは、ローカルに格納されたロック・サーバ管理範囲情報またはローカルに格納されたロック・サーバ引継ぎ関係情報を更新する。更新されたロック・サーバ管理範囲情報または更新されたロック・サーバ引継ぎ関係情報は当該第１のロック・サーバに関する情報を含まない。
【０１８２】
ロック・プロキシはさらに、管理ノードにより送信された第３の通知メッセージを受信し、ローカルに格納されたロック・サーバ管理範囲情報またはローカルに格納されたロック・サーバ引継ぎ関係情報を更新してもよい。当該第３の通知メッセージは、ローカルに格納されたコンシステント・ハッシュ・リングを更新するようにロック・プロキシに指示するために使用され、当該第３の通知メッセージは新たに追加されたロック・サーバに関する情報を運搬する。更新されたロック・サーバ管理範囲情報または更新されたロック・サーバ引継ぎ関係情報は当該新たに追加されたサーバに関する情報を含む。
【０１８３】
分散システム内のロック・サーバが故障しているとき、ロック・プロキシの処理手続きは上述の方法の実施形態で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１８４】
ロック・サーバ引継ぎ関係情報を記録する方式も上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０１８５】
本発明の当該実施形態で提供する分散システムでは、当該分散システム内のロック・サーバが故障しているとき、各ロック・サーバは、当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかをローカルに格納されたロック・サーバ引継ぎ関係情報に従って判定する。当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバでない、即ち、当該ロック・サーバが非引継ぎロック・サーバであると判定したとき、ロッキング要求を受信した後、当該非引継ぎロック・サーバは当該ロッキング要求に対してロック許可情報を正常に割り当てることができる。当該ロック・サーバが、当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであると判定した場合、当該ロック・サーバはサイレント状態に入り、ロッキング要求を受信した後、当該ロック・サーバが拒否応答メッセージを返す。このように、引継ぎロック・サーバのみがサイレントであり、非引継ぎロック・サーバはロッキング要求を正常に処理することができる。したがって、故障したロック・サーバの影響範囲が最小化され、大抵のロック・サービスを正常に処理することができる。これにより、処理できないロッキング要求に起因するサービス割込み、または、ロック許可衝突に起因するシステム故障の問題が防止され、分散システムの安定性が高まる。
【０１８６】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するロック・サーバ８を提供する。ロック・サーバ８の構造を図８に示す。
【０１８７】
ロック・サーバ８は受信モジュール８０１、処理モジュール８０３、および記憶モジュール８０５を含む。
【０１８８】
受信モジュール８０１は、第１の通知メッセージを受信し、当該第１の通知メッセージを処理モジュール８０３に送信するように構成される。当該第１の通知メッセージは故障したロック・サーバに関する情報を運搬する。
【０１８９】
処理モジュール８０３は、第１の通知メッセージを受信した後、ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかを、記憶モジュール８０５に格納されたロック・サーバ引継ぎ関係情報に従って判定するように構成される。当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバである場合、当該ロック・サーバはサイレント状態に入り、処理モジュール８０３はサイレンス・タイマを有効にするようにさらに構成される。当該ロック・サーバが故障したロック・サーバの引継ぎロック・サーバでない場合、処理モジュール８０３は処理を実施しない。処理モジュール８０３がサイレンス・タイマを有効にした後、ロック・サーバ８はサイレント状態に入る。
【０１９０】
受信モジュール８０１は、ロック・プロキシによって送信されたロック要求を受信し、当該受信されたロック要求を処理モジュール８０３に送信するようにさらに構成される。
【０１９１】
当該ロック要求がロック回収要求である場合、処理モジュール８０３は、当該ロック回収要求を受信した後、記憶モジュール８０５に格納されたロック許可情報テーブルに従って対応するロック許可情報を返すようにさらに構成される。
【０１９２】
当該ロック要求がロッキング要求である場合、処理モジュール８０３は、当該ロッキング要求を受信した後、ロック・サーバがサイレント状態にあるかどうかを判定する、即ち、サイレンス・タイマが有効状態にあるかどうかを判定するようにさらに構成され、当該サイレンス・タイマが有効状態にない場合、当該ロック・サーバはサイレント状態にない。処理モジュール８０３は、当該ロッキング要求に対してロック許可情報を割り当て、当該ロック許可情報を受信モジュール８０１に送信する。サイレンス・タイマが有効状態にある場合、当該ロック・サーバはサイレント状態にあり、処理モジュール８０３は拒否応答メッセージを受信モジュール８０１に送信する。ロッキング要求に対してロック許可情報を割り当てた後、処理モジュール８０３は、当該ロッキング要求内の割り当てられたロック許可情報およびファイル情報をさらに記憶モジュール８０５のロック許可情報テーブルに格納してもよい。
【０１９３】
受信モジュール８０１は、受信されたロック許可情報または受信された拒否応答メッセージをロック・プロキシに返すようにさらに構成される。
【０１９４】
本発明の当該実施形態では、ロック・サーバ引継ぎ関係情報を、（表１に示すように）ロック・サーバ引継ぎ関係テーブルを用いることによって決定してもよく、または、（図３−１に示すように）コンシステント・ハッシュ・リングを用いることによって決定してもよい。
【０１９５】
処理モジュール８０３が、ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかを記憶モジュール８０５に格納されたロック・サーバ引継ぎ関係情報に従って判定することは特に、処理モジュール８０３が、ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかをコンシステント・ハッシュ・リングの時計方向に従って判定することであってもよい。
【０１９６】
処理モジュール８０３が、ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかを記憶モジュール８０５に格納されたロック・サーバ引継ぎ関係情報に従って判定することは特に、処理モジュール８０３が、ロック・サーバが故障したロック・サーバの引継ぎロック・サーバであるかどうかをコンシステント・ハッシュ・リングの反時計方向に従って判定することであってもよい。
【０１９７】
受信モジュール８０１は、第２の通知メッセージを受信して、当該第２の通知メッセージを処理モジュール８０３に送信するようにさらに構成される。当該第２の通知メッセージは、コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第２の通知メッセージは故障したロック・サーバに関する情報を運搬する。
【０１９８】
処理モジュール８０３は、記憶モジュール８０５に格納されたコンシステント・ハッシュ・リングを更新して、当該更新されたコンシステント・ハッシュ・リングが故障したロック・サーバを含まないようにするようにさらに構成される。
【０１９９】
受信モジュール８０１は、第３の通知メッセージを受信し、当該第３の通知メッセージを処理モジュール８０３に送信するように構成される。当該第３の通知メッセージは、コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは新たに追加されたロック・サーバに関する情報をさらに運搬する。
【０２００】
処理モジュール８０３は、記憶モジュール８０５に格納されたコンシステント・ハッシュ・リングを更新して、当該更新されたコンシステント・ハッシュ・リングは新たに追加されたロック・サーバを含むようにするようにさらに構成される。
【０２０１】
処理モジュール８０３は、当該第１の通知メッセージを受信した後、記憶モジュール８０５に格納されたコンシステント・ハッシュ・リング内の故障したロック・サーバを故障状態としてマークするようにさらに構成される。
【０２０２】
記憶モジュール８０５は、ロック・サーバ引継ぎ関係情報およびロック許可情報テーブルのような、ロック・サーバ８により使用する必要がある情報を格納するように構成される。
【０２０３】
ロック・サーバ８により実装されるロック・サーバの故障を処理する方法の手続きは、図４−２、図４−３、図５−２、および図６−２ならびに対応するテキストで説明した方法の手続きと同じであり、詳細についてはここでは再度説明することはしない。
【０２０４】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装する別のロック・サーバを提供する。当該ロック・サーバの構造を図９に示す。図９に示すように、当該ロック・サーバは、ロック・サーバ引継ぎ関係情報およびロック許可情報テーブルを格納するように構成されたメモリ９０１と、外部接続を提供するように構成されたインタフェース９０２と、コンピュータ・プログラムを格納するように構成されたコンピュータ可読媒体９０３と、メモリ９０１、インタフェース９０２、およびコンピュータ可読媒体９０３に接続され、当該プログラムを実行することによって、ロック・サーバの故障を処理するための上述の方法を実装するように構成されたプロセッサ９０４とを含む。手続きは、図４−２、図４−３、図５−２、および図６−２ならびに対応するテキストで説明した方法の手続きと同じであり、詳細についてはここでは再度説明することはしない。
【０２０５】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するロック・プロキシ装置１０を提供する。ロック・プロキシ装置１０の構造を図１０に示す。
【０２０６】
ロック・プロキシは、受信モジュール１００１、処理モジュール１００３、記憶モジュール１００５、および送信モジュール１００７を備える。受信モジュール１００１は、プロトコル・サーバにより送信されたロック要求を受信し、当該受信されたロック要求を処理モジュール１００３に送信するように構成される。当該ロック要求が、ロック回収要求であってもよく、またはロッキング要求であってもよい。
【０２０７】
処理モジュール１００３は、ロック要求を受信した後、記憶モジュール１００５に格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該受信されたロック要求を送信モジュール１００７に送信するように構成される。
【０２０８】
処理モジュール１００３は、ロック要求を受信した後、記憶モジュール１００５に格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ロック・サーバ管理範囲情報内にあるロック要求を処理するためのロック・サーバが故障状態としてマークされるとき、記憶モジュール１００５に格納されたロック・サーバ引継ぎ関係情報に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定し、当該受信されたロック要求を送信モジュール１００７に送信するようにさらに構成される。
【０２０９】
送信モジュール１００７はロック要求を決定されたロック・サーバに送信するように構成される。ロック・サーバ管理範囲情報内にあるロック要求を処理するためのロック・サーバが故障状態にあるとき、送信モジュール１００７は当該ロック要求を引継ぎロック・サーバに送信する。当該ロック・サーバ管理範囲情報内の当該ロック要求を処理するためのロック・サーバが故障状態にないとき、送信モジュール１００７は当該ロック要求を処理するために当該ロック要求を当該ロック・サーバに送信する。
【０２１０】
本発明の当該実施形態では、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を、（表３に示すように）ロック・サーバ情報テーブルを用いることによって決定してもよく、または、（図３−１に示すように）コンシステント・ハッシュ・リングを用いることによって決定してもよい。
【０２１１】
処理モジュール１００３が、記憶モジュール１００５に格納されたロック・サーバ管理範囲情報に従って、ロック要求を処理するためのロック・サーバを決定することは特に、処理モジュール１００３が、コンシステント・ハッシュ・リングの時計方向または反時計方向に従って、ロック要求を処理するためのロック・サーバを決定することである。処理モジュール１００３が、記憶モジュール１００５に格納されたロック・サーバ引継ぎ関係情報に従って、ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定することは特に、処理モジュール１００３が、コンシステント・ハッシュ・リングの同一方向に従って、ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定することである。即ち、処理モジュール１００３が、コンシステント・ハッシュ・リングの時計方向に従って、ロック要求を処理するためのロック・サーバを決定する場合、処理モジュール１００３はまた、コンシステント・ハッシュ・リングの時計方向に従って、ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定し、処理モジュール１００３が、コンシステント・ハッシュ・リングの反時計方向に従って、当該ロック要求を処理するためのロック・サーバを決定する場合、処理モジュール１００３はまた、当該コンシステント・ハッシュ・リングの反時計方向に従って、当該ロック要求を処理するためのロック・サーバの引継ぎロック・サーバを決定する。具体的な決定方式については、上述の詳細な説明を参照されたい。詳細についてはここでは再度説明することはしない。
【０２１２】
受信モジュール１００１は、第１の通知メッセージを受信し、当該第１の通知メッセージを処理モジュール１００３に送信するようにさらに構成される。当該第１の通知メッセージは故障したロック・サーバに関する情報を運搬する。
【０２１３】
処理モジュール１００３は、当該第１の通知メッセージを受信した後、記憶モジュール１００５に格納されたコンシステント・ハッシュ・リング内の故障したロック・サーバを故障状態としてマークするようにさらに構成される。
【０２１４】
受信モジュール１００１は、第２の通知メッセージを受信し、当該第２の通知メッセージを処理モジュール１００３に送信するようにさらに構成される。当該第２の通知メッセージは、コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用される。
【０２１５】
処理モジュール１００３は、記憶モジュール１００５に格納されたコンシステント・ハッシュ・リングを更新し、当該更新されたコンシステント・ハッシュ・リングが当該故障したロック・サーバを含まないようにするようにさらに構成される。
【０２１６】
受信モジュール１００１は、第３の通知メッセージを受信し、当該第３の通知メッセージを処理モジュール１００３に送信するようにさらに構成される。当該第３の通知メッセージは、コンシステント・ハッシュ・リングを更新するようにロック・サーバに指示するために使用され、当該第３の通知メッセージは新たに追加されたロック・サーバに関する情報をさらに運搬する。
【０２１７】
処理モジュール１００３は、記憶モジュール１００５に格納されたコンシステント・ハッシュ・リングを更新して、当該更新されたコンシステント・ハッシュ・リングが新たに追加されたロック・サーバを含むようにするようにさらに構成される。
【０２１８】
記憶モジュール１００５は、ロック・サーバ引継ぎ関係情報、ロック・サーバ管理範囲情報、およびロック許可情報テーブルのような、ロック・サーバにより使用する必要がある情報を格納するように構成される。
【０２１９】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するロック・プロキシ装置を提供する。ロック・プロキシ装置の構造を図１１に示す。図１１に示すように、ロック・プロキシ装置は、ロック・サーバ引継ぎ関係情報およびロック・サーバ管理範囲情報を格納するように構成されたメモリ１１０１と、外部接続を提供するように構成されたインタフェース１１０２と、コンピュータ・プログラムを格納するように構成されたコンピュータ可読媒体１１０３と、メモリ１１０１、インタフェース１１０２、およびコンピュータ可読媒体１１０３に接続され、当該プログラムを実行することによって、ロック・サーバの故障を処理するための上述の方法を実装するように構成されたプロセッサ１１０４とを含む。手続きは、図４−３、図５−２、および図６−２ならびに対応するテキストで説明した方法の手続きと同じであり、詳細についてはここでは再度説明することはしない。
【０２２０】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するロック・マネージャを提供する。当該ロック・マネージャの構造を図１２に示す。当該ロック・マネージャはロック・プロキシ１２０１とロック・サーバ１２０３を含む。ロック・サーバ１２０３の構造およびロック・サーバ１２０３により実装される機能を図８および図９ならびに対応するテキストに示す。ロック・プロキシ１２０１の構造およびロック・プロキシ１２０１により実装される機能を図１０および図１１および対応する解決策の説明に示す。当該ロック・マネージャにより実装されるロック・サーバの故障を処理する方法の手続きは、図４−２、図４−３、図５−２、および図６−２ならびに対応するテキストで説明した方法の手続きと同じであり、詳細についてはここでは再度説明することはしない。
【０２２１】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するプロトコル・サーバを提供する。当該プロトコル・サーバは外部プロトコル・クライアントにより送信されたロック要求を受信し、当該ロック要求をロック・プロキシに送信するように構成される。当該ロック要求が、ロック回収要求であってもよく、またはロッキング要求であってもよい。当該プロトコル・サーバによるサービス処理の具体的な手続きは上で詳細に説明されており、詳細についてはここでは再度説明することはしない。
【０２２２】
本発明の１実施形態ではさらに、分散システムにおける故障処理を実装するノード装置１３を提供する。ノード装置１３の構造を図１３に示す。ノード装置１３はプロトコル・サーバ１３０５、ロック・プロキシ１３０１、およびロック・サーバ１３０３を含む。
【０２２３】
プロトコル・サーバ１３０５は、外部プロトコル・クライアントにより送信されたロック要求を受信し、当該ロック要求をロック・プロキシ１３０１に送信するように構成される。当該ロック要求が、ロック回収要求であってもよく、またはロッキング要求であってもよい。
【０２２４】
ロック・プロキシ１３０１は、ローカルに格納されたロック・サーバ管理範囲情報に従って、ロック要求を処理するためのロック・サーバを決定し、当該ロック要求をロック要求を処理するための当該決定されたロック・サーバに送信するように構成される。
【０２２５】
ロック・プロキシ１３０１は、格納されたロック・サーバ管理範囲情報に従って、当該ロック要求を処理するためのロック・サーバを決定し、当該ロック要求を処理するための決定されたロック・サーバが故障しているとき、ローカルに格納されたロック・サーバ引継ぎ関係情報に従って引継ぎロック・サーバを決定し、当該ロック要求を当該引継ぎロック・サーバに送信するようにさらに構成される。
【０２２６】
ロック・サーバ１３０３は、受信されたロック要求がロック回収要求であるとき、対応するロック許可情報を格納されたロック許可情報テーブルに従ってフィードバックするようにさらに構成され、ロック・サーバ１３０３は、当該受信されたロック要求がロッキング要求であるとき、ロック・サーバ１３０がサイレント状態にあるかどうかをチェックし、ロック・サーバ１３０がサイレント状態にある場合、拒否応答メッセージを返すか、または、ロック・サーバ１３０がサイレント状態にない場合、ロック許可情報を割り当てるようにさらに構成される。
【０２２７】
ロック・サーバ１３０３の構造およびロック・サーバ１３０３により実装される機能を図８および図９ならびに対応するテキストに示す。ロック・プロキシ１３０１の構造およびロック・プロキシ１３０１により実装される機能を図１０および図１１ならびに対応するテキストに示す。当該ノード装置により実装されるロック・サーバの故障を処理する方法の手続きは、図４−２、図４−３、図５−２、および図６−２ならびに対応するテキストで説明した方法の手続きと同じであり、詳細についてはここでは再度説明することはしない。
【０２２８】
当業者は、本発明の各態様または各態様の可能な実装方式を特に、システム、方法、またはコンピュータ・プログラム製品として実装してもよいことを理解することができる。したがって、本発明の各態様または各態様の可能な実装方式が、ハードウェアのみの実施形態、ソフトウェアのみの実施形態（ファームウェア、常駐ソフトウェア等を含む）、または、ソフトウェアおよびハードウェアの組合せを有する実施形態の形を使用してもよく、これらは本明細書では「回路」、「モジュール」、または「システム」と称される。さらに、本発明の各態様または各態様の可能な実装方式がコンピュータ・プログラム製品の形をとってもよい。当該コンピュータ・プログラム製品は、コンピュータ可読媒体に格納されたコンピュータ可読プログラム・コードを指す。
【０２２９】
コンピュータ可読媒体がコンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。当該コンピュータ可読記憶媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能読取専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、およびコンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）のような、電子、磁気、光、電磁気、赤外線、または半導体のシステム、デバイス、もしくは装置、またはそれらの任意の適切な組合せを含むがこれらに限られない。
【０２３０】
コンピュータ内のプロセッサは、当該プロセッサが流れ図内の各ステップまたはステップの組合せで指定された機能および動作を実施できるように、コンピュータ可読媒体に格納されたコンピュータ可読プログラム・コードを読み取る。ブロック図内の各ブロックまたはブロックの組合せで指定された機能および動作を実装するための装置が生成される。
【０２３１】
明らかに、当業者は、本発明の範囲から逸脱しない様々な修正および変形を本発明に加えることができる。本発明は、これらの修正および変形を、それらが添付の特許請求の範囲およびその均等な技術により定義される保護範囲内にある限り、網羅することを意図している。
【符号の説明】
【０２３２】
８０１  受信モジュール
８０３  処理モジュール
８０５  記憶モジュール
９０１  メモリ
９０２  インタフェース
９０３  プロセッサ
９０４  記憶媒体
１００１  受信モジュール
１００３  処理モジュール
１００５  記憶モジュール
１００７  送信モジュール
１１０１  メモリ
１１０２  インタフェース
１１０３  プロセッサ
１１０４  記憶媒体
１２０１  ロック・プロキシ
１２０３  ロック・サーバ
１３０１  プロトコル・サーバ
１３０３  ロック・プロキシ
１３０５  ロック・サーバ
【図１】
0006388290.tif 000007
【図２】
0006388290.tif 000008
【図３−１】
0006388290.tif 000009
【図３−２】
0006388290.tif 000010
【図３−３】
0006388290.tif 000011
【図３−４】
0006388290.tif 000012
【図３−５】
0006388290.tif 000013
【図４−１】
0006388290.tif 000014
【図４−２】
0006388290.tif 000015
【図４−３】
0006388290.tif 000016
【図５−１】
0006388290.tif 000017
【図５−２】
0006388290.tif 000018
【図５−３】
0006388290.tif 000019
【図６−１】
0006388290.tif 000020
【図６−２】
0006388290.tif 000021
【図７】
0006388290.tif 000022
【図８】
0006388290.tif 000023
【図９】
0006388290.tif 000024
【図１０】
0006388290.tif 000025
【図１１】
0006388290.tif 000026
【図１２】
0006388290.tif 000027
【図１３】
0006388290.tif 000028