(57)【特許請求の範囲】
【請求項１】
主マネージャコンピューターシステムと前記主マネージャコンピューターシステムに通信接続された１つまたは複数のバックアップマネージャコンピューターシステムと、前記バックアップマネージャコンピューターシステムに通信接続された１つまたは複数のワーカーコンピューターシステムとを備えた分散型サーバーシステムにおいてバックアップマネージャコンピューターシステムが実行する方法であって、
前記分散型サーバーシステムの状態を格納する要求を主マネージャコンピューターシステムから受信するステップであって、前記状態は、当該状態に関連付けられたＩＤに対応する、ステップと、
前記ＩＤに対応する状態が格納されていることを示す応答を、前記主マネージャコンピューターシステムに送信するステップと、
前記ＩＤと関連付けられたタスクを送信する要求を前記主マネージャコンピューターシステムから受信するステップであって、前記ＩＤおよび前記状態は、前記状態が初期化されてから実行されたタスク総量と結び付く、ステップと、
前記ＩＤと関連付けられた前記タスクを１つまたは複数のワーカーコンピューターシステムに送信するステップと、
前記ワーカーコンピューターシステムから受信したそれぞれの応答を集めて、前記集めた応答を前記主マネージャコンピューターシステムに送信するステップであって、前記ワーカーコンピューターシステムのうちのあるワーカーコンピューターシステムが応答していない場合、前記応答していないワーカーコンピューターシステムの接続状態に関する情報を、応答の代わりに用いる、ステップと、
前記応答していないワーカーコンピューターシステムに割り当てられたタスクを、前記ワーカーコンピューターシステムのうちの応答するワーカーコンピューターシステムに再度割り当てる要求を、前記主マネージャコンピューターシステムから受信するステップと
を備え、前記バックアップマネージャコンピューターシステムは、前記ＩＤおよび当該ＩＤに対応する前記分散型サーバーシステムの状態を格納し、前記主マネージャコンピューターシステムが機能を停止する場合、前記主マネージャコンピューターシステムの機能を担うように再構成されることを特徴とする方法。
【請求項２】
前記分散型サーバーシステムの前記状態を格納するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記タスクが実行されたことを示す応答を前記ワーカーコンピューターシステムから受信するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記ＩＤと関連付けられた前記タスクを１つまたは複数のワーカーコンピューターシステムに送信するステップはさらに、前記分散型サーバーシステムの前記状態と関連付けられた前記ＩＤを格納する要求を送信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
実行すべき新しいタスクを含む応答を、前記ワーカーコンピューターシステムから受信するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記ワーカーコンピューターシステムから受信した１つまたは複数の新しいタスク要求を含む応答を、前記主マネージャコンピューターシステムに送信するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
主マネージャコンピューターシステムと、前記主マネージャコンピューターシステムに通信接続された１つまたは複数のバックアップマネージャコンピューターシステムと、前記バックアップマネージャコンピューターシステムに通信接続された１つまたは複数のワーカーコンピューターシステムとを備え、前記バックアップマネージャコンピューターシステムのうちの１つは、前記主マネージャコンピューターシステムが機能を停止する場合、前記主マネージャコンピューターシステムの機能を担うように再構成される、分散型サーバーシステムにおいて、前記主マネージャコンピューターシステムに、
前記分散型サーバーシステムの状態を格納するコマンドを前記バックアップマネージャコンピューターシステムに送信するステップであって、前記状態は、当該状態に関連付けられたＩＤに対応する、ステップと、
第１の既定の時間間隔の間待機し、前記バックアップマネージャコンピューターシステムのそれぞれから応答を受信するステップと、
応答するバックアップマネージャコンピューターシステムの数が既定の数よりも多いかどうかを判定するステップと、
応答しなかった１つまたは複数のバックアップマネージャコンピューターシステムに割り当てられた１つまたは複数のワーカーコンピューターシステムを、応答した１つまたは複数のバックアップマネージャコンピューターシステムに再度割り当てるステップであって、前記ＩＤに関連付けられているタスクが、前記バックアップマネージャコンピューターシステムによって前記ワーカーコンピューターシステムに送信されるステップであって、前記ＩＤおよび前記状態は、前記状態が初期化されてから実行されたタスク総量と結び付く、ステップと、
前記ワーカーコンピューターシステムの応答性について前記バックアップマネージャコンピューターシステムから情報を受信するステップと、
前記受信した応答性を分析して、応答が低速化しているワーカーコンピューターシステムに割り当てられたタスクを、他のワーカーコンピューターシステムに再度割り当てる要求を前記１つまたは複数のバックアップマネージャコンピューターシステムに送信するステップと
を含む方法を実行させるためのプログラム。
【請求項８】
前記方法は、前記応答しなかった１つまたは複数のバックアップマネージャコンピューターシステムのために第２の既定の時間間隔の間待機するステップをさらに含むことを特徴とする請求項７に記載のプログラム。
【請求項９】
前記バックアップマネージャコンピューターシステムは、前記分散型サーバーシステムの前記状態と関連付けられたＩＤを格納するコマンドを前記ワーカーコンピューターシステムに転送することを特徴とする請求項７に記載のプログラム。
【請求項１０】
分散型サーバーシステムにおいて、主マネージャコンピューターシステムと１つまたは複数のワーカーコンピューターシステムとに通信接続されたバックアップマネージャコンピューターシステムであって、
前記分散型サーバーシステムの状態を格納する要求を主マネージャコンピューターシステムから受信する受信手段であって、前記状態は、当該状態に関連付けられたＩＤに対応する、受信手段と、
前記ＩＤに対応する状態が格納されていることを示す応答を、前記主マネージャコンピューターシステムに送信する送信手段と、
前記ＩＤと関連付けられたタスクを送信する要求を前記主マネージャコンピューターシステムから受信する受信手段であって、前記ＩＤおよび前記状態は、前記状態が初期化されてから実行されたタスク総量と結び付く、受信手段と、
前記ＩＤと関連付けられた前記タスクを１つまたは複数のワーカーコンピューターシステムに送信する送信手段と、
前記ワーカーコンピューターシステムから受信したそれぞれの応答を集めて、前記集めた応答を前記主マネージャコンピューターシステムに送信する送信手段であって、前記ワーカーコンピューターシステムのうちのあるワーカーコンピューターシステムが応答していない場合、前記応答していないワーカーコンピューターシステムの接続状態に関する情報を、応答の代わりに用いる送信手段と、
前記応答していないワーカーコンピューターシステムに割り当てられたタスクを、前記ワーカーコンピューターシステムのうちの応答するワーカーコンピューターシステムに再度割り当てる要求を、前記主マネージャコンピューターシステムから受信する受信手段と
を備え、前記ＩＤおよび当該ＩＤに対応する前記分散型サーバーシステムの状態を格納し、前記主マネージャコンピューターシステムが機能を停止する場合、前記主マネージャコンピューターシステムの機能を担うように再構成されることを特徴とするバックアップマネージャコンピューターシステム。
【請求項１１】
主マネージャコンピューターシステムと、前記主マネージャコンピューターシステムに通信接続された１つまたは複数のバックアップマネージャコンピューターシステムと、前記バックアップマネージャコンピューターシステムに通信接続された１つまたは複数のワーカーコンピューターシステムとを備えた分散型サーバーシステムにおいて、前記１つまたは複数のバックアップマネージャコンピューターシステムのうちの１つのバックアップマネージャコンピューターシステムに、
前記分散型サーバーシステムの状態を格納する要求を主マネージャコンピューターシステムから受信するステップであって、前記状態は、当該状態に関連付けられたＩＤに対応する、ステップと、
前記ＩＤに対応する状態が格納されていることを示す応答を、前記主マネージャコンピューターシステムに送信するステップと、
前記ＩＤと関連付けられたタスクを送信する要求を前記主マネージャコンピューターシステムから受信するステップであって、前記ＩＤおよび前記状態は、前記状態が初期化されてから実行されたタスク総量と結び付く、ステップと、
前記ＩＤと関連付けられた前記タスクを１つまたは複数のワーカーコンピューターシステムに送信するステップと、
前記ワーカーコンピューターシステムから受信したそれぞれの応答を集めて、前記集めた応答を前記主マネージャコンピューターシステムに送信するステップであって、前記ワーカーコンピューターシステムのうちのあるワーカーコンピューターシステムが応答していない場合、前記応答していないワーカーコンピューターシステムの接続状態に関する情報を、応答の代わりに用いる、ステップと、
前記応答していないワーカーコンピューターシステムに割り当てられたタスクを、前記ワーカーコンピューターシステムのうちの応答するワーカーコンピューターシステムに再度割り当てる要求を、前記主マネージャコンピューターシステムから受信するステップと
を含む方法を実行させるためのプログラムであって、前記バックアップマネージャコンピューターシステムは、前記ＩＤおよび当該ＩＤに対応する前記分散型サーバーシステムの状態を格納し、前記主マネージャコンピューターシステムが機能を停止する場合、前記主マネージャコンピューターシステムの機能を担うように再構成されることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散型サーバーシステムにおいてバックアップマネージャを転送するメッセージに関する。
【背景技術】
【０００２】
分散型サーバーシステムは、ワークタスクを任意の数の通信接続されたコンピューターシステムに分散するセントラルサーバーを含むことができる。セントラルサーバーは、典型的なサーバークラスソフトウェアアプリケーションまたはソフトウェアサービスを実行するサーバーコンピューターとすることができる。通信接続されたコンピューターシステムは、ディスクリートサーバークラスコンピューターシステム、パーソナルコンピューターシステム等とすることができる。通信接続されたコンピューターシステムを、ネットワークによって同じ物理的場所に配置することができ、または異なる物理的場所に分散することができる。
【０００３】
セントラルサーバーによって分散されるワークタスクは、コンピューターシステムがコンピューターソフトウェアにおいて実行することができる任意の種類のタスク、コマンドまたは関数呼び出しとすることができる。例えば、ワークタスクは、計算、データを記憶するコマンド等とすることができる。セントラルサーバーは、任意の典型的なコンピューター通信方法を使用して、ワークタスクを通信接続されたコンピューターシステムに送信することができる。例えば、セントラルサーバーは、ＨＴＴＰ(hypertext transport protocol)、ＨＴＴＰ経由のＲＰＣ(remote procedure call)、ＤＣＯＭ(distributed component object model)システム等を使用して、ワークタスクを送信することができる。
【０００４】
セントラルサーバーはさらに、ソフトウェアアプリケーションまたはソフトウェアサービスを実行して、分散型サーバーシステムの現在の「状態」を管理および／または維持することができる。より詳細には、セントラルサーバーは、分散型サーバーシステム外部のエンティティに対して分散型サーバーシステム全体を表すことができる。従って、分散型サーバーシステムの状態に関する情報を探索する外部エンティティは、セントラルサーバーと通信を行い、セントラルサーバーは、分散型サーバーシステム全体の現在の状態に応答することができる。通信接続されたコンピューターシステムは、分散型コンピューターシステムの現在の状態を維持することもできるが、現在の状態はセントラルサーバーによって管理されるため、通信接続されたコンピューターシステムが分散型コンピューターシステムの現在の状態の維持を行うことは必須ではない。さらに、セントラルサーバーは、通信接続されたコンピューターシステムが互いに通信接続されたコンピューターシステムに関してそれぞれが同じ「状態」であることを確保することができる。
【０００５】
そのような分散型サーバーシステムによって実行されるワークタスク量は、セントラルサーバーに通信接続されたコンピューターシステムの数に関連することができる。例えば、各通信接続されたコンピューターシステムは、ワークタスクを実行することができる定率を有することができる。分散型サーバーシステムに割り当てられたワークタスク総量が通信接続されたコンピューターシステムが実行することができる量よりも多い場合、分散型サーバーシステムは、全体のワークタスクを完了させる際に低速化を起こす可能性がある。通信接続されたコンピューターシステムを分散型サーバーシステムにさらに追加することによって、分散型サーバーシステムのワークタスク容量を増加させ、全体のワークタスクを完了させる際のそのような低速化を抑制することができる。
【０００６】
しかし通信接続されたコンピューターシステムを分散型サーバーシステムにさらに追加した結果、１つまたは複数の通信の問題が起こる場合がある。例えば、セントラルサーバーは、効率的にワークタスクを送信し、少数の通信接続されたコンピューターシステムから受信することができるかもしれない。分散型サーバーシステムの仕事容量は、通信接続されたコンピューターシステムのそれぞれを追加するにつれて、増加することができる。従って、セントラルサーバーによって実行される通信量も増加することができる。結果として、セントラルサーバーは、増加した数の通信を効率的に管理できないかもしれないし、そのような分散型サーバーシステムによって実行することができるワークタスク全体の数が減少するかもしれない。
【０００７】
そのような分散型サーバーシステムは、冗長的に情報を格納するよう構成された１つまたは複数のバックアップコンピューターを使用することができる。そのようなバックアップコンピューターシステムは、バックアップマネージャまたはバックアップサーバーとしても知られている。バックアップマネージャまたはバックアップサーバーを、セントラルサーバーを冗長的に格納されてきた特定の「状態」に修復するよう構成することができる。しかし、１つまたは複数のバックアップマネージャまたはバックアップサーバーに対して通信の状態を変更する場合、セントラルサーバーは、実行される通信の総数も増加し、分散型サーバーシステム内の通信性能を再度低下させる結果となる可能性がある。
【０００８】
通信接続されたコンピューターシステムの数を、セントラルサーバーの通信容量に悪影響を与えることなく増加させることができるシステムが有効である。
【発明の概要】
【０００９】
本開示の簡略化した概要を以下に示し、基本的な理解を読者に提供する。本概要は、本開示の広範囲の要約ではない。本概要は、本発明の重要な／重大な要素を特定するものでも、本発明の範囲を明確にするものでもない。本概要の目的は、後に示すより詳細な説明の前置きとして、本明細書で開示したいくつかの概念を簡略化した形式で示すことである。
【００１０】
本実施例は、分散型サーバーシステムにおいてバックアップマネージャを転送するメッセージの機構および技術を提供する。サーバーは、他のコンピューターシステムに代わってソフトウェアサービスを実施し、実行するコンピューターシステムとすることができる。そのような他のコンピューターシステムは、クライアント、他のサーバー等として知られている。サーバーは、他のコンピューターシステムが要求をサーバーに伝えることができるように、典型的なコンピューター通信ネットワークを使用して他のコンピューターシステムに通信接続することができる。サーバーは、要求への適切な応答を準備し、伝えることができる。
【００１１】
分散型サーバーは、１つまたは複数のサーバーのソフトウェアサービスを実行する単一のコンピューターシステム、またはセントラルサーバーに通信接続された複数のコンピューターシステム等を含むことができる。分散型サーバーシステムの主マネージャサーバーは、１つまたは複数の他のコンピューターシステムまたはサーバーに通信接続することができる。主マネージャは、クライアント要求を受信し、全体の動作または動作の一部を通信接続されたコンピューターシステムに委譲することができる。通信接続されたコンピューターシステムは、動作を実行し、成功または失敗を示す応答メッセージを送信することができる。そのような動作または動作の一部は、「ワーク」として知られている。
【００１２】
主マネージャは、分散型サーバーシステムの「状態」を維持することもできる。そのような状態は、主マネージャによって管理された情報またはソフトウェアアプリケーションの現在の状態を示すことができる。例えば、セントラルマネージャは、分散型サーバーシステムによって格納されたデータベースの現在の状態を維持することができる。
【００１３】
任意の数の通信接続されたコンピューターシステムは、バックアップマネージャまたはバックアップサーバーとして機能するよう指定することができる。主マネージャは、分散型サーバーシステムの状態に関連している情報を冗長的に格納する命令または情報を、１つまたは複数のそのようなバックアップマネージャに送信することができる。主マネージャは、他の情報またはデータを１つまたは複数のバックアップマネージャに送信することもできる。イベントにおいて状態情報、命令、またはデータのいずれかが主マネージャ上で失われた、または破損した場合、それらの状態情報、命令、またはデータを、バックアップマネージャのいずれかから復旧することができる。そのようなバックアップマネージャは、主マネージャにバックアップ動作が成功したことを知らせる実行可能な命令を含むこともできる。
【００１４】
主マネージャを、１つまたは複数のそのようなバックアップマネージャに通信接続することができる。バックアップサーバーのそれぞれを、「ワーカー」とも呼ばれる、１つまたは複数のワーカーコンピューターシステムに通信接続することができる。主マネージャは、コマンドを１つまたは複数のバックアップマネージャに伝え、分散型サーバーシステムの現在の「状態」と関連付けられたＩＤを閉じる動作を開始することができる。コマンドはさらに、分散型サーバーシステムの現在の状態を持続、または格納する命令を含むことができる。
【００１５】
各バックアップサーバーがコマンドと関連付けられた動作を完了した時点で、各バックアップサーバーは、成功または失敗を示すメッセージを主マネージャに送信することができる。１つまたは複数のバックアップサーバーが応答しない場合、主マネージャは、全てのバックアップサーバーが応答するまで待機するか、または、主マネージャは、応答しないバックアップサーバーに割り当てられた任意のワーカーを応答するバックアップサーバーに再度割り当てるための選択をすることができる。代替的な実施形態において、主マネージャは、バックアップサーバーがまだ応答していないことのみを認めることができ、および、応答しないバックアップサーバーに割り当てられた任意のワーカーを再度割り当てる後の時間まで待機することができる。
【００１６】
主マネージャは次に、コマンドを１つまたは複数のバックアップマネージャのそれぞれに伝え、「ワーク」を送信することができる。そのような「ワーク」は、現在の状態ＩＤ（state identifier）によって表された現在のタスクまたは動作と関連付けられたタスクまたは動作とすることができる。それぞれのバックアップマネージャは次に、ワークを実行するコマンドを１つまたは複数の通信接続されたワーカーのそれぞれに転送することができる。各ワーカーがワークを完了すると、各ワーカーは、独立して新しいワークを決定するか、または、他のワーカーと通信を行って実行すべき任意の新しいワークを決定することができる。各ワーカーは次に、ワーカーに割り当てられたバックアップマネージャと通信を行うことができ、現在の状態ＩＤと関連付けられたワークが完了したことを確認し、新しいワークを要求することができる。
【００１７】
１つまたは複数のバックアップマネージャのそれぞれは次に、１つまたは複数のワーカーのそれぞれから受信した情報を集めることができる。ワーカーの１つが応答しなかったイベントにおいて、バックアップマネージャは、応答しない状態に関する情報を集められた情報に追加することができる。１つまたは複数のバックアップサーバーのそれぞれは次に、主マネージャと通信を行い、現在の状態ＩＤが閉じていることを示すことができる。１つまたは複数のバックアップマネージャのそれぞれは、ワーカーのいずれかから受信した任意の新しいワーク要求を転送することもできる。
【００１８】
付随する特徴の多くは、添付図面面に関連して考慮される以下の詳細な説明を参照することによって、より容易に認識されると同時に、より理解されるようになるだろう。
【図面の簡単な説明】
【００１９】
本説明は、添付図面面を踏まえて読まれる以下の詳細な説明によってより理解されるだろう。
【図１】従来の分散型サーバーシステムを示すブロック図である。
【図２】分散型サーバーシステムにおいてバックアップサーバーを転送する例示的なメッセージを示すブロック図である。
【図３】図２に見られる分散型サーバーシステムの状態と関連付けられたＩＤを閉じることと関連付けられた例示的な通信を示す図である。
【図４】主マネージャが低速化している、または応答しないバックアップマネージャを処理する例示的な方法を示す図である。
【図５】バックアップマネージャが低速化している、または応答しないワーカーを処理する例示的な方法を示す図である。
【図６】説明したシステムおよび方法を実施する例示的なコンピューター装置を示す図である。
【００２０】
同種の参照数字は、添付図面面の同種の部分を指定するのに使用される。
【発明を実施するための形態】
【００２１】
添付図面に関連して以下に与えた詳細な説明は、本実施例の説明を意図しており、本実施例を構成または利用できる唯一の形態を表すことを意図していない。本説明は、本実施例の機能および本実施例を構成し、動作するステップの順序を示す。しかし、同一のもしくは同等の機能および順序を、異なる実施例によって達成することができる。
【００２２】
本実施例を、分散型サーバーシステムにおいてバックアップマネージャを転送するメッセージを実施するものとして本明細書に説明し、示すが、説明するシステムは、例示として与えられており、これに限定されない。当業者が理解するように、本実施例は、さまざまな異なる種類の動的なフラグメントマッピングシステムのアプリケーションに適している。
【００２３】
図１は、従来の分散型サーバーシステム１００を示すブロック図である。従来の分散型サーバーシステム１００は、従来型セントラルサーバー１２０、従来型バックアップサーバー１４０、従来型バックアップサーバー１５０、従来型サーバー１６０、従来型サーバー１７０、および従来型サーバー１８０を含むことができる。
【００２４】
例示的な従来の分散型サーバーシステム１００において、従来型バックアップサーバー１４０と従来型バックアップサーバー１５０のそれぞれを、従来型セントラルサーバー１２０に通信接続することができる。従来型サーバー１６０、従来型サーバー１７０、および従来型サーバー１８０のそれぞれを、従来型セントラルサーバー１２０に通信接続することもできる。そのような従来の分散型サーバーシステム１００は、本来論理的であって、つまりそのような通信接続は物理的に存在しないので、その代わりに、そのような通信接続は、従来の分散型サーバーシステム１００において参加者間で通信する順序を示すことができる。
【００２５】
従来の分散型サーバーシステム１００は、任意の種類の従来の分散型サーバーアーキテクチャとすることができる。例えば、従来の分散型サーバーシステム１００は、従来の分散型データベースサーバーシステム、従来の分散型媒体サーバーシステム等とすることができる。従来型セントラルサーバー１２０は、ソフトウェアサービスを他のコンピューターシステムに提供するよう構成された任意の種類の従来型サーバーコンピューターシステムとすることができる。従来型セントラルサーバー１２０は、外部エンティティからの要求を受信することができる。例えば、エラー！参照ソースが見つからない（Ｅｒｒｏｒ！Ｒｅｆｅｒｅｎｃｅ  ｓｏｕｒｃｅ  ｎｏｔ  ｆｏｕｎｄ．）等で、別のサーバーは、従来型セントラルサーバー１２０と同じネットワークドメインにおいて実行するワールドワイドウェブサーバー、またはインターネットを経由して通信接続された外部クライアント等とすることができる。
【００２６】
従来型セントラルサーバー１２０は、要求を任意の従来型サーバー１６０、従来型サーバー１７０、および／または従来型サーバー１８０に送信し、タスクを実行することができる。従来型サーバー１６０、従来型サーバー１７０、および／または従来型サーバー１８０のそれぞれは、タスクを実行し、従来型セントラルサーバー１２０に応答してタスクの完了を示すことができる。さらに、従来型セントラルサーバー１２０は、バックアップコマンド、または冗長的に情報を格納するコマンドを任意の従来型バックアップサーバー１４０および／または従来型バックアップサーバー１５０に送信することができる。
【００２７】
任意の数の従来型サーバーを従来の分散型サーバーシステム１００に追加し、従来の分散型サーバーシステム１００の全体のタスク実行容量を増加することができる。より多くの従来型サーバーが従来型セントラルサーバー１２０に通信接続されるので、従来型セントラルサーバー１２０によって送受信される通信量は、従来型セントラルサーバー１２０に通信の低速化が起こる程度まで増加する可能性がある。
【００２８】
より多くの従来型サーバーを、付随する通信ボトルネックなしで従来型サーバーシステムに追加することができるシステムが有効である。
【００２９】
図２は、分散型サーバーシステム２００においてバックアップサーバーを転送する例示的なメッセージを示すブロック図である。分散型サーバーシステム２００は、主マネージャ２１０、バックアップマネージャ２２０、バックアップマネージャ２３０、ワーカー２４０、ワーカー２５０、およびワーカー２６０を含むことができる。
【００３０】
分散型サーバーシステム２００において、主マネージャ２１０を、バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれに通信接続することができる。バックアップマネージャ２２０を、ワーカー２４０およびワーカー２５０のそれぞれに通信接続することができる。バックアップマネージャ２３０を、ワーカー２６０に通信接続することができる。このような分散型サーバーシステム２００は、ほんの一例である。任意の数のバックアップマネージャを、主マネージャ２１０に通信接続することができる。同様に、任意の数のワーカーを、任意の数のバックアップマネージャに通信接続することができる。例えば、バックアップサーバーの数は、エージェントサーバーの数の平方根とすることができる。そのような分散型サーバーシステム２００も、本来論理的であって、つまりそのような通信接続は物理的に存在しないので、その代わりに、そのような通信接続は、分散型サーバーシステム２００において参加者間で通信する順序を示すことができる。
【００３１】
通信接続のそれぞれを、ＷＡＮ(wide area network)、ＬＡＮ(local area network)等のコンピューターネットワークを使用して行うことができる。代替的な実施例において、主マネージャ、バックアップマネージャ、およびワーカーのそれぞれは、単一のコンピューターシステム上で実行するソフトウェアサービスとすることができ、それらの通信接続のそれぞれを、マイクロソフトＷｉｎｄｏｗｓ（登録商標）等のオペレーティングシステムに含まれるソフトウェア通信サービスを使用して行うことができる。
【００３２】
主マネージャ２１０は、サーバークラスオペレーションシステムを実行するサーバーコンピューターシステムおよびそれに関連するソフトウェアサービスとすることができる。主マネージャ２１０はさらに、分散型サーバーシステム２００の「状態」と関連付けられた１つまたは複数のＩＤを作成し、管理するためのソフトウェアサービスを実行することができる。そのような状態は、分散型サーバーシステム２００の代わりに主マネージャ２１０によって管理し、維持される情報のディスクリートスナップショット、または一時的な表示を示すことができる。つまり状態は、システムの任意の時点における任意の数のデータ配列、命令等を表すことができる。このように主マネージャ２１０は、特定の時点における分散型サーバーシステム２００の状態を一意的に識別することができる状態に対応するＩＤを割り当てることができる。
【００３３】
主マネージャ２１０を、ワーク「タスク」を管理し、分散するよう構成することもできる。ワーク「タスク」は、コンピューターシステムによって実行することができる任意の種類の機能性とすることができる。例えば「ワーク」は、数値計算、データもしくは他の情報を格納するコマンド、または任意の他の種類のコンピューターソフトウェア機能とすることができる。主マネージャ２１０はさらに、ワークを状態ＩＤと関連付けることができる。特に、主マネージャ２１０は、現在の状態および現在の状態ＩＤと実行されたワーク総量とを結び付けることができる。より詳細には、分散型サーバーシステム２００の現在の状態は、分散型サーバーシステム２００の状態が初期化されてから実行された「ワーク」のそれぞれのディスクリート装置の累積集計に相当することができる。
【００３４】
主マネージャ２１０は、要求をバックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれに送信し、状態ＩＤと関連付けられた状態を持続することができる。バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれを、各状態ＩＤおよび主マネージャ２１０から受信した状態ＩＤと関連付けられた状態を冗長的に格納するよう構成することができる。この方法において、バックアップマネージャ２２０またはバックアップマネージャ２３０のいずれかは置き換えることができ、主マネージャ２１０の機能は、主マネージャ２１０に主マネージャ２１０が機能停止を引き起こす障害が起こることを想定することができる。さらに、バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれが、状態を持続している主マネージャ２１０に伝えることができるようになった時点で、主マネージャ２１０は、コマンドをバックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれに伝え、現在の状態ＩＤと関連付けられたワークをワーカー２４０、ワーカー２５０、および／またはワーカー２６０のそれぞれに送信することができる。
【００３５】
ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれは、任意のバックアップマネージャ２２０および／またはバックアップマネージャ２３０から受信したワークタスクと関連付けられた機能性を実行することができるコンピューターシステムとすることができる。さらに、ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれを、通信接続することもでき、情報、データ等を互いに共有することができる。ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれが割り当てられたワークタスクを完了した時点で、それぞれのワーカーは、それらの情報をバックアップマネージャ２２０、またはバックアップマネージャ２３０のいずれかに返信することができる。
【００３６】
バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは、ワーカー２４０、ワーカー２５０またはワーカー２６０のいずれかから受信した応答を集めることができる。バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは次に、集めた応答を主マネージャ２１０に返信することができる。ワーカー２４０、ワーカー２５０、ワーカー２６０のいずれかの応答が低速化しているまたは応答しないイベントにおいて、バックアップマネージャ２２０またはバックアップマネージャ２３０のそれぞれは、集められた応答内に応答が低速化しているまたは機能していないワーカーの識別を表示する情報を含むことができる。
【００３７】
上述のように、バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは常に、分散型サーバーシステム２００の状態をバックアップまたは冗長的に格納し、主マネージャ２１０の役割を担うことができる。従って、分散型サーバーシステム２００の構成は、動的とすることができ、それらの通信接続は、分散型サーバーシステム２００に含まれる低速化しているもしくは機能しないマネージャまたはワーカーを反映するように変更することができる。つまり、主マネージャ２１０とバックアップマネージャ２２０とバックアップマネージャ２３０との間の通信接続によって、バックアップマネージャ２２０、またはバックアップマネージャ２３０のいずれかが主マネージャ２１０の機能的責任を担うことができるように再構成することができる。
【００３８】
上述のように、主マネージャ２１０は、集めた応答を分析し、ワーカーが低速化しているまたは応答していないことを判定することができる。主マネージャ２１０は次に、対応するバックアップマネージャに通知し、分散型サーバーシステム２００から応答が低速化しているまたは機能していないワーカーを除去することができる。主マネージャ２１０は次に、新しい送信メッセージを残ったワーカーのそれぞれに送り、状態と関連付けられた全てのワークが完了できるように、低速化しているまたは機能していないワーカーに割り当てられたワークを実行することができる。
【００３９】
説明した機能性は、任意の数のサーバーコンピューターシステム上で実施することができる。例えば、１コンピューターシステムは、セントラルマネージャ、バックアップマネージャ、ワーカー、またはそれらの任意の組み合わせに関連しているソフトウェアサービスを実行することができる。図３の、エラー！参照ソースが見つからない（Ｅｒｒｏｒ！Ｒｅｆｅｒｅｎｃｅ  ｓｏｕｒｃｅ  ｎｏｔ  ｆｏｕｎｄ．）機能は、図２に見られる主マネージャ２１０の状態と関連付けられたＩＤを閉じることと関連付けられた例示的な通信を示す。
【００４０】
図２の主マネージャ２１０は、コマンドを図２の任意のバックアップマネージャ２２０または図２のバックアップマネージャ２３０に送信することができる。図２について述べたように、そのようなコマンドは、状態ＩＤと関連付けられた状態を閉じる命令を含むことができる。そのようなコマンドはさらに、現在の状態ＩＤと関連付けられた状態を持続するコマンドを含むことができる。
【００４１】
バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは次に、主マネージャ２１０によって要求された状態を持続することができる。バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれが現在の状態ＩＤと関連付けられた状態を持続した時点で、バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは、現在の状態ＩＤと関連付けられた状態が持続していることを表示する応答３２０を送信することができる。主マネージャ２１０は、次に進む前にバックアップマネージャのそれぞれから受信すべき全ての応答を待つことができる。
【００４２】
主マネージャ２１０は次に、コマンド３３０をバックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれに送信し、バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれが、ワーカーのそれぞれに対する状態ＩＤと関連付けられた状態に対応するワークを現在送信することができることを示す。バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは次に、コマンド３４０を図２のワーカー２４０、図２のワーカー２５０、および図２のワーカー２６０のそれぞれに送信し、現在の状態ＩＤと関連付けられた状態を閉じ、ワーカーに割り当てられた現在の状態ＩＤと関連付けられたワークを実行することができる。それぞれのワーカーに送信されたコマンド３４０は、同一とすることができ、各ワーカーは、コマンド３４０の一部として送信されたワークが割り当てられていない部分を無視することができる。代替的な実施例において、コマンド３４０は、それぞれのワーカーに対して個々に作成することができ、コマンド３４０が送信されたワーカーに割り当てられたワークのみを含むことができる。
【００４３】
ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれがワークを完了した時点で、それぞれのワーカーは、現在の状態ＩＤと関連付けられた状態を局所的に閉じることができる。ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれは次に、実行すべき任意の追加のワークを決定することができる。そのような決定は、ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれが互いに通信する時に行うことができる。代替的な実施例において、ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれは、独立して、現在の状態ＩＤと関連付けられた状態を分析し、実行すべき任意の追加のワークを決定することができる。ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれは、メッセージ３５０をそれらに割り当てられたバックアップマネージャ２２０またはバックアップマネージャ２３０のいずれかのバックアップマネージャに送信することができ、ワーカー２４０、ワーカー２５０、およびワーカー２６０のそれぞれが、現在の状態ＩＤと関連付けられた状態を閉じたことを示す。そのようなメッセージは、実行すべき任意の追加の新しいワークに対する要求を含むこともできる。
【００４４】
バックアップマネージャ２２０およびバックアップマネージャ２３０のそれぞれは次に、メッセージ３６０を主マネージャ２１０に送信することができ、現在の状態ＩＤと関連付けられた状態が閉じられたことを示す。また、メッセージ３６０は、ワーカーから受信した時に実行すべき任意の新しいワークを含むことができる。
【００４５】
図４に、低速化しているまたは応答しないバックアップマネージャを処理する主マネージャの例示的な方法４００を示す。そのような主マネージャは、図２の主マネージャ２１０とすることができる。
【００４６】
ブロック４１０では、現在の状態ＩＤと関連付けられた状態を閉じるコマンドを１つまたは複数のバックアップマネージャに送信する動作を示すことができる。そのようなバックアップマネージャは、図２のバックアップマネージャ２２０および図２のバックアップマネージャ２３０とすることができる。そのような現在の状態ＩＤを閉じるコマンドは、図３のコマンド３１０または図３のコマンド３３０とすることができる。
【００４７】
ブロック４２０では、既定の時間間隔内に応答が受信されたかどうかを判定する動作を示すことができる。そのような時間間隔は、任意の長さとすることができる。あるいは、そのような時間間隔を、分散型サーバーシステムの予想される実行の全レベルと関連付けることができる。肯定的な判定に応じて、フローはブロック４３０に続く。否定的な判定に応じて、フローはブロック４４０に続く。
【００４８】
ブロック４３０では、主マネージャの標準動作を継続する動作を示すことができる。標準動作は、主マネージャの機能に従って実行される任意の動作を示すことができる。
【００４９】
ブロック４４０では、応答の最小数が受信されたかどうかを判定する動作を示すことができる。最小数は、分散型サーバーシステムに含まれるバックアップマネージャの全数、バックアップマネージャに接続されたワーカーの数等を含む任意の情報に基づいて判定することができる。肯定的な判定に応じて、フローはブロック４５０に続く。否定的な判定に応じて、フローはブロック４６０に続く。
【００５０】
ブロック４５０では、低速化しているまたは応答しないバックアップマネージャを回避する動作を示すことができる。そのような回避を、低速化しているまたは応答しないバックアップマネージャに割り当てられた任意のワーカーを、応答するバックアップマネージャに一時的に再度割り当てることによって実行することができる。
【００５１】
ブロック４６０では、バックアップマネージャの数が少なすぎて既定の実行レベルを分散型データベースシステム内に確保できないこと、または分散型データベースシステムに対するバックアップマネージャの数が少なすぎて正確に機能できないことを判定された動作を示すことができる。その動作は、一定時間待機している動作を含むこともできる。追加のバックアップマネージャが待機時間内に応答しなければ、分散型データベースシステムは、例えば追加の応答するバックアップマネージャが追加される時間まで機能を停止することができる。フローは４２０に戻って継続することができる。
【００５２】
図５に低速化しているまたは応答しないワーカーを処理するバックアップマネージャの例示的な方法５００を示す。そのようなバックアップマネージャは、図２のバックアップマネージャ２２０または図２のバックアップマネージャ２３０とすることができる。そのようなワーカーは、バックアップマネージャ２３０とすることができ、ブロック５１０では、状態に対応するワークを実行するコマンドを１つまたは複数のワーカーに送信する動作を示すことができる。代替的な実施形態において、コマンドが送信され、ワーカーが現在の状態ＩＤと関連付けられた状態を閉じなければならないことを示す。しかし、その動作は、ワーカーからの応答を要求することができる任意のコマンドを含むことができる。
【００５３】
ブロック５２０では、ブロック５１０のコマンドが送信された各ワーカーが既定の時間間隔内に応答しているかどうかを判定する動作を示すことができる。そのような時間間隔は、任意の時間間隔とすることができ、分散型サーバーシステムと関連付けられた実行の全レベルと関連付けることができる。肯定的な判定に応じて、フローはブロック５３０に続く。否定的な判定に応じて、フローはブロック５４０に続く。
【００５４】
ブロック５３０では、バックアップマネージャが全てのワーカーの応答を集めて単一メッセージを形成し、その集められたメッセージをセントラルマネージャに送信する動作を示すことができる。
【００５５】
ブロック５４０では、バックアップマネージャが全てのワーカーの応答を集めて単一メッセージを形成し、その集められたメッセージをセントラルサーバーに送信する動作を示すことができる。集められたメッセージは、ブロック５２０において識別された任意の低速化しているまたは機能しないワーカーの身元を示す情報を含むことができる。
【００５６】
図６に、任意の前述したサーバーコンピューターシステムまたはクライアントコンピューターシステム等の説明したシステム、方法、およびソフトウェアサービスを実施する例示的なコンピューター装置６００を示す。それらの最も基本的な構成において、コンピューター装置６００は典型的に、少なくとも１つのＣＰＵ(central processing unit)およびメモリー６１０を含む。
【００５７】
正確な構成およびコンピューター装置の種類に依存する場合、メモリー６１０は、揮発性（ＲＡＭ等）、不揮発性（ＲＯＭ、フラッシュメモリー等）、またはそれら２つのある組み合わせとすることができる。さらに、コンピューター装置６００は、追加の機能／機能性を有することもできる。例えば、コンピューター装置６００は、複数のＣＰＵを含むことができる。説明した方法を、コンピューター装置６００の任意の処理装置による任意の方法で実行することができる。例えば、説明したプロセスを、同時に複数のＣＰＵによって実行することができる。
【００５８】
コンピューター装置６００は、磁気もしくは光ディスクまたは磁気もしくは光テープを含む付加的な記憶装置（取り外し可能および／または取り外し不可能）を含むこともできるがこれらに限定されない。そのような付加的な記憶装置を、図６の記憶装置６１５に示す。コンピューター記憶媒体は、コンピューター読み取り可能な命令、データ構造、プログラムモジュールもしくは他のデータ等の情報を格納する任意の方法または技術において実施される揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体を含む。メモリー６１０および記憶装置６１５は、コンピューター記憶媒体の全ての例である。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、ＤＶＤ(digital versatile disk)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望の情報を記憶するために使用でき、コンピューター装置６００によってアクセスすることができる任意の他の媒体を含むが、これらに限定されない。そのような任意のコンピューター記憶媒体は、コンピューター装置６００の一部とすることができる。
【００５９】
コンピューター装置６００は、通信装置６４０を含むこともでき、当該装置が他の装置と通信することを可能とする。通信装置６４０は、通信媒体の一例である。通信媒体は、典型的には、コンピューター読み取り可能な命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の転送機構等の変調データ信号として具現化したものであり、また、任意の情報配信媒体を含む。用語「変調データ信号」は、１つまたは複数のそれらの特徴セットを有するか、または情報を信号にエンコードするような方法で変更された信号を意味する。一例として通信媒体には、有線ネットワークまたは直接有線接続、および音響、ＲＦ、赤外線ならびに他の無線媒体等の無線媒体を含むが、これらに限定されない。本明細書で使用されている用語コンピューター読み取り可能な媒体または装置読み取り可能な媒体は、コンピューター記憶媒体および通信媒体の両方を含む。説明した方法を、データ、コンピューター実行可能な命令等の任意の形態の任意のコンピューター読み取り可能な媒体にエンコードすることができる。
【００６０】
コンピューター装置６００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等の入力装置６３５を有することもできる。ディスプレイ、スピーカー、プリンター等の出力装置６３０も含むことができる。これら全ての装置は、当技術分野で周知であり、詳細に説明する必要はない。
【００６１】
当業者は、プログラム命令を格納するのに利用される記憶装置を、ネットワーク上に分散することができることを認識するだろう。例えばリモートコンピューターは、ソフトウェアとして説明した例示的なプロセスを格納することができる。ローカルコンピューターまたはターミナルコンピューターは、リモートコンピューターにアクセスし、ソフトウェアの一部または全てをダウンロードしてプログラムを実行することができる。あるいはローカルコンピューターは、必要に応じてソフトウェアの一部をダウンロードすることができ、またはローカル端末におけるいくつかのソフトウェアの命令およびリモートコンピューター（またはコンピューターネットワーク）におけるいくつかのソフトウェアの命令を実行することによって、分散して処理することができる。当業者は、当業者に周知である従来を用いて、ソフトウェアの命令の全てまたは一部を、ＤＳＰ、プログラム可能な論理アレイ等の専用回線で実行することができることも認識するだろう。
【図１】
0005624655.tif 000002
【図２】
0005624655.tif 000003
【図３】
0005624655.tif 000004
【図４】
0005624655.tif 000005
【図５】
0005624655.tif 000006
【図６】
0005624655.tif 000007