(57)【要約】クラスター化されたネットワーク内のオブジェクトを管理するためのシステムは、データオブジェクト（２０８）の少なくとも１つのコピーを包含するファイルシステム（２１２）を含む。本システムは、ファイルシステム（２１２）と通信するいくつかのクラスター化されたサーバを含むことができる。リードサーバが選択され、それは、ホストサーバ（２０６）を選択するための分散型合意アルゴリズムを含み、アルゴリズムのラウンドを実行中にマルチキャスティングを利用する。選択されたホストサーバ（２０６）は、ローカルキャッシュなどにデータオブジェクト（２０８）のコピーを含むことができ、クラスター内の任意の他のサーバにローカルコピー（２０８）へのアクセスを提供する。また、ホストサーバ（２０６）によってホスティングされた項目に対して為されたいかなる変更もファイルシステム（２０２）において更新することができる。ホストサーバ（２０６）がオブジェクトをホスティングすることができなくなった場合、分散型合意アルゴリズムを使用して新しいホストを選択することができる。他のサーバ（２１６、２１８）は、次に、マルチキャストメッセージングによって新しいホストについて通知される。
2005502957.tif 000002
【特許請求の範囲】
【請求項１】
各々がネットワークデータソースと通信するようになった複数のネットワークサーバと、
前記複数のネットワークサーバにおけるリードサーバと、
を含み、
前記リードサーバは、前記複数のネットワークサーバからホストサーバを選択するための分散型合意アルゴリズムを包含し、
前記ホストサーバは、前記ネットワークデータソース内のデータ項目に関連したオブジェクトを包含し、それによって、該データ項目にアクセスする必要がある前記複数のネットワークサーバのいずれもが該ホストサーバ上の該オブジェクトにアクセスすることができる、
ことを特徴とする、ネットワーク上のオブジェクトを管理するためのシステム。
【請求項２】
前記ネットワークサーバは、ハードウエアクラスターサーバ及びソフトウエアクラスターサーバから成る群から選択されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記分散型合意アルゴリズムは、前記リードサーバと前記複数のサーバとの間に、前記複数のネットワークサーバの大部分が前記ホストサーバについて同意するまで継続するメッセージのラウンドを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記ホストサーバは、前記ネットワークデータソースからのデータのコピーを含むデータオブジェクトを包含することを特徴とする請求項１に記載のシステム。
【請求項５】
前記ホストサーバは、前記ネットワークデータソース内の前記データ項目に対する唯一のアクセスポイントとして働くデータオブジェクトを包含することを特徴とする請求項１に記載のシステム。
【請求項６】
前記データ項目は、トランザクションログであることを特徴とする請求項１に記載のシステム。
【請求項７】
前記分散型合意アルゴリズムは、「Ｐａｘｏｓ」アルゴリズムであることを特徴とする請求項１に記載のシステム。
【請求項８】
各々がネットワークデータソースと通信するようになった複数のネットワークサーバと、
前記複数のネットワークサーバにおけるリードサーバと、
を含み、
前記リードサーバは、前記複数のネットワークサーバからホストサーバを選択するための分散型合意アルゴリズムを包含し、
前記ホストサーバは、前記ネットワークデータソースに位置するデータ項目のコピーを包含し、それによって、該データ項目にアクセスする必要がある前記複数のネットワークサーバのいずれもが該ホストサーバ上の該コピーにアクセスすることができる、
ことを特徴とする、ネットワーク上のオブジェクトを管理するためのシステム。
【請求項９】
各々がネットワークデータソースと通信するようになった複数のネットワークサーバと、
前記複数のネットワークサーバにおけるリードサーバと、
を含み、
前記リードサーバは、前記複数のネットワークサーバからホストサーバを選択するための分散型合意アルゴリズムを包含し、
前記ホストサーバは、前記ネットワークデータソースに位置するデータ項目への唯一のアクセスポイントを包含し、従って、該データ項目にアクセスする必要がある前記複数のネットワークサーバのいずれもが、該ホストサーバを通じて該データ項目にアクセスしなければならない、
ことを特徴とする、ネットワーク上のオブジェクトを管理するためのシステム。
【請求項１０】
データ項目の少なくとも１つのコピーを包含するファイルシステムと、
前記ファイルシステムと通信する複数のサーバと、
前記複数のサーバからホストサーバを選択するための分散型合意アルゴリズムを包含する、該複数のサーバにおけるリードサーバと、
前記データ項目のローカルコピーを包含する、前記複数のサーバにおけるホストサーバと、
を含み、
前記ホストサーバは、前記ローカルコピーへのアクセスを前記複数のサーバのいずれにも提供し、該ローカルコピーに更新が為された時はいつでも前記ファイルシステム内の前記データ項目の前記コピーを更新するようになっている、
ことを特徴とする、ネットワーク上のオブジェクトを管理するためのシステム。
【請求項１１】
前記ホストサーバは、更に、前記ローカルコピーをローカルキャッシュに記憶するようになっていることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記複数のサーバは、クラスターを含むことを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記ファイルシステムは、複数のディスク上で前記データ項目を複製することを特徴とする請求項１０に記載のシステム。
【請求項１４】
データ項目の少なくとも１つのコピーを包含するファイルシステムと、
前記ファイルシステムと通信する複数のサーバと、
前記複数のサーバ内に位置するハードウエアクラスターサーバを包含し、かつ該ハードウエアクラスターサーバの中からリードサーバを選択するための分散型合意アルゴリズムを包含するハードウエアクラスターと、
前記複数のサーバからホストサーバを選択するためのアルゴリズムを包含する、前記ハードウエアクラスターサーバにおけるリードサーバと、
前記データ項目のローカルコピーを包含する、前記複数のサーバにおけるホストサーバと、
を含み、
前記ホストサーバは、前記ローカルコピーへのアクセスを前記複数のサーバのいずれにも提供し、該ローカルコピーに更新が為された時はいつでも前記ファイルシステム内の前記データ項目の前記コピーを更新するようになっている、
ことを特徴とする、ネットワーク上のオブジェクトを管理するためのシステム。
【請求項１５】
前記ホストサーバは、前記ハードウエアクラスター内にあることを特徴とする請求項１４に記載のシステム。
【請求項１６】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜く段階と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、ネットワーク上のオブジェクトを管理する方法。
【請求項１７】
前記ホストサーバ上の前記コピーが修正される時に前記ファイルシステム内の前記データを更新する段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ファイルシステムにアクセスするのに前記ホストサーバを通過するように他のネットワークサーバを制限する段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ファイルシステムの外側に前記データ項目の１つのコピーのみが存在することを確実にする段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
前記ファイルシステムの外側に前記データ項目の１つのコピーが常に存在することを確実にする段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２１】
前記ホストサーバが、もはや前記オブジェクトをホスティングすることができない場合に、分散型合意アルゴリズムを使用して複数のネットワークサーバの中から新しいホストサーバを選択する段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２２】
前記分散型合意アルゴリズムを使用して選択された前記ホストサーバが、もはや前記オブジェクトをホスティングすることができない場合に、ファイルシステムから前記新しいホストサーバにデータ項目のコピーを引き抜く段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２３】
前記ホストサーバが、もはや前記オブジェクトをホスティングすることができない場合に、ネットワーク要求を処理するのに使用される前記データ項目のコピーを新しいホストサーバが包含することを他のネットワークサーバに通知する段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２４】
各々がデータオブジェクトをキャッシュに入れることができる複数のサーバと、
データ項目の少なくとも１つのコピーを包含するファイルシステムと、
前記データオブジェクトのコピーをキャッシュに入れるホストサーバを前記複数のサーバの中から選択するための分散型合意アルゴリズムと、
前記データオブジェクトのコピーをホストコンピュータが包含することを前記ネットワーク上のサーバに通知するための分配システムと、
を含むことを特徴とする、ネットワーク上のオブジェクトを管理するためのフレームワーク。
【請求項２５】
分散型合意アルゴリズムを使用して、ホストサーバを複数のネットワークサーバの中から選択する段階と、
特定の期間に亘ってデータ項目への唯一のアクセスを提供するために割り当てられた前記ホストサーバにデータオブジェクトを割り当てる段階と、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜く段階と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、オブジェクトをネットワーク上のサーバにリースする方法。
【請求項２６】
前記特定の期間が終了した状態で、前記データオブジェクトを別の期間に亘って前記ホストサーバに割り当てる段階を更に含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記特定の期間が前記ホストサーバ上で終了した状態で、前記データオブジェクトを別の特定の期間に亘って新しいホストサーバに割り当てる段階を更に含むことを特徴とする請求項２５に記載の方法。
【請求項２８】
ハードウエアクラスター内の複数のハードウエアクラスターサーバの中からリードサーバを選択する段階と、
前記リードサーバ上の分散型合意アルゴリズムを使用して、複数のネットワークサーバからホストサーバを選択する段階と、
特定の期間に亘ってデータ項目への唯一のアクセスを提供するために割り当てられた前記ホストサーバにデータオブジェクトを割り当てる段階と、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜く段階と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、オブジェクトをネットワーク上のサーバにリースする方法。
【請求項２９】
ハードウエアクラスター内の複数のハードウエアクラスターサーバの中からリードサーバを選択する段階と、
前記リードサーバ上の分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
ネットワーク上のデータオブジェクトへの唯一のアクセスを提供するために割り当てられた前記ホストサーバにデータオブジェクトを割り当てる段階と、
ファイルシステムから前記ホストサーバにデータオブジェクトのコピーを引き抜く段階と、
ネットワーク要求を処理するのに使用される前記データオブジェクトのコピーを前記ホストサーバが包含することを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、ネットワーク上のオブジェクトの所有権を割り当てる方法。
【請求項３０】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
ネットワーク上で「ＪＭＳ」に対する唯一のアクセスポイント及びメッセージ待ち行列を提供する「ＪＭＳ」メッセージストアを含む「ＪＭＳ」オブジェクトを前記ホストサーバに割り当てる段階と、
前記ホストサーバが前記唯一の「ＪＭＳ」メッセージストアをホスティングしていることを前記ネットワークサーバに通知する段階と、
を含むことを特徴とする、ネットワーク上の「Ｊａｖａメッセンジャーサービス（ＪＭＳ）」をホスティングする方法。
【請求項３１】
前記複数のネットワークサーバの１つに向けたメッセージの有無に関して前記「ＪＭＳ」メッセージストアを検査する段階を更に含むことを特徴とする請求項３０に記載の方法。
【請求項３２】
「ＪＭＳ」メッセージをネットワークサーバから前記ホストサーバ上の前記「ＪＭＳ」メッセージストアに送信する段階を更に含むことを特徴とする請求項３０に記載の方法。
【請求項３３】
前記ホストサーバ上の前記「ＪＭＳ」メッセージストア内のメッセージを「ＪＭＳ」構成要素に送信する段階を更に含むことを特徴とする請求項３０に記載の方法。
【請求項３４】
複数のサーバにおけるホストサーバを使用して、データオブジェクトへのアクセスを提供する段階と、
前記ホストサーバが前記データオブジェクトへのアクセスを提供することができない場合に、分散型合意アルゴリズムを使用して前記複数のサーバの中から新しいホストサーバを選択する段階と、
前記データオブジェクトへのアクセスを提供するのに必要な情報を前記新しいホストサーバに引き抜く段階と、
新しいホストサーバが前記データオブジェクトへのアクセスを提供していることを前記複数のサーバの他のサーバに通知する段階と、
を含むことを特徴とする、クラスター内のオブジェクトの存在を確実にする方法。
【請求項３５】
複数のサーバの中からリードサーバを選択する段階と、
前記リードサーバ上の分散型合意アルゴリズムを使用して、複数のサーバの中から管理サーバを選択する段階と、
データソース内及び前記管理サーバ上の情報を調整するために、データソースから該管理サーバに管理情報を引き抜き、該データソース内の管理情報を更新する段階と、
前記クラスター内の他のサーバに前記管理サーバのアイデンティティを通知する段階と、
を含むことを特徴とする、クラスター内の管理サーバの利用可能性を確実にする方法。
【請求項３６】
前記データソースから管理情報を引き抜く段階は、管理情報をファイルシステムから引き抜く段階を含むことを特徴とする請求項３５に記載の方法。
【請求項３７】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
データ項目への唯一のアクセスを提供するために割り当てられた前記ホストサーバにデータオブジェクトを割り当てる段階と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含するという通知を、クラスター内の他のサーバに対してマルチキャストする段階と、
を含むことを特徴とする、クラスター内のオブジェクトを分配する方法。
【請求項３８】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
前記クラスター内の各サーバに連絡して、前記選択されたホストがそのサーバにとって容認可能か否かを判断する段階と、
前記クラスター内の全てのサーバが、前記選択されたホストが容認可能であることに同意した場合、新しいホストサーバの選択を委託する通知を該クラスター内の他のサーバにマルチキャストする段階と、
を含むことを特徴とする、クラスター内のオブジェクトを分配する方法。
【請求項３９】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択するための手段と、
データ項目への唯一のアクセスを提供するために割り当てられた前記ホストサーバにデータオブジェクトを割り当てるための手段と、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜くための手段と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知するための手段と、
を含むことを特徴とするコンピュータ可読媒体。
【請求項４０】
ネットワーク上のオブジェクトを管理するサーバコンピュータによって実行されるコンピュータプログラム製品であって、
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択するためのコンピュータコードと、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜くためのコンピュータコードと、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知するためのコンピュータコードと、
を含むことを特徴とする製品。
【請求項４１】
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択するための手段と、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜くための手段と、
ネットワーク要求を処理するのに使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知するための手段と、
を含むことを特徴とする、クラスター内のオブジェクトを分配するためのシステム。
【請求項４２】
プロセッサと、
前記プロセッサによって実行されるオブジェクトコードと、
を含み、
前記オブジェクトコードは、
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択し、
ファイルシステムから前記ホストサーバにデータ項目のコピーを引き抜き、
ネットワーク要求を処理する際に使用される前記データ項目のコピーを前記ホストサーバが包含することを他のネットワークサーバに通知する、
ように構成される、
ことを特徴とするコンピュータシステム。
【請求項４３】
「Ｐａｘｏｓ」アルゴリズムを使用して、ソフトウエアクラスター内の複数のネットワークサーバの中からホストサーバを選択する段階と、
データオブジェクトを前記ホストサーバに割り当てる段階と、
を含み、
前記データオブジェクトは、ネットワーク内の前記ホストサーバ上にのみ存在する、
ことを特徴とする、ネットワーク上のオブジェクトを管理する方法。
【請求項４４】
前記データオブジェクトのためのデータをファイルシステムから引き抜く段階を更に含むことを特徴とする請求項４３に記載の方法。
【請求項４５】
ネットワーク要求を処理するのに使用される前記データ項目のためのオブジェクトを前記ホストサーバが包含することを他のネットワークサーバに通知する段階を更に含むことを特徴とする請求項４３に記載の方法。
【請求項４６】
前記新しいホストサーバの識別を前記他のネットワークサーバにマルチキャストする段階を更に含むことを特徴とする請求項４３に記載の方法。
【請求項４７】
前記「Ｐａｘｏｓ」アルゴリズムを使用してソフトウエアクラスター内の複数のネットワークサーバの中からホストサーバを選択する段階は、情報のラウンドを前記他のネットワークサーバにマルチキャストする段階を含むことを特徴とする請求項４３に記載の方法。
【請求項４８】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
ネットワーク上で「ＪＭＳ」に対する唯一のアクセスポイント及びメッセージ待ち行列を提供する「ＪＭＳ」メッセージストアを含む「ＪＭＳ」オブジェクトを前記ホストサーバに割り当てる段階と、
前記ホストサーバが前記唯一の「ＪＭＳ」メッセージストアをホスティングしていることを前記ネットワークサーバに通知する段階と、
を含むことを特徴とする、ネットワーク上の「Ｊａｖａメッセンジャーサービス（ＪＭＳ）」をホスティングする方法。
【請求項４９】
前記複数のネットワークサーバの１つに向けたメッセージの有無に関して前記「ＪＭＳ」メッセージストアを検査する段階を更に含むことを特徴とする請求項４８に記載の方法。
【請求項５０】
「ＪＭＳ」メッセージをネットワークサーバから前記ホストサーバ上の前記「ＪＭＳ」メッセージストアに送信する段階を更に含むことを特徴とする請求項４８に記載の方法。
【請求項５１】
前記ホストサーバ上の前記「ＪＭＳ」メッセージストア内のメッセージを「ＪＭＳ」構成要素に送信する段階を更に含むことを特徴とする請求項４８に記載の方法。
【請求項５２】
ネットワーク上で「ＪＭＳ」に対する唯一のアクセスポイント及びメッセージ待ち行列を提供する「ＪＭＳ」メッセージストアを含む「ＪＭＳ」オブジェクトへのアクセスを、複数のサーバ内のホストサーバを使用して提供する段階と、
前記ホストサーバが前記「ＪＭＳ」オブジェクトへのアクセスを提供することができない場合に、分散型合意アルゴリズムを使用して前記複数のサーバの中から新しいホストサーバを選択する段階と、
前記「ＪＭＳ」オブジェクトへのアクセスを提供するのに必要な情報を前記新しいホストサーバに引き抜く段階と、
新しいホストサーバが前記「ＪＭＳ」オブジェクトへのアクセスを提供していることを前記複数のサーバの他のサーバに通知する段階と、
を含むことを特徴とする、クラスター内の「ＪＭＳ」オブジェクトの存在を確実にする方法。
【請求項５３】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
前記クラスター内の各サーバに連絡して、前記選択されたホストがそのサーバにとって容認可能か否かを判断する段階と、
前記クラスター内の全てのサーバが、前記選択されたホストが容認可能であることに同意した場合、新しいホストサーバの選択を委託する通知を該クラスター内の他のサーバにマルチキャストする段階と、
を含むことを特徴とする、「ＪＭＳ」オブジェクトをクラスター内のサーバに割り当てる方法。
【請求項５４】
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択するための手段と、
「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てるための手段と、
前記ホストサーバが「ＪＭＳ」への唯一のアクセスを提供することを他のネットワークサーバに通知するための手段と、
を含むことを特徴とするコンピュータ可読媒体。
【請求項５５】
ネットワーク上のオブジェクトを管理するサーバコンピュータによって実行されるコンピュータプログラム製品であって、
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択するためのコンピュータコードと、
「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てるためのコンピュータコードと、
前記ホストサーバが「ＪＭＳ」への唯一のアクセスを提供することを他のネットワークサーバに通知するためのコンピュータコードと、
を含むことを特徴とする製品。
【請求項５６】
分散型合意アルゴリズムを使用して複数のネットワークサーバの中からホストサーバを選択するための手段と、
「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てるための手段と、
前記ホストサーバが「ＪＭＳ」への唯一のアクセスを提供することを他のネットワークサーバに通知するための手段と、
を含むことを特徴とする、クラスター内のオブジェクトを分配するためのシステム。
【請求項５７】
プロセッサと、
前記プロセッサによって実行されるオブジェクトコードと、
を含み、
前記オブジェクトコードは、
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択し、
「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当て、
前記ホストサーバが「ＪＭＳ」への唯一のアクセスを提供することを他のネットワークサーバに通知する、
ように構成される、
ことを特徴とするコンピュータシステム。
【請求項５８】
「Ｐａｘｏｓ」アルゴリズムを使用して、ソフトウエアクラスター内の複数のネットワークサーバの中からホストサーバを選択する段階と、
「ＪＭＳ」メッセージストアを前記ホストサーバに割り当てる段階と、
を含み、
前記「ＪＭＳ」メッセージストアは、前記ホストサーバ上にのみ存在する、
ことを特徴とする、ネットワーク上の「ＪＭＳ」メッセージストアを管理する方法。
【請求項５９】
前記ホストサーバが「ＪＭＳ」メッセージストアをホスティングすることを他のネットワークサーバに通知する段階を更に含むことを特徴とする請求項５８に記載の方法。
【請求項６０】
新しいホストサーバの識別を他のネットワークサーバにマルチキャストする段階を更に含むことを特徴とする請求項５８に記載の方法。
【請求項６１】
前記「Ｐａｘｏｓ」アルゴリズムを使用してソフトウエアクラスター内の複数のネットワークサーバの中からホストサーバを選択する段階は、情報のラウンドを他のネットワークサーバにマルチキャストする段階を含むことを特徴とする請求項５８に記載の方法。
【請求項６２】
複数のネットワークサーバと、
前記複数のネットワークサーバにおけるリードサーバと、
を含み、
前記リードサーバは、前記複数のネットワークサーバからホストサーバを選択するための分散型合意アルゴリズムを包含し、
前記ホストサーバは、「ＪＭＳ」オブジェクトを包含し、従って、「ＪＭＳ」にアクセスする必要がある前記複数のネットワークサーバのいずれもが、該ホストサーバ上の該「ＪＭＳ」オブジェクトにアクセスしなければならない、
ことを特徴とする、ネットワーク上の「ＪＭＳ」オブジェクトを管理するためのシステム。
【請求項６３】
前記ネットワークサーバは、ハードウエアクラスターサーバ及びソフトウエアクラスターサーバから成る群から選択されることを特徴とする請求項６２に記載のシステム。
【請求項６４】
前記分散型合意アルゴリズムは、前記リードサーバと前記複数のサーバとの間にメッセージのラウンドを含み、
前記ラウンドは、前記複数のネットワークサーバの大部分が前記ホストサーバについて同意するまで継続される、
ことを特徴とする請求項６２に記載のシステム。
【請求項６５】
前記分散型合意アルゴリズムは、「Ｐａｘｏｓ」アルゴリズムであることを特徴とする請求項６４に記載のシステム。
【請求項６６】
「ＪＭＳ」構成要素と、
前記「ＪＭＳ」構成要素と通信する複数のサーバと、
前記複数のサーバからホストサーバを選択するための分散型合意アルゴリズムを包含する、該複数のサーバにおけるリードサーバと、
「ＪＭＳ」メッセージストアを包含し、前記「ＪＭＳ」構成要素へのアクセスを前記複数のサーバのいずれにも提供するようになった、該複数のサーバにおけるホストサーバと、
を含むことを特徴とする、ネットワーク上の「ＪＭＳ」を管理するためのシステム。
【請求項６７】
前記複数のサーバは、クラスターを含むことを特徴とする請求項６６に記載のシステム。
【請求項６８】
「ＪＭＳ」構成要素と、
前記「ＪＭＳ」構成要素と通信する複数のサーバと、
前記複数のサーバ内に位置するハードウエアクラスターサーバを包含し、かつ該ハードウエアクラスターサーバの中からリードサーバを選択するためのアルゴリズムを包含するハードウエアクラスターと、
前記複数のサーバからホストサーバを選択するための分散型合意アルゴリズムを包含する、前記ハードウエアクラスターサーバにおけるリードサーバと、
「ＪＭＳ」メッセージストアを包含し、「ＪＭＳ」へのアクセスを前記複数のサーバのいずれにも提供するようになった、該複数のサーバにおけるホストサーバと、
を含むことを特徴とする、ネットワーク上の「ＪＭＳ」を管理するためのシステム。
【請求項６９】
前記ホストサーバは、前記ハードウエアクラスター内にあることを特徴とする請求項６８に記載のシステム。
【請求項７０】
各々が「ＪＭＳ」メッセージストアをホスティングすることができる複数のサーバと、
「ＪＭＳ」メッセージストアをホスティングするためのホストサーバを、前記複数のサーバの中から選択するための分散型合意アルゴリズムと、
ホストコンピュータが前記「ＪＭＳ」メッセージストアをホスティングしていることをネットワーク上のサーバに通知するための分配システムと、
を含むことを特徴とする、ネットワーク上の「ＪＭＳ」を管理するためのフレームワーク。
【請求項７１】
分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
特定の期間に亘って「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てる段階と、
前記ホストサーバが前記「ＪＭＳ」オブジェクトをホスティングしていることを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、「ＪＭＳ」オブジェクトをネットワーク上のサーバにリースする方法。
【請求項７２】
前記特定の期間が終了した状態で、前記「ＪＭＳ」オブジェクトを別の期間に亘って前記ホストサーバに割り当てる段階、
を更に含むことを特徴とする請求項７１に記載の方法。
【請求項７３】
前記特定の期間が前記ホストサーバ上で終了した状態で、前記「ＪＭＳ」オブジェクトを別の特定の期間に亘って新しいホストサーバに割り当てる段階、
を更に含むことを特徴とする請求項７２に記載の方法。
【請求項７４】
ハードウエアクラスター内の複数のハードウエアクラスターサーバに中からリードサーバを選択する段階と、
前記リードサーバ上の分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
特定の期間に亘って「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てる段階と、
前記ホストサーバが前記「ＪＭＳ」オブジェクトをホスティングしていることを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、「ＪＭＳ」オブジェクトをネットワーク上のサーバにリースする方法。
【請求項７５】
ハードウエアクラスター内の複数のハードウエアクラスターサーバの中からリードサーバを選択する段階と、
前記リードサーバ上の分散型合意アルゴリズムを使用して、複数のネットワークサーバの中からホストサーバを選択する段階と、
「ＪＭＳ」への唯一のアクセスを提供するために割り当てられた前記ホストサーバに「ＪＭＳ」オブジェクトを割り当てる段階と、
前記ホストサーバが前記「ＪＭＳ」オブジェクトをホスティングしていることを他のネットワークサーバに通知する段階と、
を含むことを特徴とする、ネットワーク上のオブジェクトの所有権を割り当てる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の請求
本出願は、本明細書に組み込まれる以下の出願に対する優先権を請求するものである。
２００１年９月６日出願のディーン・バーナード・ヤコブズ及びエリック・ハルパーンに付与された「厳密に一回のキャッシュフレームワーク」という名称の米国特許仮出願第６０／３１７，７１８号、
２００２年９月４日出願のディーン・バーナード・ヤコブズ及びエリック・ハルパーンに付与された「厳密に一回のキャッシュフレームワーク」という名称の米国特許出願、
２００１年９月６日出願のディーン・バーナード・ヤコブズ及びエリック・ハルパーンに付与された「厳密に一回のＪＭＳ通信」という名称の米国特許仮出願第６０／３１７，５６６号、及び
２００２年９月４日出願のディーン・バーナード・ヤコブズ及びエリック・ハルパーンに付与された「厳密に一回のＪＭＳ通信」という名称の米国特許出願。
著作権の通知
本特許文書の開示内容の一部は、著作権の保護を受ける材料を含む。著作権所有者は、特許開示に関する特許文書の何人による複製に関しても、それが特許商標事務所の特許ファイル又は記録にある場合には異議はないが、それ以外は全ての著作権を保有する。
相互参照例
以下の米国特許出願は、相互参照されて本明細書において引用により組み込まれる。
２００１年７月１６日に出願のディーン・バーナード・ヤコブズ、リト・クレイマー、及びアナンサン・バラ・スリニバサンに付与された「データ複製プロトコル」という名称の米国特許出願号第６０／３０５，９８６号。
本発明は、オブジェクトをネットワーククラスター内のサーバ間に分配するための技術に関する。
【背景技術】
【０００２】
分散型コンピュータシステムにおいては、いくつかのサーバ及び／又はネットワーキングノードが協働する必要がある場合が多い。マシンが単一のエンティティとして機能することができるようにマシン間で共有すべきネットワーキング情報が通常存在するので、これらのサーバ及びノードは調整されるべきである。マシン調整の一般的な手法は、リソース及び効率に関して非常に経費が掛かる可能性がある。
【０００３】
一般に、ノード間で伝達されるいくつかのメッセージがあると考えられるので、ノードが同意するように何らかの同期化が必要である。しかし、この同期化要件は、クラスター化されたネットワーキング環境では望ましくないかもしれない。多くのクラスター化された環境においては、このようないかなる同期化要件を課すことも単に回避される。しかし、同意が必要な用途も存在する。
【０００４】
同意が必要とされる１つの場合においては、クラスターが独占的なアクセスを望むことがある装置が存在することができる。１つのこのような装置は、ファイルシステム上のトランザクションログである。トランザクションが進行中の時は常に、永続的な方法で保存する必要があるいくつかのオブジェクトがあり、それによって、故障が起こった場合にその永続的保存オブジェクトを回復することができる。
【０００５】
１ヵ所に保存する必要があるこれらのオブジェクトについては、通常、そのクラスター又はドメイン内の各サーバ上で作動するトランザクションモニタがあり、それは、次にローカルファイルシステムを使用してそのオブジェクトにアクセスする。各サーバは、永続性に関する問題がほとんどないか又は全くないように独自のトランザクションマネージャを有することができる。従って、各サーバがトランザクションマネージャを有するので調整の必要もない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
例えば、各々がトランザクションマネージャを有する３つのサーバを含むクラスターが存在することができる。これらのサーバの１つは、クラスターがそのサーバを利用することができなくなるような故障又は他の問題が発生する可能性がある。故障したサーバは、特定のトランザクションログにアクセス可能な唯一のサーバであるために、その特定のログ内の全てのトランザクションは、クラスターがそのサーバを利用することができるようになるまで再び回復することはできない。サーバに関する問題は、解決するのにかなりの時間が掛かる可能性があるために、ログの回復は、難しいか又は少なくとも非効率的なものになる可能性がある。重大なサーバ上の問題には、サーバ上のマザーボードからの短絡又は電源の消耗の発生などを挙げることができる。
【課題を解決するための手段】
【０００７】
本発明は、ネットワーク上又はクラスター内のサーバに記憶することができるような、オブジェクトを管理するためのシステムを含む。本システムは、クラスターの内側又は外側に位置することができる、ファイルシステム又は「Ｊａｖａ（登録商標）メッセージサービス」構成要素のようなデータソース、アプリケーション、又はサービスを含む。本システムは、高速ネットワーク接続などを通じてファイルシステム又はアプリケーションと通信するいくつかのサーバを含むことができる。
【０００８】
本システムは、他のサーバが同意することができるようなリードサーバ(lead server)を含む。リードサーバは、ハードウエアクラスター又はソフトウエアクラスター内に含めることができる。本システムは、ハードウエアクラスターマシンに内蔵されたアルゴリズムのような、サーバの中からリードサーバを選択するためのアルゴリズムを含むことができる。リードサーバは、それ自体、「Ｐａｘｏｓ」アルゴリズムのようなホストサーバを選択するための分散型合意アルゴリズムを含むことになる。リードサーバを選択するのに使用されるアルゴリズムは、ホストサーバを選択するのに使用されるアルゴリズムと異なるか又は同じものとすることができる。
【０００９】
ホストサーバは、ローカルキャッシュに記憶することができるのような項目又はオブジェクトのコピーを含むことができる。ホストサーバは、ネットワーク上又はクラスター内の任意のサーバへローカルコピーアクセスを提供することができる。ホストサーバはまた、ファイルシステムに記憶されたオブジェクトに対して唯一のアクセスポイント、又は、アプリケーション又はサービスに対して唯一のアクセスポイントを与えることができる。また、ホストサーバがキャッシュに入れるか、ホスティングするか、又は所有する項目に対して行われた任意の変更は、ファイルシステム、アプリケーション、又はサービス内で更新することができる。
【００１０】
ホストサーバがオブジェクトをホスティングすることができなくなった場合、分散型合意アルゴリズムを使用して新しいホストを選択することができる。その後、新しいホストは、ファイルシステム又はサービスからそのオブジェクトの必要なデータを引き抜くことができる。新しいサーバがそのオブジェクトをホスティングすることを、クラスター内の他のサーバに通知することができる。サーバへの通知は、２地点間接続又はマルチキャスティングなどによる任意の適切な手段によって行うことができる。
【発明を実施するための最良の形態】
【００１１】
本発明によるシステムは、データオブジェクトを所有するサーバがサーバクラスターに対して利用不能になった時のような利用可能性に関する問題の解決策を提供することができる。１つのこのような解決策は、データオブジェクトの所有権を引き継ぐためのクラスター内の別のサーバを考慮するものである。しかし、両方のサーバ上にデータオブジェクトを複製する必要なくデータオブジェクトを両方のサーバにアクセス可能にする際に問題が生じる。
【００１２】
ファイルシステム、データストア、又はデータベース（全てを総称して「ファイルシステム」という）がデータを永続的に記憶するためにクラスターによって使用され、また、ファイルシステムが１つよりも多いサーバからアクセス可能である場合、第２のサーバは、オブジェクトを所有する第１のサーバが問題に遭遇した場合に自動的にデータオブジェクトアクセスのタスクを引き継ぐことができる。代替的に、その項目の所有権を取るようにサーバに命令するためにクラスター又はクラスター内のサーバによって利用されるアルゴリズムが存在することが可能である。しかし、別の根本的な問題には、どのサーバが現在リソース又はオブジェクトを所有するかをクラスターに同意させること、又は、サーバ間の「合意」を達成することが絡んでくる。
【００１３】
図１は、トランザクションログ１１４などのオブジェクトがファイルシステム１１２に記憶される、本発明によるクラスターシステム１００の一例を示す。ファイルシステム１１２には、クラスター１１０内の全てのサーバ１０６、１１６、及び１１８がアクセス可能であるが、一度にこれらのサーバの１つだけがログ１１４にアクセス可能である。クラスター１１０内のサーバ間のホストサーバ１０６は、ログ１１４のコピー１０８を記憶するか、又は、ファイルシステム１１２内でログ１１４に対する全てのアクセスを提供するなどにより、ログ１１４を「所有する」又は「ホスティングする」ことになる。クラスター１１０内の他のいずれかのサーバ１１６及び１１８は、ログのコピー１０８にアクセスすることができ、及び／又は、ホストサーバ１０６を通じてログ１１４にアクセス可能である。例えば、クライアント又はブラウザ１０２は、クラスター１１０内のサーバ１１６に方向付けられたネットワーク１０４に対する要求を行うことができる。そのサーバは、ネットワーク１０４を通じてホストサーバ１０６上のトランザクションログのコピー１０８にアクセス可能である。トランザクションログを更新する必要がある場合は、ファイルシステム１１２上のオリジナルログ１１４と共にコピー１０８を更新することができる。
【００１４】
サーバは、例えばデータオブジェクトのリポジトリーとして機能する時、データオブジェクトのコピーをローカルキャッシュに記憶してそのコピーをクラスター内の他のサーバに利用可能にするか、又は、クラスター内の全ての他のサーバがホストサーバを通じてオブジェクトにアクセスする必要があるように、ファイルシステム、サービス、又はアプリケーション内のオブジェクトへの直接アクセスを有する唯一のサーバになるなどにより、そのオブジェクトを「所有する」又は「ホスティングする」ことができる。これによって、サーバクラスター内にオブジェクトが確実に「厳密に一回」存在する。
【００１５】
図３は、オブジェクトのホスティングを確立するために使用することができる１つの処理３００を示す。ホストサーバは、「Ｐａｘｏｓ」アルゴリズムのような分散型合意アルゴリズム３０２を使用して選択することができる。このようなアルゴリズムは、クラスター内のサーバが、クラスターサーバ間でオブジェクトを分配する方法に関して全体的に同意するか又は合意に至るべきであるから、「分散型合意」アルゴリズムと呼ばれる。
【００１６】
ホスティングされているオブジェクトが、例えばホスティングサーバ上でキャッシュに入れられる場合は、データオブジェクトのコピーをファイルシステムからホストサーバに引き抜いて、ローカルキャッシュ３０４内のオブジェクトとして記憶することができる。その後、ネットワーク上又は適切なクラスター内の他のサーバは、オブジェクトのローカルコピーがホスティングサーバ上に存在すること、及び、そのローカルコピーが今後のネットワーク要求３０６を処理する際に使用されるべきであることをホストサーバなどによって通知される。
【００１７】
分散型合意アルゴリズムの一例である「Ｐａｘｏｓ」アルゴリズムにおいては、ネットワークサーバは、ホストサーバ又はリードサーバとして機能するサーバを選択することができ、ネットワークサーバが一連の「合意ラウンド」をリードする。これらのラウンドの各々においては、新しいホストサーバ又はリードサーバが提案される。ラウンドは、提案されたサーバの１つがサーバの大部分又は定足数によって受け入れられるまで続行される。どのサーバもラウンドを初期化することによってホストサーバ又はリードサーバを提案することができるが、システムは、リードサーバが常にホストサーバ選択のためのラウンドを初期化するように構成することができる。異なる選択のためのラウンドを同時に実行することができる。従って、ラウンド選択は、ラウンド番号、又は１つの値がラウンドを示し、１つの値がそのラウンドをリードするサーバを示すような値の対によって識別することができる。
【００１８】
１つのこのようなラウンドの手順は以下の通りであるが、他の手順及び／又は手法がいくつかの状況又は用途では適切な場合がある。第一に、リーダーが「回収」メッセージをクラスター内の他のサーバに送ることによってラウンドを開始することができる。回収メッセージにより、クラスター内のサーバから、サーバが参加した以前に為されたラウンドに関する情報が回収される。また、この特定の選択処理について以前の合意ラウンドがあった場合は、回収メッセージは、サーバに以前のラウンドから選択を行わないように通知する。リーダーは、クラスターサーバの少なくとも半分から回答を収集すると、例えば、次のラウンドで提案すべき値を判断し、この提案を「開始」メッセージとしてクラスターサーバに送ることができる。リーダーがこの手法で提案すべき値を選択するためには、サーバから初期値情報を受信する必要がある。
【００１９】
サーバは、リーダーから開始メッセージを受信すると、「受理」メッセージを送ることによって回答し、サーバが提案されたホスト／リードサーバを受理することを示すことができる。リーダーがサーバの大部分又は定足数から受理メッセージを受信した場合、リーダーは、出力値をラウンドで提案された値に設定する。リーダーが所定の期間内に大部分又は定足数による受理（合意）を受信しなかった場合、リーダーは、新しいラウンドを開始することができる。リーダーが合意を受信した場合、リーダーは、サーバが選択されたサーバに委託すべきであることをクラスターサーバ又はネットワークサーバに通知することができる。この通知は、２地点間接続又はマルチキャスティングなどによる任意の適切な同報通信技術によってネットワークサーバに同報通信することができる。
【００２０】
合意手法の同意条件は、以前のラウンドに関する情報を利用する選択を提案することによって確実にすることができる。この情報は、任意の２つのラウンドについて両方のラウンドに参加したサーバが少なくとも１つあるように、ネットワークサーバの少なくとも大部分からのものであることが必要になる可能性がある。
【００２１】
リーダー（ｌｅａｄｅｒ）は、各サーバにそのサーバが値を受理した最新ラウンドの番号を尋ねることにより、また、恐らくは受理された値を求めることにより、新しいラウンドの値を選択することができる。リーダーがこの値をサーバの大部分又は定足数から取得すると、回答間の最新ラウンドの値に等しい値を新しいラウンドについて選択することができる。また、リーダーは、以前のラウンドに関与したサーバがない場合は初期値を選択することができる。リーダーが、最終受理ラウンドが例えばｘであって現在のラウンドがｙであるという回答を受信した場合、サーバは、一貫性を維持するために、ｘとｙの間のどのラウンドも受理されないであろうということを暗示することができる。
【００２２】
ラウンドリーダー及びネットワークサーバ間のサンプル対話は、以下のメッセージを伴う。
【００２３】
（１）「回収」−新しいラウンド「ｒ」が開始されているというメッセージがサーバに送られる。このメッセージは、ｍ＝（“Ｃｏｌｌｅｃｔ”、ｒ）という形を取ることができる。
【００２４】
（２）「最終」−受理された最終ラウンド「ａ」及びそのラウンドの値「ｖ」を与えるメッセージがネットワークサーバからリーダーに送られる。このメッセージは、ｍ＝（“Ｌａｓｔ”ｒ、ａ、ｖ）の形を取ることができる。
【００２５】
（３）「開始」−ラウンドｒの値を知らせるメッセージがサーバに送られる。このメッセージは、ｍ＝（“Ｂｅｇｉｎ”、ｒ、ｖ）の形を取ることができる。
【００２６】
（４）「受理」−ラウンドｒの値を受理するメッセージがサーバからリーダーに送られる。このメッセージは、ｍ＝（“Ａｃｃｅｐｔ”、ｒ）の形を取ることができる。
【００２７】
（５）「成功」−ラウンドｒの値ｖの選択を知らせるメッセージがサーバに送られる。このメッセージは、ｍ＝（“Ｓｅｃｃｅｓｓ”、ｒ、ｖ）の形を取ることができる。
【００２８】
（６）「確認」−サーバがラウンドｒに関する決定を受信したことを確認するメッセージが、サーバからリーダーに送られる。このメッセージは、ｍ＝（“Ａｃｋ”、ｒ）の形を取ることができる。
【００２９】
ハードウエアクラスター又はソフトウエアクラスターの内側又は外側のいずれかに位置する、サーバから分離されたファイルシステムが存在することができる。このファイルシステムは、トランザクションログを第１のディスクに記憶してファイルシステム内の第２のディスクに複製するなどにより、トランザクションログを永続的に記憶することができる。第１のディスクがクラッシュした場合、ファイルシステムは、クラスター及び／又はサーバからそのクラッシュを隠し、第２のディスクからログ情報を取得することができる。また、ファイルシステムは、第２のディスクのバックアップの役目を果たすことができる第３のディスクにそのログを複製することを選択することができる。
【００３０】
クラスター内のサーバの観点からは、ファイルシステムは、単一のリソースとすることができる。一実施形態においては、サーバは、単一のサーバがいつの時点でもファイルシステムを所有することだけに注意するであろう。
【００３１】
本発明によるシステムの別の例は、サーバクラスター内のキャッシュを伴う。単一のキャッシュにクラスター内のサーバに対してデータオブジェクトを表すようにすることが、ネットワーク性能上の理由などからクラスター化された環境では望ましいものであろう。クラスター内のサーバは、継続的に永続的記憶装置に戻る必要なくキャッシュにアクセス可能なので、単一のキャッシュに項目を保持することが有利になる可能性がある。データベース又はファイルシステムへのヒットが相対的に時間集約的になる可能性があるので、メモリ内の既にある項目を引き抜くことができると、このようなシステムの効率を大幅に上げることができる。
【００３２】
しかし、単一のキャッシュに関する１つの問題は、メモリに記憶されたオブジェクトをファイルシステムのディスク上に記憶されたものと確実に同じものにする必要があり得ることである。このような一貫性を必要とする１つの理由は、キャッシュに入れられた項目上で行われる任意の演算又は計算で確実に正しい結果が出るようにするためである。別の理由は、キャッシュがクラッシュしたり、又はそれ以外に痛んだり又は利用不能になった場合に、キャッシュをファイルシステムから復元することが必要になる可能性があることである。
【００３３】
クラスター内でこの種のキャッシュを処理する主たる方法は、少なくとも２つあるとすることができるが、特定の用途については、他の方法も少なくとも同様に良好に機能することができる。１つの方法は、複数の場所でキャッシュを複製することである。この手法は、キャッシュに入れられる項目に変更があった場合、キャッシュを複製する全てのサーバがその変更に同意するか又は少なくともその変更を知っていることが必要であるから、問題になる可能性がある。これは、結果的にリソース及び性能の点で非常に経費が掛かるものになる可能性がある。
【００３４】
本発明による代替手法は、クラスター内のキャッシュの所有者となるように特定のサーバを割り当て、そのキャッシュへの全てのアクセスは、その特定のサーバを通過する。クラスター内の任意のサーバが、このようなキャッシュをホスティングすることができる。各サーバは、１つ又はいくつかのキャッシュをホスティングすることができるか、又は、全くキャッシュをホスティングすることができない。キャッシュは、単一のサーバ上でホスティングされるか、又は、クラスター内の一部又は全てのサーバ間に分散することができる。クラスター自体は、ハードウエアクラスターか、又はソフトウエアアプリケーションによって所定の「ソフトウエア」クラスター内にあるように指定されたサーバのグループのような任意の適切なクラスターとすることができる。
【００３５】
トランザクションログ及び／又はキャッシュであるいずれかの例を、システム上のどこかにあるような種類のオブジェクトとして考えることが可能であろう。任意のこのようなオブジェクトが確実にクラスター内で一回のみ存在するようにし、そのオブジェクトを常に利用可能なものにすることが望ましいであろう。また、オブジェクトをホスティングするサーバが故障した場合は、確実にオブジェクトを別のサーバ上で復元させることができ、確実にそのオブジェクトがクラスターに利用可能になることも望ましいであろう。
【００３６】
回復の１つの方法４００を図４に示す。本方法においては、サーバがまだネットワークに対して利用可能であるか否かなど、ホストサーバが引き続きオブジェクト４０２をホスティングすることができるか否かの判断が行われる。ホスティングすることができない場合は、分散型合意アルゴリズムを使用して新しいホストが選択される。この選択は、オリジナルホスト４０４を選択するために使用された方法に従って行うことができる。データオブジェクトのコピーは、ファイルシステムから新しいホストに引き抜かれると、ローカルキャッシュ４０６に記憶することができる。新しいホストサーバがオブジェクトのコピーを含むこと、及び、任意の今後のネットワーク要求４０８を処理する際にはそのローカルキャッシュを使用すべきであることが、ネットワーク上又は適切なクラスター内の他のサーバに通知される。
【００３７】
本発明によるシステム及び方法においては、クラスター内の厳密に１つの場所に存在するオブジェクトを定めることができ、確実にそれらのオブジェクトが常に存在するようにすることができる。サーバの観点からは、トランザクションログなどのオブジェクトがファイルシステムなどにより鏡像化又は複製されるか否かは問題ではないであろう。サーバの観点からは、クラスター内の任意のサーバによってアクセス可能な永続的記憶装置が常に１つある。本システムは、定期的にオブジェクトの存在を検査することができ、又は、ネットワーク上又はクラスター内の何らかのマシン上での存在を確保するためにオブジェクトが頻繁に再割り当てされることになるように、短期間に亘ってオブジェクトの所有権を割り当ててもよい。
【００３８】
ハードウエアクラスターは、各々が複数のサーバを実行することができるマシンの列を含むことができる。また、各マシンの後にファイルシステムが存在することができる。ハードウエアクラスター内のサーバは、より素早く意思決定を行ってハードウエアクラスター内のサーバ欠陥を処理することができるように、一般的に配線されている。ハードウエアクラスターは、サーバを含むマシンの物理的ハードウエアに大きさを限定することができる。ハードウエアクラスター内のサーバは、ソフトウエアクラスター内のサーバとして使用することができ、また、マシン上の個々のサーバがネットワークに対して利用可能であるから、ネットワークサーバも含むことができる。
【００３９】
これらのマシンの１つに対する共有ファイルシステムは、高速ネットワークなどを通じて、クラスター内の全てのサーバに利用可能とすることができる。ファイルシステムはまた、冗長であることができる。一実施形態においては、この冗長は、ファイルシステム用の複数のデータディスクを使用して行われる。このような冗長の実行においては、オブジェクトがファイルシステムに書き込まれる時はいつでも、複数のディスクに亘ってオブジェクトを複製することができる。このようなファイルシステムは、「ブラックボックス」として見た時、ディスクのいかなる故障にも耐え、依然としてクラスター内の任意のサーバからのデータ項目のアクセスを提供することができる。
【００４０】
「厳密に一回」のフレームワークという本発明によるフレームワークは、メモリに保持されたこれらのオブジェクトが、常に信頼性のある永続的記憶機構によって支援されると仮定して構築することができる。例えば、トランザクションログを表すオブジェクトが存在することができる。オブジェクトが呼び出された時、対応するトランザクションログを更新することができる。これには、データベースから読み取られるか、又はデータベースに書き込まれる呼び出しを挙げることができる。そのトランザクションログを表すオブジェクトは、ホストサーバのようなクラスター内のサーバの１つに存在することができる。厳密に一回のフレームワークは、クラスター内のサーバの少なくとも１つが立ち上がって実行されている限り、別のサーバが故障した場合に確実にサーバがログの所有権を引き継ぐことができるようにすることができる。
【００４１】
キャッシュを表す１つのオブジェクトが存在してもよい。また、キャッシュが更新される度に、更新内容を永続的記憶装置に再度書き込むことができる。サーバの１つがデータ項目を使用する必要がある時は、そのサーバは、このオブジェクトを通過する必要がある可能性がある。キャッシュを表すオブジェクトをホスティングするサーバが故障した場合、そのオブジェクトを別のサーバで復活させることができる。復活したオブジェクトは、全ての必要な情報を永続的記憶装置から引き抜くことができる。
【００４２】
厳密に一回のフレームワークは、クラスターによる使用のためのメモリバッファとして機能することができる。フレームワークは、信頼性のある永続的記憶装置によって支援された本システム内のデータを表す単一のキャッシュを提供するることができる。データがキャッシュから読み取られる時は、永続的記憶装置にアクセスする必要なく読取りを行うことができる。しかし、更新内容がキャッシュに書き込まれる時は、故障の場合に本システムが回復することができるように、永続的記憶装置を通じて再度書き込む必要がある可能性がある。
【００４３】
厳密に一回のフレームワークの１つの重要な態様は、この手法が抽象化される方法に関連し、これは、用途及び／又は実施に依存して変わる可能性がある。「厳密に一回のオブジェクト」と呼ぶことができるような新しい種類の分散オブジェクトが作成される。厳密に一回のオブジェクトは、例えば、ファイルシステム内のデータ項目のローカルにキャッシュに入れられたコピー、又はクラスター内のサーバのためのこのようなデータ項目の唯一のアクセスポイントとすることができる。この抽象化を実行する根底にある技術も重要になる可能性がある。
【００４４】
本発明のシステムは、上述の「Ｐａｘｏｓ」アルゴリズムを使用する方法のような、分散型合意に有用ないくつかの方法のいずれかを利用することができる。複数のノード及び／又は分散型ノードがオブジェクトの１つの値に同意するための効率的な方法を提供するようなアルゴリズムを選択することができる。このアルゴリズムは、たとえノードが故障し、及び／又は、同意処理中に戻ったとしても機能するように選択することができる。
【００４５】
ネットワークのクラスター化の一般的な手法は、全てのメッセージが所期の受信者に配信されるか、又は少なくとも全ての所期の機能しているサーバに配信されることが保証される信頼性のある同報通信を利用する。信頼性のある同報通信では受信者が次のメッセージ又は受信者に移る前にメッセージに応答する必要があるので、この手法は、システムを並列処理することを非常に難しいものにする可能性がある。マルチキャスティングを利用する分散型アルゴリズムは、マルチキャスティングは全てのサーバがメッセージを受信することを保証しないので、保証数を低減する場合がある。しかし、マルチキャスティングは、各サーバからの応答を待たずに単一メッセージを同時に全てのクラスターサーバに対してマルチキャストすることができるので、システムが並列処理を行うことができるようにこの手法を簡素化することは確かである。マルチキャストメッセージを受信しないサーバは、後でその情報をリードサーバか又は別のクラスターサーバ又はネットワークサーバから引き抜くことができる。本明細書で使用される時のネットワークサーバは、ハードウエアクラスター内、ソフトウエアクラスター内、又はいずれかのクラスターの外側であるかを問わず、ネットワーク上の任意のサーバを意味することができる。
【００４６】
厳密に一回のアーキテクチャの重要な態様は、合意上の困難が低減されることである。本発明によれば、分散型合意実施の性能は、分散型合意アルゴリズムと共にマルチキャストメッセージングを使用することによって向上させることができる。この手法は、全てのサーバが同意する上で必要とされるメッセージ交換及び／又はネットワークトラヒックの最少化を考慮することができる。
【００４７】
マルチキャスティング時には、いくつかの手法の１つを取ることができる。「一相分散」と呼ぶことができる第１の手法においては、リードサーバは、「Ｐａｘｏｓ」アルゴリズムのラウンドで使用するか、又はオブジェクトのための新しいホストが選択されたことを示すために使用することができるように、ネットワーク上の全ての他のサーバに対してメッセージをマルチキャストすることができる。この手法においては、リードサーバは、ネットワーク上で利用可能な任意のサーバに転送することができる１つのメッセージを送る必要があるだけである。サーバが一時的にネットワークから外される場合、サーバは、ネットワーク上に戻った後で新しいホストの識別を要求することができる。
【００４８】
「二相分散」と呼ぶことができる別のマルチキャスト手法を使用すると、リードサーバは、適切なアルゴリズムを使用してホストサーバを予め選択することができる。しかし、オブジェクトをそのホストに割り当てる前に、リードサーバは、サーバがその新しいホストサーバの選択に同意しているか否かを判断するために、クラスター内の他の全てのサーバに連絡する可能性がある。リードサーバは、２地点間接続によって各サーバに連絡することができ、又は、マルチキャストされた要求を配信した後に各サーバが回答するのを待つことができる。サーバがそのホストの選択に同意しなかった場合、リードサーバは、アルゴリズムを使用して新しいホストを予め選択することができる。リードサーバは、次に、別のラウンドで新たに予め選択されたホストのアイデンティティと共に別のマルチキャスト要求を配信するであろう。
【００４９】
全てのサーバが予め選択されたホストに同意した場合、リードサーバは、そのオブジェクトをホストサーバに割り当てることができる。その後、リードサーバは、コミットメッセージをマルチキャストし、新しい変更が発効したのでサーバはサーバの情報を相応に更新すべきであることをサーバに知らせることができる。
【００５０】
厳密に一回のフレームワークはまた、「リース」機構を利用することができる。このような機構を使用する際は、分散型合意を使用するなどにより、クラスターサーバにリードサーバについて同意させるためのアルゴリズムを使用することができる。そのリードサーバは、選択されるとクラスター内の様々なサーバへの厳密に一回のオブジェクトの割り当てを担当することができる。システムは、既存のリードサーバが故障した場合にクラスターサーバが常に新しいリーダーに同意することになるように設定することができる。
【００５１】
リードサーバがアクティブの間は、リードサーバは、システム内に存在すべき全ての厳密に一回のオブジェクトを知ることができる。リードサーバは、どのサーバが各オブジェクトをホスティングすべきかを決めることができ、その後、そのオブジェクトを選択されたサーバに「リース」することができる。オブジェクトがサーバにリースされた時、そのサーバは、リース期間継続中のようなある一定期間に亘ってそのオブジェクトを所有するか又はホスティングすることができる。リードサーバは、これらのリースを定期的に更新するように構成することができる。この手法は、サーバが故障したり、又は何らかの方法で接続を断たれたり、又はそれ以外にクラスター内で適正に作動していない場合、サーバがそのリースを更新されないことを保証にする方法を提供することができる。
【００５２】
故障中の分散型システムに関する問題の大部分は、故障したサーバと単に応答していないサーバとの違いを判断することが難しいということである。ネットワークから何らかの理由で遮断されたいかなるサーバも、もはやオブジェクトをホスティングすることはできない。そのサーバは、それがクラスターには利用可能でなくても、リース期間の後でいかなるオブジェクトのホスティングも辞めることができることを依然として知っていることになる。そのサーバは、クラスターに利用可能ではないので、そのリースは更新されないことになる。
【００５３】
リードサーバはまた、ある一定の時間内にホストサーバに到達することができない場合、ホストサーバがオブジェクトの所有権を放棄することになることを知っている。リース期間は、数秒間のような任意の適切な時間とすることができる。リース期間は、クラスター内の全てのサーバについて同じものとすることができ、又はオブジェクト間で変えることもできる。
【００５４】
厳密に一回のアーキテクチャを使用するシステムはまた、これを緊密にすることもできる。オペレーティングシステムは、多くの場合、ハードウエアのより近くに構築されてより多くの制御を与えることができる特殊なマシンを提供する。しかし、この手法を用いる１つの問題は、利用可能なハードウエアによって限定される可能性があるということである。例えば、サーバのハードウエアクラスターが有することができるサーバ数は、約１６程度である。これらのシステムでは何らかの緊密なハードウエア結合が要求されるので、クラスターに含むことができるサーバ数に対して制限がある可能性がある。
【００５５】
一方、厳密に一回のフレームワークは、これら専用のハードウエアクラスターが処理することができるよりも遥かに大きなクラスターを処理することができるであろう。フレームワークは、専用クラスターの１つから利用可能であるサービス品質の何らかの活用を可能にし、それによってより大きなクラスターを考慮することができる。サービス品質の違いは、例えば、メッセージが２地点間接続などにより確実なプロトコルによって送られるか、又はマルチキャスティングのような信頼性は劣るがリソースに優しいプロトコルによって送られるかを含むであろう。厳密に一回のフレームワークを使用する利点は、ユーザがシステムを特定用途の必要性に適合させることができるように故障許容性と拡張性の均衡を取ることができる点である。
【００５６】
ハードウエアクラスターマシンのような従来技術によるシステムは、第２のマシンによって支援された単一マシン（であるとクラスターには見えるもの）を有することにより、利用可能性の高い解決策を試すことができる。第１のマシンが故障した場合、引継ぎを行う「相棒」がおり、第１のマシン上で実行されていたいかなるソフトウエアも第２のマシンに持ってこられる。
【００５７】
本発明による厳密に一回のフレームワークは、リーダーの故障に対する処理をソフトウエアクラスター内での処理よりも迅速にすることができるように、リードサーバをこれらのハードウエアクラスターの１つにあるサーバに割り当てることができる。しかし、このリードサーバは、サーバがハードウエアクラスター内か又はソフトウエアクラスター内かを問わず、これらのサーバにリースを分配することができる。この構成は、より迅速なリードサーバの回復をもたらし、同時にハードウエアクラスターよりも大きいが依然としてハードウエアクラスターを含むソフトウエアクラスターを考慮することができる。
【００５８】
１つのこのようなシステム２００を図２に示す。ハードウエアクラスター２１８は、複数のサーバ２２０、２２２、及び２２４を包含する単一マシンを含むことができる。効率を向上させることができるように、ハードウエアクラスターを使用してリードサーバ２２０をそのマシン上のサーバの中から選択することができる。リードサーバ２２０が選択された状態で、このリードサーバは、ソフトウエアクラスター２１０の内側又は外側に位置することができる、ファイルシステム２１２内のオブジェクト２１４に対するホスト２０６を選択することができる。ファイルシステム２１２自体は、永続性をもたらすことができるように、オブジェクト２１４をファイルシステムの別のディスク上の第２のオブジェクト２１６に複製することができる。オブジェクト２１４は、ホスト２０６上でキャッシュに入れられたオブジェクトのコピー２０８と共に、新しいホスト２０６によってファイルシステム２１２から引き抜くことができる。サーバ２０６、２１６、及び２２０のようなサーバにブラウザ又はクライアント２０２からネットワーク２０４を通じて要求が受信された時、そのサーバは、サーバがオブジェクト２０８のキャッシュに入れられたコピーへのアクセスを必要とする場合、ホストサーバ２０６に連絡することを知っていることになる。
【００５９】
このようなシステム５００を使用する１つの方法を図５に示す。ハードウエアクラスター５０２のアルゴリズムを使用してリードサーバを選択する。このアルゴリズムは、例えば、ハードウエアクラスターマシンの専用アルゴリズムとすることができ、又は、ハードウエアクラスターサーバのみに亘る合意を必要とする分散型合意アルゴリズムとしてもよい。その後、リードサーバ５０４と共に「Ｐａｘｏｓ」アルゴリズムのような分散型合意アルゴリズムを使用してホストサーバを予め選択することができる。その後、ハードウエアクラスター５０６を包含するソフトウエアクラスター内の他のサーバに対して、予め選択されたホストのアイデンティティをマルチキャストすることができる。リードサーバは、現在作動中でクラスター５０８に接続されている各サーバから承認又は否認を受信することができる。サーバが予め選択されたホストサーバを承認した場合、予め選択されたホストが今や項目をホスティングすることをサーバに知らせるコミットメッセージがクラスターサーバにマルチキャストされ、そうでなくサーバが承認しなかった場合は、新しいホストが予め選択されて処理が再び始まる（５１０）。
【００６０】
厳密に一回のフレームワークは、例えばトランザクションログ又はキャッシュを処理するために使用することができる。また、このようなフレームワークを使用して、例えば、管理サーバを厳密に一回のオブジェクトとして定め、管理サーバが決して故障しないようにこの管理サーバをリースすることができる。
【００６１】
図６は、オブジェクト６０８が「Ｊａｖａ（登録商標）メッセージサービス（ＪＭＳ）」６１２のためのメッセージストアとして機能する、本発明によるクラスターシステム６００の別の例を示す。クラスター６１０内の全てのサーバ６０６、６１４、及び６１６は、「ＪＭＳ」を使用することができるが、それらは、ネットワーク６０４を通じてメッセージをメッセージストア６０８に送り、メッセージストア６０８からいかなるメッセージも収集する必要がある。クラスター６１０内のサーバのホストサーバ６０６は、メッセージストア６０８を「所有する」又は「ホスティングする」ことになる。クライアント又はブラウザ６０２は、クラスター６１０内のサーバ６１６に向けられた要求をネットワーク６０４に出すことができる。そのサーバ６１６は、ネットワーク６０４を通じてホストサーバ６０６上のメッセージストア６０８にメッセージを送ることによってのみ「ＪＭＳ」にアクセスすることができる。
【００６２】
図７は、本発明の構成要素に対して又は本発明の方法を実施するために使用することができるコンピュータシステムのブロック図７００を示す。図７のコンピュータシステムは、プロセッサユニット７０４及びメインメモリ７０２を含む。プロセッサユニット７０４は、単一のマイクロプロセッサを含むことができ、又は、コンピュータシステムを多重プロセッサシステムとして構成するための複数のマイクロプロセッサを含むことができる。メインメモリ７０２は、部分的に、プロセッサユニット７０４による実行のための命令及びデータを記憶する。本発明が全体的又は部分的にソフトウエアに実装された場合、メインメモリ７０２は、作動時に実行可能なコードを記憶することができる。メインメモリ７０２は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、高速キャッシュメモリ、及び、当業技術で公知の他の種類のメモリの列を含むことができる。
【００６３】
図７のシステムは、更に、大容量記憶装置７０６、周辺装置７０８、ユーザ入力装置７１２、携帯記憶媒体ドライブ７１４、グラフィックサブシステム７１８、及び出力ディスプレイ７１６を含む。簡素化のために、図７に示す構成要素は、単一バスを通じて接続されるものとして示されている。しかし、当業者には明らかであろうが、構成要素は、１つ又はそれ以上のデータ搬送手段を通じて接続することができる。例えば、プロセッサユニット７０４及びメインメモリ７０２は、ローカルマイクロプロセッサバスを通じて接続することができ、大容量記憶装置７０６、周辺装置７０８、携帯記憶媒体ドライブ７１４、及びグラフィックサブシステム７１８は、１つ又はそれ以上の入力／出力（Ｉ／Ｏ）バスを通じて接続することができる。磁気ディスクドライブ、光学ディスクドライブ、及び、当業技術で公知の他のドライブを用いて実施することができる大容量記憶装置７０６は、プロセッサユニット７０４によって使用されるデータ及び命令を記憶するための不揮発性記憶装置である。一実施形態においては、大容量記憶装置７０６は、本発明を実施するためのソフトウエアを、メインメモリ７０２に読み込む目的で記憶する。
【００６４】
携帯記憶媒体ドライブ７１４は、フレキシブルディスクのような携帯不揮発性記憶媒体と共に作動し、図７のコンピュータシステムに対してデータ及びコードを入力及び出力する。一実施形態においては、本発明を実行するためのシステムソフトウエアは、このような携帯媒体上に記憶され、携帯記憶媒体ドライブ７１４を通じてコンピュータシステムに入力される。周辺装置７０８は、付加的な機能性をコンピュータシステムに追加するための入力／出力（Ｉ／Ｏ）インタフェースのような任意の種類のコンピュータサポート装置を含むことができる。例えば、周辺装置７０８は、コンピュータシステムをネットワークに接続するためのネットワークインタフェース、及び、モデム、ルータ、又は当業技術で公知の他のハードウエアのような他のネットワーキングハードウエアを含むことができる。
【００６５】
ユーザ入力装置７１２は、ユーザインタフェースの一部分を形成する。ユーザ入力装置７１２は、英数字及び他の情報を入力するための英数字キーパッド、又は、マウス、トラックボール、スタイラス、又はカーソル方向キーのようなポインティング装置を含むことができる。テキスト及びグラフィック情報を表示するために、図７のコンピュータシステムは、グラフィックサブシステム７１８及び出力ディスプレイ７１６を含む。出力ディスプレイ７１６は、ブラウン管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、又は他の適切な表示装置を含むことができる。グラフィックサブシステム７１８は、テキスト及びグラフィック情報を受信し、ディスプレイ７１６に出力するためにその情報を処理する。更に、図７のシステムは出力装置７１０を含む。適切な出力装置の例には、スピーカ、プリンタ、ネットワークインタフェース、モニタ、及び当業技術で公知の他の出力装置が含まれる。
【００６６】
図７のコンピュータシステムに含まれる構成要素は、本発明のいくつかの実施形態と共に使用するのに適切なコンピュータシステムで一般的に見られるものであり、当業技術で公知のコンピュータ構成要素の広い部類を表すものである。すなわち、図７のコンピュータシステムは、パーソナルコンピュータ、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、又は任意の他のコンピュータ装置とすることができる。コンピュータシステム７００はまた、異なるバス構成、ネットワーク化されたプラットフォーム、及び多重プロセッサプラットフォームなどを組み込むことができる。「ユニックス」、「リナックス」、「ウインドウズ」、「マッキントッシュＯＳ」、「パームＯＳ」、及び他の適切なオペレーティングシステムを含む様々なオペレーティングシステムを使用することができる。
【００６７】
本発明の好ましい実施形態の以上の説明は、例証と説明の目的で為されたものである。それは、限定的つまり開示された正確な形態に本発明を限定するものではない。明らかに、多くの修正及び変形が当業者には明らかであろう。これらの実施形態は、本発明の原理及びその実際的な応用を最も良く説明し、それによって他の当業者が様々な実施形態に関して、かつ予想される特定の使用に適切な様々な修正と共に本発明を理解することを可能にするように選択して説明したものである。本発明の範囲は、特許請求の範囲及びその均等物によって規定されるものとする。
【図面の簡単な説明】
【００６８】
【図１】本発明の一実施形態による分散型オブジェクトシステムの図である。
【図２】本発明の一実施形態による別の分散型オブジェクトシステムの図である。
【図３】本発明によるホストサーバを選択する方法の流れ図である。
【図４】本発明による新しいホストサーバを選択する方法の流れ図である。
【図５】本発明によるリードサーバを利用する方法の流れ図である。
【図６】本発明の一実施形態による「ＪＭＳ」メッセージ記憶システムの図である。
【図７】本発明に従って使用することができるコンピュータシステムの構成要素を示すブロック図である。
【符号の説明】
【００６９】
２００  システム
２０６  ホストサーバ
２０８、２１４、２１６  オブジェクト
２１０  ソフトウエアクラスター
２１２  ファイルシステム
２１８  ハードウエアクラスター
２２０  リードサーバ
【図１】
2005502957.tif 000003
【図２】
2005502957.tif 000004
【図３】
2005502957.tif 000005
【図４】
2005502957.tif 000006
【図５】
2005502957.tif 000007
【図６】
2005502957.tif 000008
【図７】
2005502957.tif 000009
【国際公開パンフレット】
2005502957.tif 000010
2005502957.tif 000011
2005502957.tif 000012
2005502957.tif 000013
2005502957.tif 000014
2005502957.tif 000015
2005502957.tif 000016
2005502957.tif 000017
2005502957.tif 000018
2005502957.tif 000019
2005502957.tif 000020
2005502957.tif 000021
2005502957.tif 000022
2005502957.tif 000023
2005502957.tif 000024
2005502957.tif 000025
2005502957.tif 000026
2005502957.tif 000027
2005502957.tif 000028
2005502957.tif 000029
2005502957.tif 000030
2005502957.tif 000031
2005502957.tif 000032
2005502957.tif 000033
2005502957.tif 000034
2005502957.tif 000035
2005502957.tif 000036
2005502957.tif 000037
2005502957.tif 000038
2005502957.tif 000039
2005502957.tif 000040
2005502957.tif 000041
2005502957.tif 000042
2005502957.tif 000043
2005502957.tif 000044
2005502957.tif 000045
2005502957.tif 000046
2005502957.tif 000047
2005502957.tif 000048
2005502957.tif 000049
2005502957.tif 000050
2005502957.tif 000051
2005502957.tif 000052
2005502957.tif 000053
2005502957.tif 000054
2005502957.tif 000055
2005502957.tif 000056
2005502957.tif 000057
2005502957.tif 000058
2005502957.tif 000059
【国際調査報告】
2005502957.tif 000060
2005502957.tif 000061