(58)【調査した分野】(Int.Cl.,DB名)
前記ロックサーバノード装置が、ロッククライアントノードからデータストライプに関するロック通知を受信した後、当該方法は更に、前記ロック通知がリードロック通知であるとき、前記ロックサーバノード装置が、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するステップを有する、請求項1記載の方法。
前記ロッククライアントノードによって前記ロックサーバノード装置に送信されるロック通知が前記データストライプに関するライトロック通知である場合、前記ロッククライアントノードが、前記データストライプをキャッシュし、その後、前記ロックサーバノード装置が記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノード装置に送信するステップと更に有する、請求項4記載の方法。
単位時間における前記ロッククライアントノードのキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記ロッククライアントノードが、前記ロックサーバノード装置が前記データストライプのオーナをターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するステップと、
前記ロッククライアントノードが、前記ロックサーバノード装置から前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュから前記データストライプを削除し、前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプを前記ターゲットロッククライアントノードに送信するステップと、
を更に有する、請求項4乃至5何れか一項記載の方法。
前記判断部は、具体的には、前記ロック通知がリードロック通知であるとき、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される、請求項7記載のロックサーバノード装置。
前記受信部は更に、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成され、
前記記録部は更に、前記データストライプのオーナを前記他のロッククライアントノードに変更するよう構成され、
前記送信部は更に、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すよう構成される、請求項7又は8記載のロックサーバノード装置。
前記送信部は更に、前記ロックサーバノード装置が記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストを前記ロックサーバノード装置に送信するよう構成される、請求項10記載のノード。
前記キャッシュ処理部は更に、単位時間におけるキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するよう前記送信部を制御するよう構成され、前記受信部により受信され、前記データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュから前記データストライプを削除し、前記データストライプを前記ターゲットロッククライアントノードに送信するよう前記送信部を制御するよう構成され、
前記送信部は更に、前記キャッシュ処理部の制御に従って、前記ロックサーバノード装置が前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記ロックサーバノード装置に送信するよう構成され、更に前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記キャッシュ処理部の制御に従って前記データストライプを前記ターゲットロッククライアントノードに送信するよう構成され、
前記受信部は更に、前記ロックサーバノード装置から前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される、請求項10乃至11何れか一項記載のノード。
コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、請求項1乃至3何れか一項記載の方法を実行するようロックサーバノード装置に指示するのに利用されるコンピュータ可読媒体。
コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、請求項4乃至6何れか一項記載の方法を実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体。
【発明の概要】
【発明が解決しようとする課題】
【0006】
一態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、分散ストレージシステムのキャッシュ処理方法を提供する。
【0007】
他の態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、データストライプオーナサーバノード及びロッククライアントノードを提供する。
【0008】
更なる他の態様では、本発明は、従来技術の問題点を解消し、ノード装置のキャッシュ利用率を向上させるため、コンピュータ可読媒体を提供する。
【課題を解決するための手段】
【0009】
第1の態様では、本発明は、分散ストレージシステムのキャッシュ処理方法であって、
データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、前記ロック通知を判断するステップと、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、前記データストライプオーナサーバノードが、前記ロッククライアントノードを前記データストライプのオーナとして記録し、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップと、
前記ロック通知が最初に受信していないリードロック通知であるとき、前記データストライプオーナサーバノードが、前記ロッククライアントノードが前記データストライプのオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有する方法を提供する。
【0010】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信した後、当該方法は更に、前記ロック通知がリードロック通知であるとき、前記データストライプオーナサーバノードが、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するステップを有する、実現方法が更に提供される。
【0011】
上記態様又は何れか可能な実現方法によると、
前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返した後、当該方法は更に、
前記データストライプオーナサーバノードが、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するステップと、
前記データストライプオーナサーバノードが、前記データストライプのオーナを前記他のロッククライアントノードに変更するステップと、
【0012】
前記データストライプオーナサーバノードが、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すステップと、
を有する、
実現方法が更に提供される。
【0013】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードがロックサーバノード装置に統合されるとき、
前記リードロック通知はリードロックリクエストを有し、
前記ライトロック通知はライトロックリクエストを有し、
前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含み、
前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すことを含む、
実現方法が更に提供される。
【0014】
他の態様では、本発明は、分散ストレージシステムのキャッシュ処理方法であって、
ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップと、
前記ロッククライアントノードが、前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記ロッククライアントノードが、前記データストライプをキャッシュするステップと、
前記ロッククライアントノードが前記データストライプオーナサーバノードから前記データストライプのオーナの識別情報IDを受信すると、前記ロッククライアントノードが、前記データストライプオーナのIDと前記ロッククライアントノードのIDとを比較し、当該2つのIDが異なる場合、前記ロッククライアントノードが、前記データストライプオーナのIDに対応するロッククライアントノードのキャッシュから前記データストライプを読むステップと、
を有する方法を提供する。
【0015】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信した後、前記ロッククライアントノードが前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信する前、当該方法は更に、前記データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、前記データストライプオーナサーバノードが、前記ロッククライアントノードを前記データストライプのオーナとして記録するステップを有する、
実現方法が更に提供される。
【0016】
上記態様又は何れか可能な実現方法によると、当該方法は、
前記ロッククライアントノードによって前記オーナサーバノードに送信されるロック通知が前記データストライプに関するライトロック通知である場合、前記ロッククライアントノードが、前記データストライプをキャッシュし、その後、前記ロックサーバノードが前記記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するステップと更に有する、
実現方法が更に提供される。
【0017】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する前、当該方法は更に、
前記ロッククライアントノードが、アプリケーションサーバから前記データストライプに関するリードリクエスト又はライトリクエストを受信するステップと、
前記ロッククライアントノードが、前記データストライプに関するリードロック又はライトロックをローカルに検索するステップと、
前記データストライプに関するリードロック又はライトロックが検出された場合、前記データストライプに関するリードロック又はライトロックに従って前記データストライプのオーナを決定し、前記データストライプのオーナから前記データストライプを読むか、又は前記データストライプのオーナに前記データストライプを書き込むステップと、
前記データストライプに関するリードロック又はライトロックが検出されない場合、前記クロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップを実行するステップと、
を有する、
実現方法が更に提供される。
【0018】
上記態様又は何れか可能な実現方法によると、当該方法は、
単位時間における前記ロッククライアントノードのキャッシュ削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記ロッククライアントノードが、前記データストライプオーナサーバノードが前記データストライプのオーナをターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するステップと、
前記ロッククライアントノードが、前記データストライプオーナサーバノードから前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュから前記データストライプを削除し、前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプを前記ターゲットロッククライアントノードに送信するステップと、
を更に有する、
実現方法が更に提供される。
【0019】
上記態様又は何れか可能な実現方法によると、前記ロッククライアントノードが、前記データストライプオーナのIDに対応するロッククライアントノードのキャッシュから前記データストライプを読むステップは、具体的には、
前記ロッククライアントノードが、前記データストライプオーナのIDに対応するロッククライアントノードに前記データストライプに関するリードリクエストを送信するステップを有し、これにより、前記データストライプオーナのIDに対応するロッククライアントノードが前記データストライプをローカルにキャッシュされているデータから検索し、前記データストライプが検出される場合、前記データストライプを前記ロッククライアントノードに返し、そうでない場合、前記分散ストレージシステムのロッククライアントノードから前記データストライプのデータストリップを読み、前記データストライプを構成し、前記データストライプを前記ロッククライアントノードに返す、
実現方法が更に提供される。
【0020】
他の態様では、本発明は、データストライプオーナサーバノードであって、
ロッククライアントノードからデータストライプに関するロック通知を受信するよう構成される受信部と、
前記ロック通知を判断するよう構成される判断部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断すると、前記ロッククライアントノードを前記データストライプのオーナとして記録するよう構成される記録部と、
前記ロック通知が最初に受信したリードロック通知又はライトロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを前記ロッククライアントノードに返し、前記ロック通知が最初に受信していないリードロック通知であると前記判断部が判断したとき、前記ロッククライアントノードが前記データストライプのオーナのキャッシュから前記データストライプを読むように、前記データストライプのオーナ情報を有するレスポンスメッセージを前記ロッククライアントノードに返す送信部と、
を有するノードを提供する。
【0021】
上記態様又は何れか可能な実現方法によると、
前記判断部は、具体的には、前記ロック通知がリードロック通知であるとき、前記データストライプの属性情報を記録されたデータストライプの属性情報から検索し、前記データストライプの属性情報が検出されなかった場合、前記リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される、
実現方法が更に提供される。
【0022】
上記態様又は何れか可能な実現方法によると、
前記受信部は更に、前記ロッククライアントノードから前記データストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成され、
前記記録部は更に、前記データストライプのオーナを前記他のロッククライアントノードに変更するよう構成され、
前記送信部は更に、前記ロッククライアントノードがローカルキャッシュから前記データストライプを削除し、前記他のロッククライアントノードが前記データストライプをキャッシュするように、前記データストライプのオーナの変更の成功を示すレスポンスメッセージを前記ロッククライアントノードに返すよう構成される、実現方法が更に提供される。
【0023】
上記態様又は何れか可能な実現方法によると、
前記データストライプオーナサーバノードがロックサーバノード装置に統合されるとき、
前記リードロック通知はリードロックリクエストを有し、
前記ライトロック通知はライトロックリクエストを有し、
前記送信部は更に、ロック成功レスポンスメッセージを前記ロッククライアントノードに返すよう構成される、
実現方法が更に提供される。
【0024】
他の態様では、本発明は、ロッククライアントノードであって、
データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するよう構成される送信部と、
前記データストライプオーナサーバノードから前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信するか、又は前記データストライプオーナサーバノードから前記データストライプのオーナのIDを受信するよう構成される受信部と、
前記データストライプオーナのIDと前記ロッククライアントノードのIDとを比較し、当該2つのIDが異なる場合、リードライト部を起動するよう構成される比較部と、
前記受信部が前記データストライプオーナサーバノードから、前記データストライプのオーナが前記ロッククライアントノードであることを示すレスポンスメッセージを受信すると、前記データストライプをキャッシュするよう構成されるキャッシュ処理部と、
前記データストライプオーナのIDに対応するロッククライアントノードのキャッシュから前記データストライプを読むよう構成されるリードライト部と、
を有するノードを提供する。
【0025】
上記態様又は何れか可能な実現方法によると、
前記送信部は更に、前記ロックサーバノードが記録を前記ロッククライアントノードが前記データストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するよう構成される、
実現方法が更に提供される。
【0026】
上記態様又は何れか可能な実現方法によると、ロッククライアントノードは、検索部を更に有し、
前記受信部は更に、アプリケーションサーバから前記データストライプに関するリードリクエスト又はライトリクエストを受信するよう構成され、
前記検索部は、前記データストライプに関するリードロック又はライトロックをローカルに検索し、前記データストライプに関するリードロック又はライトロックが検出された場合、前記データストライプに関するリードロック又はライトロックに従って前記データストライプのオーナを決定し、前記リードライト部を起動し、前記データストライプに関するリードロック又はライトロックが検出されない場合、前記送信部を起動するよう構成され、
前記リードライト部は更に、前記データストライプのオーナから前記データストライプを読むか、又は前記データストライプのオーナに前記データストライプを書き込むよう構成される、
実現方法が更に提供される。
【0027】
上記態様又は何れか可能な実現方法によると、
前記キャッシュ処理部は更に、単位時間における削除率が前記ロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、前記データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するよう前記送信部を制御するよう構成され、前記受信部により受信され、前記データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュから前記データストライプを削除し、前記データストライプを前記ターゲットロッククライアントノードに送信するよう前記送信部を制御するよう構成され、
前記送信部は更に、前記キャッシュ処理部の制御に従って、前記データストライプオーナサーバノードが前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するように、前記データストライプのオーナを前記ターゲットロッククライアントノードに変更するためのリクエストメッセージを前記データストライプオーナサーバノードに送信するよう構成され、更に前記ターゲットロッククライアントノードが前記データストライプをキャッシュするように、前記キャッシュ処理部の制御に従って前記データストライプを前記ターゲットロッククライアントノードに送信するよう構成され、
前記受信部は更に、前記データストライプオーナサーバノードから前記データストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される、
実現方法が更に提供される。
【0028】
上記態様又は何れか可能な実現方法によると、
前記リードライト部は、具体的には前記データストライプオーナのIDに対応するロッククライアントノードが前記データストライプをローカルにキャッシュされたデータから検索するように、前記データストライプオーナのIDに対応するロッククライアントノードに前記データストライプに関するリードリクエストを送信し、前記データストライプが検出された場合、前記データストライプを前記リードライト部に返し、そうでない場合、分散ストレージシステムのロッククライアントノードから前記データストライプのデータストリップを読み、前記データストライプを構成し、前記データストライプを前記リードライト部に返すよう構成される、
実現方法が更に提供される。
【0029】
他の態様では、本発明は、プロセッサ、メモリ、通信インタフェース及びバスを有するデータストライプオーナサーバノードであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは、前記バスを介し通信し、前記メモリは、実行命令を格納するよう構成され、前記通信インタフェースは、第1ロッククライアントノードと第2ロッククライアントノードと通信するよう構成され、当該データストライプオーナサーバノードが実行中であるとき、前記プロセッサは、当該データストライプオーナサーバノードが上述した分散ストレージシステムのキャッシュ処理方法の何れか1つを実行するように、前記メモリにより格納されている実行命令を実行するデータストライプオーナサーバノードを提供する。
【0030】
他の態様では、本発明は、プロセッサ、メモリ、通信インタフェース及びバスを有するロッククライアントノードであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは、前記バスを介し通信し、前記メモリは、実行命令を格納するよう構成され、前記通信インタフェースは、データストライプオーナサーバノードと他のロッククライアントノードと通信するよう構成され、当該ロッククライアントノードが実行中であるとき、前記プロセッサは、当該ロッククライアントノードが上述した分散ストレージシステムのキャッシュ処理方法の何れか1つを実行するように、前記メモリにより格納されている実行命令を実行するロッククライアントノードを提供する。
【0031】
他の態様では、本発明は、コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、上述した方法の何れか1つを実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体を提供する。
【0032】
他の態様では、本発明は、コンピュータ実行命令を有するコンピュータ可読媒体であって、前記コンピュータ実行命令は、上述した方法の何れか1つを実行するようロッククライアントノードに指示するのに利用されるコンピュータ可読媒体を提供する。
【発明の効果】
【0033】
上記概要から理解できるように、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードは、当該通知を発信したロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードは当該データストライプをキャッシュし、最初に受信していないデータストライプに関するリードロック通知を受信すると、データストライプオーナサーバノードは、当該記録に従って当該通知を発信したロッククライアントノードにデータストライプのオーナを通知し、当該通知を発信したロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、1つのデータストライプが分散ストレージシステムにおいてそれのオーナに1回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同一のデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を向上させる。
【発明を実施するための形態】
【0035】
以下において、本発明の実施例の技術的手段が、本発明の実施例の添付図面を参照して明確かつ完全に説明される。明らかに、説明される実施例は、本発明の実施例の全てでなく単なる一部である。創造的な努力なく本発明の実施例に基づき当業者により取得される他の全ての実施例は、本発明の保護範囲内に属する。
【0036】
本発明の以降の実施例は、分散ストレージシステムのノード装置のハードディスクにデータが格納された後にデータがアクセスされる具体例としてキャッシュ処理を実行することによって説明される。
【0037】
図1は、本発明の実施例1による分散ストレージシステムの概略構成図である。本発明の実施例1の分散ストレージシステムは、本発明の以降の実施例におけるキャッシュ処理方法に適用可能である。従来技術では、分散ストレージシステムは、複数のロッククライアントノードと複数のロックサーバノードとを有する。本発明の実施例1による分散ストレージシステムでは、1以上のデータストライプオーナサーバノードが、従来技術の分散ストレージシステムの基礎に追加される。1つの処理プロセスは、複数のロッククライアントノード、1つのロックサーバノード及び1つのデータストライプオーナサーバノードに関する。
図1に示されるように、分散ストレージシステムにおける複数のロッククライアントノード、1つのロックサーバノード及び1つのデータストライプオーナサーバノードが
図1に示され、他のロックサーバノード及び他のデータストライプオーナサーバノードは示されない。本発明の実施例では、ロッククライアントノード、ロックサーバノード及びデータストリップオーナノードは別々に設定されることが想定される。実際のアプリケーションでは、1つのロッククライアントノード、1つのロックサーバノード及び1つのデータストライプオーナサーバノードが、各ノード装置上で同時に設定され、各処理プロセスでは、1つのノード装置に設定されるロックサーバノードは、当該処理のロックサーバノードとして動作し、ノード装置に設定されるデータストライプオーナサーバノードは、当該処理のデータストライプオーナサーバノードとして動作する。
【0038】
実際のアプリケーションでは、データストライプオーナサーバノード及びロックサーバノードは、別々に設定され、それら各自の機能を実行してもよい。あるいは、データストライプオーナサーバノード及びロックサーバノードは、組み合わせて設定されてもよく、すなわち、従来技術のロックサーバノードは、従来技術のロックサーバノードにより実行される処理に基づき本発明の実施例に開示されるデータストライプオーナサーバノードにより実行される処理を実行するため改良される。
【0039】
データストライプオーナサーバノード及びロックサーバノードが別々に設定されるケースにおけるキャッシュ処理方法は、本発明の実施例2及び実施例3を用いることによって以下に説明される。
【0040】
図2aは、本発明の実施例2による分散ストレージシステムのためのキャッシュ処理方法の概略フローチャートである。
図2に示されるように、当該方法は以下のプロセスを含む。
【0041】
ステップ101:データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、当該ロック通知を判断する。
【0042】
ステップ102:ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、データストライプオーナサーバノードが、ロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返す。
【0043】
当該ステップでは、データストライプオーナサーバノードは第1ロッククライアントノードからデータストライプに関して最初に受信したリードロック通知又は当該データストライプに関するライトロック通知を受信する。データストライプオーナサーバノードは、データストライプのオーナとして第1ロッククライアントノードを記録し、第1ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第1ロッククライアントノードに返す。ロックサーバノードからリードロック許可又はライトロック許可を取得した後、第1ロッククライアントノードは、オーナサーバノードにロック通知を送信し、ここで、当該通知は、ロックに対応するデータストライプの識別を搬送し、当該ロックがリードロックであるときはリードロック識別子、又は当該ロックがライトロックであるときはライトロック識別子を搬送し、当該ロック通知を通じて、第1ロッククライアントノードがデータストライプに関するリードロック又はライトロックを取得したことをオーナサーバノードに通知する。データストライプの属性情報は、データストライプオーナサーバノードに記録される。オーナサーバノードは、第1ロッククライアントノードにより送信されたロック通知を受信し、ロック通知に搬送されたデータストライプ識別に従ってデータストライプの記録されている属性情報を検索する。ロック通知がリードロック識別子を搬送し、データストライプに対応するリードロックがデータストライプの記録された属性情報に検出されない場合、オーナサーバノードは、データストライプに関するリードロック通知が最初に受信されたと判断する。
【0044】
図2bは、本発明の実施例2のN個のデータストライプの属性情報の概略構成図である。
図2bに示されるように、各データストライプの属性情報では、データストライプの識別(identity、略してID)が記録され、対応して、データストライプに対するロックを現在保持するロッククライアントノードのID、ロックタイプ及びデータストライプのオーナのIDが記録される。ロックタイプは、データストライプのロックがリードロック又はライトロックであることを示すのに利用される。データストライプに対するリードロックを保持するロッククライアントノードは、データストライプを読むことができ、データストライプに対するライトロックを保持するロッククライアントノードは、データストライプを書き込むか又は修正することができる。ライトロックは、リードロックに対するプライオリティを有する。ロッククライアントノードがデータストライプに対してリードロックを保持するとき、他のロッククライアントノードはまた、データストライプに対するリードロックを保持し、ロッククライアントノードがデータストライプに対するライトロックを保持するとき、他のロッククライアントノードは、データストライプに対するリードロック又はライトロックを保持することが禁止される。一例として、
図2bに示される各データストライプの属性情報において、データストライプに対するロックを現在保持する3つのロッククライアントノードが記録される。本発明の実施例は、データストライプに対するロックを現在保持するロッククライアントノードに限定しないことが理解できる。
【0045】
ステップ103:ロック通知が最初に受信していないリードロック通知であるとき、データストライプオーナサーバノードが、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を有するレスポンスメッセージをロッククライアントノードに返す。
【0046】
このステップでは、データストライプオーナサーバノードが第2ロッククライアントノードから最初に受信していないデータストライプに関するリードロック通知を受信したと仮定すると、データストライプオーナサーバノードは、第2ロッククライアントノードが第1ロッククライアントノードのキャッシュからデータストライプを読めるように、データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第2ロッククライアントノードに返す。
【0047】
上記実施例では、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードは、データストライプのオーナとして通知を発信したロッククライアントノードを記録し、ロッククライアントノードは、データストライプをキャッシュし、最初に受信していないデータストライプに関するリードロック通知を受信すると、データストライプオーナサーバノードは、レコードに従ってデータストライプのオーナの通知を発信したロッククライアントノードに通知し、当該通知を発信したロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、1つのデータストライプが分散ストレージシステム全体のデータストライプに対応するロッククライアントノードに1回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同じデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を増加させる。
【0048】
上記技術的手段に基づき、さらにステップ101の後、本方法は更に、ロック通知がリードロック通知であるとき、データストライプオーナサーバノードがデータストライプの属性情報を記録されたデータストライプの属性情報から検索し、データストライプの属性情報が検出されなかった場合、リードロック通知が最初に受信されたリードロック通知であると判定することを含むものであってもよい。
【0049】
上記技術的手段に基づき、さらにデータストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第1ロッククライアントノードに返した後、本方法は更に、データストライプオーナサーバノードが、第1ロッククライアントノードからデータストライプのオーナを第3ロッククライアントノードに変更するためのリクエストメッセージを受信し、データストライプオーナサーバノードが、データストライプのオーナを第3ロッククライアントノードに変更し、データストライプオーナサーバノードが、第1ロッククライアントノードがローカルキャッシュからデータストライプを削除し、第3ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナの変更の成功を示すレスポンスメッセージを第1ロッククライアントノードに返すことを含む。
【0050】
上記の実現方法を利用することによって、第1ロッククライアントノードがメモリ不足であり、データストライプを格納することができないとき、データストライプのオーナシップが第3ロッククライアントノードに移転される。これは、データストライプのオーナの動的な変更を実現し、第1ロッククライアントノードのキャッシュロードを解放し、これにより、データストライプキャッシュ処理におけるより良好なロードバランシングを実現する。
【0051】
上記技術的手段に基づき、さらにデータストライプオーナサーバノードがロックサーバノード装置と統合されるとき、リードロック通知はリードロックリクエストであってもよく、ライトロック通知はライトロックリクエストであってもよい。これに対応して、データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第1ロッククライアントノードに返すステップは更に、ロック成功レスポンスメッセージを第1ロッククライアントノードに返すことを含む。データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第2クライアントノードに返すステップは更に、ロック成功レスポンスメッセージを第2ロッククライアントノードに返すことを含む。
【0052】
データストライプオーナサーバノードをロックサーバノード装置に統合することによって、ロッククライアントノードはリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するとき、当該通知はまた、ロックサーバノード装置に対するリードロックリクエスト又はライトロックリクエストを搬送する。これは、ロックサーバノード装置に対する他のリードロックリクエスト又はライトロックリクエストを送信することを回避し、システム装置間のシグナリングを減少し、データストライプを読み書きする際の効率性を向上させる。
【0053】
図3は、本発明の実施例3による分散ストレージシステムのためのキャッシュ処理方法の概略フローチャートである。
図3に示されるように、本方法は以下のプロセスを含む。
【0054】
ステップ201:ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する。
【0055】
ステップ202:ロッククライアントノードが、データストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信し、ロッククライアントノードが、データストライプをキャッシュする。
【0056】
ステップ203:ロッククライアントノードがデータストライプオーナサーバノードからデータストライプオーナの識別情報IDを受信すると、ロッククライアントノードが、データストライプオーナのIDとロッククライアントノードのIDとを比較し、当該2つのIDが異なる場合、ロッククライアントノードが、データストライプオーナのIDに対応するロッククライアントノードのキャッシュからデータストライプを読む。
【0057】
上記技術的手段に基づき、さらにロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信した後、ロッククライアントノードがデータストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信する前、本方法は更に、データストライプに関する最初に受信したリードロック通知又はライトロック通知を受信すると、データストライプオーナサーバノードが、ロッククライアントノードをデータストライプのオーナとして記録することを含む。
【0058】
上記技術的手段に基づき、さらに本方法は更に、ロッククライアントノードによってオーナサーバノードに送信されるロック通知がデータストライプに関するライトロック通知である場合、ロッククライアントノードが、データストライプをキャッシュし、その後、ロックサーバノードが記録をロッククライアントノードがデータストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信することを含む。ライトロックを保持するロッククライアントノードがデータストライプをローカルにキャッシュした後、ロッククライアントノードが常時ライトロックを保持する場合、他のロッククライアントがリードロックをリクエストすると、ライトロックは取り消される必要がある。本発明の実施例では、ライトロックを保持するロッククライアントノードがデータストライプをローカルにキャッシュした後、ロッククライアントノードは、他のロッククライアントがリードロックをリクエストすると、ライトロックを取り消すことが不要になるように、ライトロックをリードロックにデグレードするためのデグレードリクエストをロックサーバノードに自発的に送信する。これは、以降にリードロック処理を開始するための時間を節約し、キャッシュ処理の効率性を向上させる。
【0059】
上記技術的手段に基づき、ロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信する前、本方法は更に、ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエスト又はライトリクエストを受信し、ロッククライアントノードが、データストライプに関するリードロック又はライトロックをローカルに検索し、データストライプに関するリードロック又はライトロックが検出された場合、データストライプに関するリードロック又はライトロックに従ってデータストライプのオーナを決定し、データストライプのオーナからデータストライプを読むか、又はデータストライプのオーナにデータストライプを書き込み、データストライプに関するリードロック又はライトロックが検出されない場合、クロッククライアントノードが、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するステップを実行することを含む。
【0060】
上記技術的手段に基づき、さらに本方法は更に、単位時間におけるロッククライアントノードのキャッシュ削除率がロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、ロッククライアントノードが、データストライプオーナサーバノードがデータストライプのオーナをターゲットロッククライアントノードに変更するように、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信し、ロッククライアントノードが、データストライプオーナサーバノードからデータストライプのオーナの変更の成功を示すレスポンスメッセージを受信し、ローカルキャッシュからデータストライプを削除し、ターゲットロッククライアントノードがデータストライプをキャッシュするように、データストライプをターゲットロッククライアントノードに送信することを含む。データストライプは、ロッククライアントノードのキャッシュ間で動的にマイグレートする。これは、ロッククライアントノード上の頻繁なキャッシュ削除のため、キャッシュ利用率が低くなるという問題点を解消し、システム全体における各ロッククラインとノードのバランスされたキャッシュ利用を維持することが可能であり、キャッシュ利用率を向上させる。
【0061】
上記技術的手段に基づき、さらにロッククライアントノードが、データストライプオーナのIDに対応するロッククライアントノードからデータストライプを読むことは、具体的には、ロッククライアントノードが、データストライプオーナのIDに対応するロッククライアントノードにデータストライプに関するリードリクエストを送信することを含み、これにより、データストライプオーナのIDに対応するロッククライアントノードがデータストライプをローカルにキャッシュされているデータから検索し、データストライプが検出される場合、データストライプをロッククライアントノードに返し、そうでない場合、分散ストレージシステムのロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成し、データストライプをロッククライアントノードに返す。
【0062】
本発明の実施例3では、ロッククライアントノードがデータストライプに関する最初に受信したリードロック通知又はライトロック通知を送信すると、ロッククライアントノードはデータストライプをキャッシュし、データストライプオーナサーバノードは、データストライプのオーナとしてロッククライアントノードを記録し、ロッククライアントノードが最初に受信していないデータストライプに関するリードロック通知を送信すると、データストライプオーナサーバノードは、レコードに従ってデータストライプのオーナの通知をロッククライアントノードに通知し、ロッククライアントノードは、オーナのキャッシュからデータストライプを読む。データストライプオーナサーバノードは、1つのデータストライプが分散ストレージシステム全体においてそれのオーナに1回のみキャッシュされるように、データストライプのオーナを記録及び通知し、ロッククライアントノードは、オーナからデータストライプを読むことができる。これは、同じデータストライプが異なるノード装置にキャッシュされるという問題を回避し、ノード装置のキャッシュ利用率を増加させる。
【0063】
データストライプオーナサーバノード及びロックサーバノードが別々に設定されるケースにおけるキャッシュ処理方法が、本発明の実施例2及び実施例3を用いることによって説明される。実際のアプリケーションでは、オーナサーバノード及びロックサーバノードは更に組み合わされてもよく、1つのノードがオーナサーバノードとロックサーバノードとの双方の処理を実行するよう構成される。例えば、従来技術によるロックサーバノードは、従来技術によるロックサーバノードにより実行される処理に基づき本発明の実施例に開示されるオーナサーバノードにより実行される処理を実行するよう改良されてもよい。以降において、本発明により開示されるキャッシュ処理方法が、オーナサーバノードとロックサーバノードとの双方の処理を1つのノードが実行すると仮定することによって、本発明の第4〜8実施例において更に説明され、すなわち、上記の改良されたロックサーバノードは、従来技術によるロックサーバノードの処理と、本発明の実施例に開示されるオーナサーバノードの処理とを実行するよう構成される。本発明の第4〜8実施例に開示されるロックサーバノードは、上記の改良されたロックサーバノードであり、ロッククライアントノードによってロックサーバノードに送信されるロックリクエストは、ロック通知として取得される。例えば、ロッククライアントノードがリードロックリクエストをロックサーバノードに送信する場合、ロックサーバノードは、従来技術によるロックサーバノードの処理を実行し、またロックサーバノードは、リードロックリクエストをリードロック通知として取得し、本発明により開示されるオーナサーバノードの処理を実行する。同様に、ロッククライアントノードがライトロックリクエストをロックサーバノードに送信する場合、ロックサーバノードは、従来技術によるロックサーバノードの処理を実行し、また、ロックサーバノードは、ライトロックリクエストをライトロック通知として取得し、本発明により開示されるオーナサーバノードの処理を実行する。
【0064】
図4は、本発明の実施例4による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例4では、分散ストレージシステムにおいて、データストライプに対するリードロック処理が最初に行われるか、又はデータストライプの削除後にデータストライプに対するリードロック処理が最初に行われると仮定される。
図4に示されるように、本方法は以下のプロセスを含む。
【0065】
ステップ301:第1ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエストを受信する。
【0066】
このステップでは、第1ロッククライアントノードがアプリケーションサーバからデータストライプに関するリードリクエストを受信した後、第1ロッククライアントノードは、データストライプに関するリードロックをローカルに検索し、リードロックが検出された場合、データストライプのオーナであって、データストライプに関するリードロックに示されるロッククライアントノードからデータストライプを読む。そうでない場合、ステップ302が実行される。本発明の実施例では、リードロックは検出されないと仮定される。
【0067】
ステップ302:第1ロッククライアントノードが、ロックサーバノードにデータストライプに関するリードロックリクエストを送信する。
【0068】
ステップ303:ロックサーバノードが、データストライプのオーナとして第1ロッククライアントノードを記録する。
【0069】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードに存在するか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例4では、データストライプの属性情報は存在しないと仮定される。データストライプに関するレコードが存在しない場合、それは、データストライプがシステムにおいて最初にリクエストされたか、又は削除後に最初にリクエストされたことを示す。ロックサーバノードは、ロックを現在リクエストしている第1ロッククライアントノードに関する情報をレコードに追加し、第1ロッククライアントノードをデータストライプのオーナとして記録し、第1ロッククライアントノードに対応するオーナIDを第1ロッククライアントノードのIDとして記録する。
【0070】
ステップ304:ロックサーバノードが、データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第1ロッククライアントノードに返す。
【0071】
このステップではロックサーバノードは、ロック成功レスポンスメッセージを第1ロッククライアントノードに返し、ここで、当該メッセージは、データストライプのオーナが第1ロッククライアントノードであることを第1ロッククライアントノードに示し、第1ロッククライアントノードは、データストライプのオーナIDが第1ロッククライアントノードのIDであることをローカルに記録する。
【0072】
ステップ305:第1ロッククライアントノードが、データストライプをキャッシュする。
【0073】
このステップでは、第1ロッククライアントノードは、ロックサーバノードによって返された情報に従って、第1ロッククライアントノード自体がデータストライプのオーナであることを検出する。第1ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからのキャッシュスペースをリクエストし、他のロッククライアントノードからデータストライプのデータストリップを読み、ローカルグローバルユニフォームキャッシュにおいてデータストライプを構成し、データストライプをアプリケーションサーバに返す。他のロッククライアントノードからデータストライプのデータストリップを読み、データストリップに従ってデータストライプを構成し、当該構成を完了させた後、第1ロッククライアントノードは、データストリップ及びデータストリップの冗長データを取得することができる。本発明の実施例4では、第1ロッククライアントノードは、データストライプをキャッシュするだけでなく、データストライプの冗長データをキャッシュし、分散ストレージシステムのノードのキャッシュ利用率を更に向上させることができる。本発明の他の実施例では、ロッククライアントノードがデータストライプをキャッシュすると、この方法はまたキャッシュ処理を実行するため採用されてもよい。
【0074】
図5は、本発明の実施例5による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例5では、分散ストレージシステムにおいて、第1ロッククライアントノードがデータストライプをキャッシュした後、第2ロッククライアントノードはデータストライプを読むと仮定される。
図5に示されるように、本方法は以下のプロセスを含む。
【0075】
ステップ401:第2ロッククライアントノードが、アプリケーションサーバからデータストライプに関するリードリクエストを受信する。
【0076】
このステップでは、第2ロッククライアントノードは、データストライプに関するリードロックをローカルに検索し、リードロックが検出された場合、データストライプのオーナであって、データストライプのリードロックに示されるロッククライアントノードからデータストライプを読む。そうでない場合、ステップ402が実行される。本発明の実施例では、リードロックは検出されないと仮定される。
【0077】
ステップ402:第2ロッククライアントノードが、データストライプに関するリードロックリクエストをロックサーバノードに送信する。
【0078】
ステップ403:ロックサーバノードが、データストライプのオーナが第1ロッククライアントノードであることを示すレスポンスメッセージを第2ロッククライアントノードに返す。
【0079】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードに存在するか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例5では、データストライプの属性情報は存在すると仮定される。データストライプの属性情報が存在する場合、ロックサーバノードは、属性情報に従ってデータストライプのオーナを知ることができる。データストライプのオーナが第1ロッククライアントノードであると仮定すると、ロックサーバノードは、ロックを現在リクエストしている第2ロッククライアントノードのIDをデータストライプの属性情報に追加し、第2ロッククライアントノードのIDに対応するオーナフラグを非オーナを示す所定値に設定する。ロックサーバノードは、ロック成功レスポンスメッセージを第2ロッククライアントノードに返し、ここで、当該メッセージは、データストライプのオーナが第1ロッククライアントノードであることを第2ロッククライアントノードに示す。
【0080】
ステップ403の後、第2ロッククライアントノードは、第1ロッククライアントノードのキャッシュからデータストライプを読み、具体的には以下のステップを含む。
【0081】
ステップ404:第2ロッククライアントノードは、データストライプに関するリードリクエストを第1ロッククライアントノードに送信する。
【0082】
このステップでは、第2ロッククライアントノードは、ロックサーバノードにより返された情報に従って、データストライプのオーナIDが第1ロッククライアントノードのIDであることをローカルに記録する。第2ロッククライアントノードは、データストライプのオーナでないことを知り、その後、データストライプに関するリードリクエストを生成し、当該リクエストをバックエンドネットワークを介し第1ロッククライアントノードに送信する。
【0083】
ステップ405:第1ロッククライアントノードは、データストライプを第2ロッククライアントノードに返す。
【0084】
このステップでは、第2ロッククライアントノードのデータストライプに関するリードリクエストを受信した後、第1ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからデータストライプを取得し、当該データストライプを第2ロッククライアントノードに直接返す。
【0085】
ステップ406:第2ロッククライアントノードは、データストライプをアプリケーションサーバに返す。
【0086】
このステップでは、第2ロッククライアントノードは、第1ロッククライアントノードのリードデータストライプレスポンスを受信した後、アプリケーションサーバにデータストライプを送信する。
【0087】
図6は、本発明の実施例6による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例6では、分散ストレージシステムにおいて、第1ロッククライアントノードがデータストライプをキャッシュした後、第2ロッククライアントノードがデータストライプを書き込むことが仮定される。
図6に示されるように、本方法は以下のプロセスを含む。
【0088】
ステップ501:第2ロッククライアントノードは、アプリケーションサーバからデータストライプに関するライトリクエストを受信する。
【0089】
このステップでは、第2ロッククライアントノードがアプリケーションサーバからデータストライプに関するライトリクエストを受信した後、第2ロッククライアントノードは、データストライプに関するライトロックをローカルに検索し、ライトロックが検出された場合、データストライプのオーナであって、データストライプに関するライトロックに示されるロッククライアントノードにデータストライプを書き込む。第2ロッククライアントノードがデータストライプに関するライトロックをローカルに検出した場合、それは、当該時点前にロックサーバノードが第2ロッククライアントノードにデータストライプに関するライトロックをすでに付与したことを示す。ライトロック付与ルールに従って、ライトロックを第2ロッククライアントノードに付与する前、ロックサーバノードは、データストライプのオーナを第2ロッククライアントノードとして記録する。従って、第2ロッククライアントノードがデータストライプに関するライトロックをローカルに検出した場合、データストライプのオーナであって、データストライプのライトロックに示されるロッククライアントノードが第2ロッククライアントノードである。第2ロッククライアントノードがデータストライプに関するライトロックをローカルに検出しなかった場合、ステップ502が実行される。本発明の実施例では、ライトロックは検出されないことが仮定される。
【0090】
ステップ502:第2ロッククライアントノードは、データストライプに関するライトロックリクエストをロックサーバノードに送信する。
【0091】
ステップ503:ロックサーバノードは、データストライプに関するロック取り消しリクエストを第1ロッククライアントノードに送信する。
【0092】
このステップでは、ストライプロックリクエストを受信した後、ロックサーバノードはまず、データストライプの属性情報がレコードにあるか確認し、データストライプの属性情報が存在しない場合、データストライプの属性情報レコードを生成し、そうでない場合、ロックを保持するロッククライアントノードに関する情報のためデータストライプの属性情報を確認する。本発明の実施例6では、データストライプの属性情報が存在すると仮定される。データストライプの属性情報が存在する場合、ロックサーバノードは、データストライプに関するリードロック又はライトロックを保持するロッククライアントノードを知ることができる。ロックサーバノードは、これらのロッククライアントノードにより保持されるデータストライプのロックを取り消すためのリクエストを生成し、当該リクエストを対応するロッククライアントノードに送信する。第1ロッククライアントノードがデータストライプに関するリードロックを保持すると仮定すると、ロックサーバノードは、第1ロッククライアントノードにより保持されるデータストライプのリードロックを取り消すためのリクエストを生成し、当該リクエストを第1ロッククライアントノードに送信する。
【0093】
ステップ504:第1ロッククライアントノードは、ロック取り消し成功レスポンスメッセージをロックサーバノードに返す。
【0094】
このステップでは、ロック取り消しリクエストを受信した後、第1ロッククライアントノードはまず、ロックが依然として使用中であるか確認する。ロックが使用中でない場合、第1ロッククライアントノードは、ロック取り消し成功レスポンスメッセージをロックサーバノードに直接返す。ロックが使用中である場合、第1ロッククライアントノードは、ロックの解放を待機し、その後、ロック取り消し成功レスポンスメッセージをロックサーバノードに返す。第1ロッククライアントノードがデータストライプのオーナである場合、ロック取り消し成功レスポンスメッセージを送信する前、第1ロッククライアントノードはまず、グローバルユニフォームキャッシュから第1ロッククライアントノードのグローバルユニフォームキャッシュにおけるデータストライプを削除する。
【0095】
ステップ505:ロックサーバノードは、データストライプのオーナとして第2ロッククライアントノードを記録する。
【0096】
このステップでは、ロック取り消し成功レスポンスメッセージを受信した後、ロックサーバノードは、データストライプのライトロックをリクエストした第2ロッククラインとノードをデータストライプの属性情報に記録し、第2ロッククライアントノードをデータストライプのオーナとして記録する。
【0097】
ステップ506:ロックサーバノードは、ストライプライトロック成功レスポンスメッセージを第2ロッククライアントノードに返す。
【0098】
ステップ507:第2ロッククライアントノードは、データストライプをキャッシュする。
【0099】
このステップでは、ロックサーバノードのストライプライトロック成功レスポンスメッセージを受信した後、第2ロッククライアントノードは、ローカルグローバルユニフォームキャッシュからストライプキャッシュスペースをリクエストし、アプリケーションサーバから書き込みが必要とされるデータストライプを受信し、データストライプをローカルグローバルユニフォームキャッシュに格納し、その後、データストライプのデータストリップを対応するロッククライアントノードに書き込む。
【0100】
ステップ508:第2ロッククライアントノードは、デグレードロックリクエストをロックサーバノードに送信する。
【0101】
このステップでは、データの書き込みに成功した後、第2ロッククライアントノードは、デグレードロックリクエストを生成し、当該リクエストをロックサーバノードに送信し、ここで、当該リクエストは、データストライプに対するライトロックをリードロックにデグレードすることを示す。
【0102】
ステップ509:ロックサーバノードは、レコードを第2ロッククライアントノードがデータストライプに関するリードロックを保持することに変更する。
【0103】
このステップでは、デグレードロックリクエストを受信した後、ロックサーバノードは、第2ロッククライアントノードに対応するロックタイプを“ライトロック”から“リードロック”に変更する。
【0104】
図7は、本発明の実施例7による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例7では、オーナである第1ロッククライアントノードがキャッシュ処理スペースの不足のためデータが削除されると、第2ロッククライアントノードは、第1ロッククライアントノードからデータストライプを読むと仮定される。
図7に示されるように、本方法は以下のプロセスを含む。
【0105】
ステップ601:第2ロッククライアントノードは、データストライプに関するリードリクエストを第1ロッククライアントノードに送信する。
【0106】
このステップでは、データストライプのオーナは第1ロッククライアントノードである。データストライプを読むと、第2ロッククライアントノードは、第1ロッククライアントノードがオーナであることを知り、第1ロッククライアントノードのキャッシュからデータストライプの読み込みをリクエストするため、データストライプに関するリードリクエストを第1ロッククライアントノードに送信する。
【0107】
ステップ602:第1ロッククライアントノードは、データストライプをキャッシュされたリソースにおいて検索する。
【0108】
このステップでは、第1ロッククライアントノードはまず、キャッシュされているリソースからデータストライプを検索する。データストライプが検出された場合、第1ロッククライアントノードは、データストライプを第2ロッククライアントノードに直接返し、データストライプが検出されなかった場合、それは、第1ロッククライアントノードにおいてデータ削除が行われ、データストライプが削除されたることを示し、ステップ603が実行される。本発明の実施例7において、データストライプは検出されないと仮定される。
【0109】
ステップ603:第1ロッククライアントノードは、分散ストレージシステムにおいてロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成する。
【0110】
このステップでは、第1ロッククライアントノードがそれのキャッシュにおいてデータストライプを検出しない場合、第1ロッククライアントノードは、分散ストレージシステムのロッククライアントノードにデータリードリクエストを自発的に発信し、ロッククライアントノードからデータストライプのデータストリップを読み、第1ロッククライアントノードのグローバルキャッシュにおいてデータストライプを再構成する。
【0111】
ステップ604:第1ロッククライアントノードは、データストライプを第2ロッククライアントノードに返す。
【0112】
図8は、本発明の実施例8による分散ストレージシステムのキャッシュ処理方法のシグナリングフローチャートである。本発明の実施例8では、データストライプはロッククライアントノード間で動的にマイグレート又は移動すると仮定される。本発明の実施例では、キャッシュがロッククライアントノードのグローバルユニフォームキャッシュに作成されるとき、基本ルールは、データストライプに最初にアクセスするロッククライアントノードにデータストライプをキャッシュすることである。しかしながら、異なるロッククライアントノードを介しアプリケーションサーバによってアクセスされるデータストライプが少数のロッククライアントノードに中央的にキャッシュされるとき、キャッシュ削除がキャッシュ処理のためロッククライアントノードにおいて頻繁に行われることになり、キャッシュ処理の価値に重大な影響を与える。キャッシュにおいて頻繁にアクセスされるデータストライプは、キャッシュホットスポットと呼ばれる。従って、システム全体の各ストレージサーバ上でバランスされたキャッシュ利用を維持するため、ホットスポットは、ロッククライアントノードのキャッシュ間で動的にマイグレートすることが可能である必要がある。
【0113】
図8に示されるように、本方法は以下のプロセスを含む。
【0114】
ステップ701:第1ロッククライアントノードは、動的なマイグレーションを有効にするか判断する。
【0115】
このステップでは、グローバルユニフォームキャッシュのホットスポットの動的なマイグレーションの具体的な実現形態において、各ロッククライアントノードは、キャッシュホットスポットがそれのキャッシュにあるか判断し、キャッシュホットスポットがある場合、動的なマイグレーションを有効にする。分散ストレージシステムのグローバルユニフォームキャッシュにキャッシュホットスポットがあるか検出する方法は、単位時間において各ロッククライアントノードのキャッシュ削除率を定期的に検出し、単位時間におけるロッククライアントノードのキャッシュ削除率がロッククライアントノードのトータルのキャッシュ量の所定の比率を超過すると、キャッシュホットスポットがロッククライアントノードにあり、ホットスポットマイグレーション処理が必要であると決定することを含み、ここで、ロッククライアントノードは、動的にキャッシュホットスポットを他のロッククライアントノードに自発的に転送する。例えば、所定の比率は20%であってもよい。
【0116】
第1ロッククライアントノードは、動的なマイグレーションを有効にするか判断する。単位時間における第1ロッククライアントノードのキャッシュ削除率が第1ロッククライアントノードのトータルのキャッシュ量の所定の比率以上であるとき、第1ロッククライアントノードは、動的なマイグレーションを有効にすることを決定する。本発明の実施例では、単位時間における第1ロッククライアントノードのキャッシュ削除率は、第1ロッククライアントノードのトータルのキャッシュ量の所定の比率以上であると仮定される。
【0117】
実現形態の方法は、ロッククライアントノードに接続されるモニタを設定し、各ロッククライアントノードが、単位時間におけるロッククライアントノードのキャッシュ削除率を定期的にモニタに報告することを含む。モニタは、ロッククライアントノードのキャッシュ利用状態を定期的に収集し、キャッシュホットスポット情報をロッククライアントノードにプッシュする。ここで、キャッシュホットスポット情報は、キャッシュホットスポット条件を充足するロッククライアントノードのIDを含む。各ロッククライアントノードは、キャッシュホットスポット情報がロッククライアントノードのIDを含むかに従って、それがキャッシュスポットホットであるか判断し、それがキャッシュホットスポットである場合、動的なキャッシュマイグレーションタスクを有効にする。動的なキャッシュマイグレーションタスクの実行サイクルは、ロッククライアントノードがそれらの削除率をモニタに報告するハートビートサイクルと、モニタがロッククライアントノードの削除率を取得するサイクルとの和である。マイグレーションの終了条件は、現在の実行サイクルが終了し、次のキャッシュホットスポット情報がロッククライアントノードのIDを含まないということである。
【0118】
ステップ702:第2ロッククライアントノードは、データストライプに関するリードリクエストを第1ロッククライアントノードに送信する。
【0119】
このステップでは、データストライプのオーナが第1ロッククライアントノードであることが仮定される。
【0120】
ステップ702は、任意的なステップである。第1の実現方法では、第2ロッククライアントノードがステップ701の終了によりストライプリードロックの取得に成功した場合、ステップ702がまず実行され、第2ロッククライアントノードが、データストライプに関するリードリクエストを第1ロッククライアントノードに送信し、その後、ステップ703が実行される。第2の実現方法では、第2ロッククライアントノードがステップ701の終了によりストライプリードロックの取得に成功しなかった場合、ステップ702を実行する必要はなく、代わりにステップ703が直接実行される。
【0121】
ステップ703:第1ロッククライアントノードは、オーナ変更のためのリクエストメッセージをロックサーバノードに送信する。
【0122】
このステップでは、第1ロッククライアントノードは、オーナ変更のためのリクエストメッセージをロックサーバノードに送信し、ここで、当該メッセージは、データストライプのIDとターゲットロッククライアントノードのIDとを含み、データストライプのオーナの変更のリクエストをターゲットロッククライアントノードに通知する。すなわち、第1ロッククライアントノードは、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをロックサーバノードに送信する。本発明の実施例では、ターゲットロッククライアントノードは第2ロッククライアントノードであると仮定される。
【0123】
第1の実現方法では、第1ロッククライアントノードは、第2ロッククライアントノードからデータストライプに関するリードリクエストを受信した後、オーナ変更リクエストを生成する。第2の実現方法では、第1ロッククライアントノードは、オーナ変更のためのリクエストメッセージを自発的に生成する。
【0124】
ステップ704:ロックサーバノードは、データストライプのオーナをターゲットロッククライアントノードに変更する。
【0125】
このステップでは、第1ロッククライアントノードからオーナ変更のためのリクエストメッセージを受信した後、ロックサーバノードは、データストライプのオーナをターゲットロッククライアントノードに変更するため、データストライプのオーナ情報を修正する。
【0126】
ステップ705:ロックサーバノードは、データストライプのオーナの変更の成功を示すレスポンスメッセージを第1ロッククライアントノードに返す。
【0127】
ステップ706:第1ロッククライアントノードは、データストライプを第2ロッククライアントノードに送信する。
【0128】
このステップでは、上記プロセスがステップ702を含む場合、当該ステップにおいて、第1ロッククライアントノードは更に、リードデータ成功レスポンスメッセージを第2ロッククライアントノードに返す。
【0129】
ステップ707:第1ロッククライアントノードは、ローカルキャッシュからデータストライプを削除する。
【0130】
このステップでは、データストライプのオーナの変更の成功を示すレスポンスメッセージの受信後、第1ロッククライアントノードは、第1ロッククライアントノードのキャッシュからデータストライプを自発的に削除する。
【0131】
ステップ708:第2ロッククライアントノードは、データストライプをキャッシュする。
【0132】
このステップでは、上記プロセスがステップ702を含む場合、リードデータ成功レスポンスメッセージの受信後、第2ロッククライアントノードは、第2ロッククライアントノードのローカルグローバルキャッシュにデータストライプをキャッシュし、レスポンスメッセージをアプリケーションサーバに返す。上記プロセスがステップ702を含まない場合、第1ロッククライアントノードは、第2ロッククライアントノードのローカルグローバルキャッシュにデータストライプを自発的にプッシュする。
【0133】
図9は、本発明の実施例9によるデータストライプオーナサーバノードの概略構成図である。
図9に示されるように、データストライプオーナサーバノードは、少なくとも受信部91、記録部92、送信部93及び判断部94を含む。
【0134】
受信部91は、ロッククライアントノードからデータストライプに関するロック通知を受信するよう構成される。
【0135】
判断部94は、ロック通知を判断するよう構成される。
【0136】
記録部92は、ロック通知が最初に受信したリードロック通知又はライトロック通知であると判断部が判断すると、ロッククライアントノードをデータストライプのオーナとして記録するよう構成される。
【0137】
送信部93は、ロック通知が最初に受信したリードロック通知又はライトロック通知であると判断部が判断したとき、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返し、ロック通知が最初に受信していないリードロック通知であると判断部が判断したとき、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を有するレスポンスメッセージをロッククライアントノードに返すよう構成される。
【0138】
上記技術的手段に基づき、さらに判断部94は、具体的には、ロック通知がリードロック通知であるとき、データストライプの属性情報を記録されたデータストライプの属性情報から検索し、データストライプの属性情報が検出されなかった場合、リードロック通知が最初に受信されたリードロック通知であると判定するよう構成される。
【0139】
上記技術的手段に基づき、さらに受信部91は更に、ロッククライアントノードからデータストライプのオーナを他のロッククライアントノードに変更するためのリクエストメッセージを受信するよう構成される。対応して、記録部92は更に、データストライプのオーナを他のロッククライアントノードに変更するよう構成される。対応して、送信部92は更に、ロッククライアントノードがローカルキャッシュからデータストライプを削除し、他のロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナの変更の成功を示すレスポンスメッセージをロッククライアントノードに返すよう構成される。
【0140】
上記技術的手段に基づき、さらにデータストライプオーナサーバノードがロックサーバノード装置に統合されるとき、リードロック通知はリードロックリクエストを有し、ライトロック通知はライトロックリクエストを有する。対応して、送信部93は更に、ロック成功レスポンスメッセージをロッククライアントノードに返すよう構成される。
【0141】
本発明の実施例9のデータストライプオーナサーバノードは、本発明の第2〜8実施例のキャッシュ処理方法を実行するよう構成可能である。データストライプオーナサーバノードの具体的な実現プロセス及び技術的効果について、本発明の第2〜8実施例が参照されてもよく、ここでは詳細は再度説明されない。
【0142】
図10は、本発明の実施例10によるロッククライアントノードの概略構成図である。
図10に示されるように、ロッククライアントノードは、少なくとも送信部1001、受信部1002、比較部1003、キャッシュ処理部1004及びリードライト部1005を有する。
【0143】
送信部1001は、データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信するよう構成される。
【0144】
受信部1002は、データストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信するか、又はデータストライプオーナサーバノードからデータストライプのオーナのIDを受信するよう構成される。
【0145】
比較部1003は、データストライプオーナのIDとロッククライアントノードのIDとを比較し、当該2つのIDが異なる場合、リードライト部1005を起動するよう構成される。
【0146】
キャッシュ処理部1004は、受信部がデータストライプオーナサーバノードから、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信すると、データストライプをキャッシュするよう構成される。
【0147】
リードライト部1005は、データストライプオーナのIDに対応するロッククライアントノードのキャッシュからデータストライプを読むよう構成される。
【0148】
上記技術的手段に基づき、さらに送信部は、ロックサーバノードが記録をロッククライアントノードがデータストライプに関するリードロックを保持していることに変更するように、デグレードロックリクエストをロックサーバノードに送信するよう構成される。
【0149】
上記技術的手段に基づき、さらにロッククライアントノードは検索部1006を有してもよい。対応して、受信部1002は更に、アプリケーションサーバからデータストライプに関するリードリクエスト又はライトリクエストを受信するよう構成される。対応して、検索部1006は、データストライプに関するリードロック又はライトロックをローカルに検索し、データストライプに関するリードロック又はライトロックが検出された場合、データストライプに関するリードロック又はライトロックに従ってデータストライプのオーナを決定し、リードライト部1005を起動し、データストライプに関するリードロック又はライトロックが検出されない場合、送信部1001を起動するよう構成される。対応して、リードライト部1005は更に、データストライプのオーナからデータストライプを読むか、又はデータストライプのオーナにデータストライプを書き込むよう構成される。
【0150】
上記技術的手段に基づき、さらにキャッシュ処理部1004は更に、単位時間における削除率がロッククライアントノードのトータルキャッシュ量の所定の比率以上であるとき、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信するよう送信部1001を制御するよう構成され、受信部1002により受信され、データストライプのオーナの変更の成功を示すレスポンスメッセージに従って、ローカルキャッシュからデータストライプを削除し、データストライプをターゲットロッククライアントノードに送信するよう送信部1001を制御するよう構成される。対応して、送信部1001は更に、キャッシュ処理部1004の制御に従って、データストライプオーナサーバノードがデータストライプのオーナをターゲットロッククライアントノードに変更するように、データストライプのオーナをターゲットロッククライアントノードに変更するためのリクエストメッセージをデータストライプオーナサーバノードに送信するよう構成される。送信部1001は更に、ターゲットロッククライアントノードがデータストライプをキャッシュするように、キャッシュ処理部1004の制御に従ってデータストライプをターゲットロッククライアントノードに送信するよう構成される。対応して、受信部1002は更に、データストライプオーナサーバノードからデータストライプのオーナの変更の成功を示すレスポンスメッセージを受信するよう構成される。
【0151】
上記技術的手段に基づき、さらにリードライト部1005は、具体的にはデータストライプオーナのIDに対応するロッククライアントノードがデータストライプをローカルにキャッシュされたデータから検索するように、データストライプオーナのIDに対応するロッククライアントノードにデータストライプに関するリードリクエストを送信し、データストライプが検出された場合、データストライプをリードライト部1005に返し、そうでない場合、分散ストレージシステムのロッククライアントノードからデータストライプのデータストリップを読み、データストライプを構成し、データストライプをリードライト部1005に返すよう構成される。
【0152】
本発明の実施例10のロッククライアントノードは、本発明の第2〜8実施例のキャッシュ処理方法を実行するよう構成可能である。ロッククライアントノードの具体的な実現プロセス及び技術的効果について、本発明の第2〜8実施例が参照されてもよく、ここでは詳細は再度説明されない。
【0153】
図11は、本発明の実施例11によるデータストライプオーナサーバノードの概略構成図である。
図11に示されるように、データストライプオーナサーバノードは、少なくともプロセッサ1101、メモリ1102、通信インタフェース1103及びバス1104を有する。プロセッサ1101、メモリ1102及び通信インタフェース1103は、バス1104を介し通信する。
【0154】
メモリ1102は、プログラムを格納するよう構成される。具体的には、プログラムは、コンピュータ実行命令を含むプログラムコードを含む。メモリ1102は、高速RAMメモリ又は不揮発性メモリ(non−volatile memory)であってもよく、例えば、少なくとも1つの磁気ディスクメモリであってもよい。
【0155】
通信インタフェース1103は、第1ロッククライアントノード及び第2ロッククライアントノードと通信するよう構成される。
【0156】
プロセッサ1101は、メモリ1102により格納される実行命令を実行するよう構成され、本発明の実施例を実現するよう割り当てられたシングルコア若しくはマルチコア中央処理ユニット(Central Processing Unit,CPU)、特定用途向け集積回路(Application Specific Integrated Circuit,ASIC)又は1以上の集積回路であってもよい。
【0157】
データストライプオーナサーバノードが実行中であるとき、プロセッサ1101は、以下の命令を実行するためのプログラムを実行する。
データストライプオーナサーバノードが、ロッククライアントノードからデータストライプに関するロック通知を受信し、ロック通知を判断し、
ロック通知が最初に受信したリードロック通知又はライトロック通知であるとき、データストライプオーナサーバノードは、ロッククライアントノードをデータストライプのオーナとして記録し、ロッククライアントノードがデータストライプをキャッシュするように、データストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージをロッククライアントノードに返し、
ロック通知が最初に受信したリードロック通知であるとき、データストライプオーナサーバノードは、ロッククライアントノードがデータストライプのオーナのキャッシュからデータストライプを読むように、データストライプのオーナ情報を含むレスポンスメッセージをロッククライアントノードに返す。
【0158】
本発明の実施例11のデータストライプオーナサーバノードは、本発明の第2〜8実施例のキャッシュ処理方法を実行するよう構成できる。データストライプオーナサーバノードの具体的な実現プロセス及び技術的効果について、本発明の第2〜8実施例が参照されてもよく、ここでは詳細は再度説明されない。
【0159】
図12は、本発明の実施例12によるロッククライアントノードの概略構成図である。
図12に示されるように、ロッククライアントノードは、少なくともプロセッサ1201、メモリ1202、通信インタフェース1203及びバス1204を有する。プロセッサ1201、メモリ1202及び通信インタフェース1203は、バス1204を介し通信する。
【0160】
メモリ1202は、プログラムを格納するよう構成される。具体的には、プログラムは、コンピュータ実行命令を含むプログラムコードを含む。メモリ1202は、高速RAMメモリ又は不揮発性メモリ(non−volatile memory)であってもよく、例えば、少なくとも1つの磁気ディスクメモリであってもよい。
【0161】
プロセッサ1201は、メモリ1202により格納される実行命令を実行するよう構成され、本発明の実施例を実現するよう割り当てられたシングルコア若しくはマルチコア中央処理ユニット(Central Processing Unit,CPU)、特定用途向け集積回路(Application Specific Integrated Circuit,ASIC)又は1以上の集積回路であってもよい。
【0162】
通信インタフェース10203は、データストライプオーナサーバノード及び他のロッククライアントノードと通信するよう構成される。
【0163】
ロッククライアントノードが実行中であるとき、プロセッサ1202は、以下の命令を実行するためのプログラムを実行する。
データストライプに関するリードロック通知又はライトロック通知をデータストライプオーナサーバノードに送信し、
ロッククライアントノードがデータストライプオーナサーバノードからデータストライプのオーナがロッククライアントノードであることを示すレスポンスメッセージを受信すると、ロッククライアントノードがデータストライプをキャッシュし、
データストライプオーナサーバノードからデータストライプのオーナの識別IDを受信すると、データストライプオーナのIDとロッククライアントノードのIDとを比較し、当該2つのIDが異なるとき、データストライプオーナのIDに対応するロッククライアントノードからデータストライプを読む。
【0164】
本発明の実施例12のロッククライアントノードは、本発明の第2〜8実施例のキャッシュ処理方法を実行するよう構成できる。ロッククライアントノードの具体的な実現プロセス及び技術的効果について、本発明の第2〜8実施例が参照されてもよく、ここでは詳細は再度説明されない。
【0165】
本発明の実施例13は、データストライプオーナサーバノードに本発明の実施例2の方法を実行するよう指示するのに用いられるコンピュータ実行命令を含むコンピュータ可読媒体を提供する。
【0166】
本発明の実施例14は、ロッククライアントノードに本発明の実施例3の方法を実行するよう指示するのに用いられるコンピュータ実行命令を含むコンピュータ可読媒体を提供する。説明の簡単化のため、上記の方法の実施例は全て動作の組み合わせとして説明されたが、当業者は本発明が説明された動作シーケンスに限定されるものでないことを知るべきであることに留意すべきである。本発明によると、いくつかのステップは他のシーケンスにより実行されてもよく、又は同時に実行されてもよい。また、当業者は、ここに説明された実施例が単なる一例となる実施例であることを知るべきであり、含まれている動作及びモジュールは本発明に必須でない。
【0167】
上記実施例では、実施例の説明は各自の強調を有し、実施例に詳細に説明されないパーツについて、他の実施例の関連する説明が参照できる。
【0168】
実現方法の上記の説明から、当業者は、本発明がハードウェア、ファームウェア又はこれらの組み合わせにより実現可能であることが明らかであるかもしれない。本発明がソフトウェアを用いることによって実現されるとき、上述した機能はコンピュータ可読媒体に格納されるか、又はコンピュータ可読媒体の1以上の命令又はコードとして転送されてもよい。コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み、ここで、通信媒体は、ある場所から他の場所へのコンピュータプログラムの転送を実現する何れかの媒体を含む。記憶媒体は、利用可能な何れかのコンピュータアクセス可能な媒体であってもよい。例えば、限定することなく、コンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、他の光ディスクストレージ若しくは磁気ディスク記憶媒体、他の磁気記憶装置、又は命令若しくはデータ構造の形式により所望のプログラムコードを担持若しくは格納するのに利用可能であって、コンピュータによりアクセス可能な他の何れかの媒体を含むものであってもよい。さらに、適切であるとき、何れかの接続はコンピュータ可読媒体とすることが可能である。例えば、ソフトウェアがウェブサイト、サーバ又は他のリモートソースから同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)又は赤外線、無線及びマイクロ波などの無線技術を利用することによって転送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL若しくは赤外線、無線及びマイクロ波などの無線技術は全て、媒体の定義の範囲内に属する。例えば、本発明において用いられるディスク(disk)及びディスク(disc)は、コンパクトディスク(CD)、レーザディスク、DVD(Digital Versatile Disc)、フロッピー(登録商標)ディスク及びブルーレイディスクを含み、ここで、ディスク(disk)は一般にデータを磁気的に複製し、ディスク(disc)はレーザを用いてデータを光学的に複製する。上記の組み合わせはまた、コンピュータ可読媒体の保護範囲内に属する。
【0169】
最後に、上記実施例は本発明を限定するのでなく、本発明の技術的手段を説明することを単に意図することに留意すべきである。本発明が上記実施例を参照して詳細に説明されたが、当業者は、上記実施例において説明した技術的手段に対する修正又はこれらの一部の技術的特徴に対する等価な置換が、当該修正又は置換が対応する技術的手段の本質を本発明の実施例の技術的手段の趣旨及び範囲から逸脱させるものでない限り、依然として可能であることを理解すべきである。