(57)【要約】  【課題】    ルーティング情報を調整するための優れた方法、装置、システムを提供する。  【解決手段】  方法、装置、システム、および信号担持媒体であって、一実施形態において、サーバのクラスタにブロードキャスト・メッセージを送信し、クラスタの調整サーバからポイント・ツー・ポイント・メッセージを受信する。調整サーバは、クラスタ内の他の全てのサーバよりも前にクラスタに加入したサーバである。ポイント・ツー・ポイント・メッセージは、クラスタ内のサーバの全てに関するルーティング・データを含む。一実施形態において、ブロードキャスト・メッセージは、新しいサーバの識別と、新しいサーバに関するリソース・データと、新しいサーバがクラスタに加入する時刻とを含む。クラスタ内のサーバは、ルーティング・データにレコードを追加し、レコードによって新しいサーバに要求を送信する。別の実施形態において、ブロードキャスト・メッセージは、第２のクラスタ内の全てのサーバについてのレコードを含み、新しいサーバは第２のクラスタ内のサーバにルーティング・データを送信する。サーバがクラスタを脱退した場合、そのレコードは除去される。このようにして、ネットワーク・トラヒックを軽減しながら、クラスタは、サーバが動的にクラスタに加入および脱退することに応答することができる。【選択図】  図１
2009516279.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバのクラスタにおいて受信側サーバで実行される方法であって、
新しいサーバからブロードキャスト・メッセージを受信するステップであって、前記新しいサーバが前記複数のサーバの前記クラスタに前記ブロードキャスト・メッセージを送信した、前記受信するステップと、
前記受信側サーバが、前記クラスタにおける前記複数のサーバの他の全てよりも前に前記クラスタに加入したか否かを判定するステップと、
前記判定が真である場合、前記新しいサーバにポイント・ツー・ポイント・メッセージを送信するステップであって、前記ポイント・ツー・ポイント・メッセージが前記クラスタ内の前記複数のサーバの全てに関連したルーティング・データを含む、前記送信するステップと、
を含む、方法。
【請求項２】
前記ブロードキャスト・メッセージが、前記新しいサーバの識別、前記新しいサーバに関連したリソース・データ、および前記新しいサーバが前記クラスタに加入する時刻を含むレコードを含む、請求項１に記載の方法。
【請求項３】
前記レコードを前記ルーティング・データに追加するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記レコードによって前記新しいサーバに要求を送信するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記ルーティング・データが前記複数のサーバに関連した複数のレコードを含み、前記複数のレコードの各々が、前記各サーバの識別、前記各サーバが提供するリソース、および前記各サーバが前記クラスタに加入した時刻を含むレコードを含み、前記受信側サーバが前記複数のレコードにおける前記時刻に基づいて前記判定を行う、請求項１に記載の方法。
【請求項６】
前記複数のサーバの１つが前記クラスタを脱退した場合、前記クラスタを脱退した前記１つのサーバに関連した前記レコードを前記ルーティング・データから除去するステップを更に含む、請求項５に記載の方法。
【請求項７】
前記ポイント・ツー・ポイント・メッセージを送信する前記ステップが、前記ポイント・ツー・ポイント・メッセージを排他的に前記新しいサーバに送信するステップを更に含む、請求項１に記載の方法。
【請求項８】
前記判定が偽である場合、前記レコードを前記ルーティング・データに追加するステップを更に含む、請求項２に記載の方法。
【請求項９】
サーバのクラスタに加入することを望む新しいサーバにおいて実行される方法であって、
ネットワークを介して接続された前記サーバのクラスタにブロードキャスト・メッセージを送信するステップと、
第１の複数のサーバの第１のクラスタの調整サーバからポイント・ツー・ポイント・メッセージを受信するステップであって、前記調整サーバが前記第１の複数のサーバの他の全てよりも前に前記第１のクラスタに加入し、前記ポイント・ツー・ポイント・メッセージが前記第１のクラスタにおける前記第１の複数のサーバの全てに関連したルーティング・データを含み、前記ポイント・ツー・ポイント・メッセージが排他的に前記新しいサーバによって受信される、前記受信するステップと、
を含む、方法。
【請求項１０】
前記ルーティング・データが、前記クラスタにおける前記サーバの全ての識別、前記クラスタにおける前記サーバの全てが提供するリソース、および前記サーバの各々が前記クラスタに加入した時刻を含む、請求項９に記載の方法。
【請求項１１】
前記ルーティング・データによって、前記サーバの１つにおける前記リソースの少なくとも１つに対する要求を送信するステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記ブロードキャスト・メッセージにおいて、前記新しいサーバが前記クラスタに加入する時刻をストアするステップを更に含む、請求項９に記載の方法。
【請求項１３】
前記ブロードキャスト・メッセージに前記新しいサーバの識別およびリソース・データをストアするステップを更に含み、前記リソース・データが前記新しいサーバにおいて利用可能な少なくとも１つのサービスを記述する、請求項９に記載の方法。
【請求項１４】
前出の方法の請求項のいずれかによる方法の全てのステップを実行するために適合された手段を含むシステム。
【請求項１５】
コンピュータ・システム上で実行された場合に前出の方法の請求項のいずれかによる方法の全てのステップを実行するための命令を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一実施形態は、コンピュータに関する。具体的には、本発明の一実施形態は、一般に、ネットワークを介して接続されるコンピュータ・システムのクラスタに関する。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発は、コンピュータ時代の幕開けと言われることが多い。それ以来、コンピュータ・システムは極めて洗練されたデバイスへと進化しており、コンピュータ・システムは多くの異なる環境において見出すことができる。コンピュータ・システムは通常、半導体および回路基板等のハードウェアと、コンピュータ・プログラムとしても知られるソフトウェアとの組み合わせを含む。半導体処理およびコンピュータ・アーキテクチャの向上によってコンピュータ・ハードウェアの性能がいっそう高度になるにつれて、このハードウェアの高性能を利用するようなもっと洗練された複雑なコンピュータ・ソフトウェアが現れ、結果として、今日のコンピュータ・システムはわずか数年前のものよりもずっと強力となっている。
【０００３】
何年か前には、コンピュータは相互に通信を行わないスタンドアローンのデバイスであったが、今日、コンピュータはネットワーク内での接続がますます行われるようになっており、クライアントと呼ばれる１つのコンピュータが、サーバと呼ばれる別のコンピュータに対して動作を実行するように要求することができる。インターネットの発展に伴って、このクライアント／サーバ・モデルは、オンライン・オークション会社、株取引、銀行業務、商取引、ならびに情報ストレージおよび検索等のオンラインでのビジネスおよびサービスにおいていっそう用いられるようになっている。
【０００４】
クライアントからの要求を処理するサーバは、ネットワークを介して接続されたクラスタの形に組織化されていることが多い。クラスタ内の安定したサーバ状態が理想的であり、この状態では、クラスタ内に存在するサーバならびにこれらのサーバ上で利用可能なデータおよびサービスが、既知であると共に一定している。安定したサーバ状態によって、サーバが利用可能になった直後にクライアント要求はサーバを用いることができるので、クライアント要求はエラーを経験しない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
安定したサーバ状態とは対照的に、サーバのクラスタは、乱れた（turbulent）サーバ状態で存在する場合がある。乱れたサーバ状態は、以下の要因によって起こり得る。すなわち、クラスタに対するサーバの動的な追加および削除、サーバに対するデータ・アイテムおよびサーバの動的な追加および削除、クラスタ内のサーバの起動、およびサーバの故障である。乱れたサーバ状態によって、クラスタ内の正しいサーバを見出してクライアントからの要求を処理する際に問題が生じる。なぜなら、サーバならびにそれらのデータおよびサービスを識別するルーティング情報が失効する（stale）からである。失効したルーティング情報により、クライアント要求はエラーを経験する恐れがある。例えば、失効したルーティング情報によって、クライアント要求が、データまたはサービスがもはや利用可能でないサーバにルーティングされる（遅すぎる）ことがあったり、クライアント要求が、新しいデータまたは新しいサービスがまだ要求を処理する準備ができていないサーバにルーティングされる（早すぎる）ことがあったりする。従って、一般的に乱れたサーバ状態によって生じる失効ルーティング情報は、クライアントにおけるカスタマの満足度に影響を与える。
【０００６】
乱れたサーバ状態およびその結果として生じる失効ルーティング情報に対処しようとする１つの現在の手法は、公示アプローチ（bulletin approach）と呼ばれるものである。公示アプローチにおいては、クラスタ内の１つのサーバをコーディネータに指定し、クラスタ内の全サーバがそれらのルーティング情報をコーディネータに送信し、全クライアントがコーディネータからクラスタ内のサーバのルーティング情報を検索する。コーディネータがクラスタから除去されるか、またはエラーを経験すると、新しいコーディネータが選択され、全サーバがそのルーティング情報を新しいコーディネータに再記入する。従って、公示アプローチでは追加のネットワーク・トラヒックが生じ、これは性能およびカスタマ満足度に悪い影響を与える。
【０００７】
従って、ルーティング情報を調整するためのもっと優れた技法が必要とされている。
【課題を解決するための手段】
【０００８】
本発明は、請求項１に記載したように、受信サーバにおいて実行される方法を提供する。
【０００９】
また、本発明は、請求項９に記載したように、新しいサーバにおいて実行される対応する方法を提供する。
【００１０】
また、対応するシステムおよびコンピュータ・プログラムも提供する。
【００１１】
このように、ネットワーク・トラヒックを低減しつつ、クラスタは、このクラスタに動的に加入したり脱退したりするサーバに応答することができる。
【００１２】
添付図面に関連付けて、本発明の様々な実施形態について以下に説明する。
【００１３】
しかしながら、添付図面は本発明の例示的な実施形態を表すだけであり、従ってその範囲を限定するとは見なされないことに留意すべきである。本発明は、他の等しく効果的な実施形態を認めることができるからである。
【発明を実施するための最良の形態】
【００１４】
図面を参照すると、いくつかの図面を通して、同様の番号は同様の部分を示している。図１は、本発明の一実施形態に従った、ネットワーク１３０に接続されたサーバ・コンピュータ・システム１００の高レベルのブロック図を示す。「コンピュータ・システム」および「サーバ」という言葉は便宜上用いるだけであり、様々な実施形態においてあらゆる適切な電子デバイスを使用可能である。様々な実施形態においては、コンピュータ・システム１００はクライアントまたはサーバのいずれかとして動作することができ、ある状況においてクライアントとして動作するコンピュータ・システムまたは電子デバイスが、別の状況ではサーバとして動作する場合もある。サーバ・コンピュータ・システム１００の主要コンポーネントは、１つ以上のプロセッサ１０１、主メモリ１０２、端末インタフェース１１１、ストレージ・インタフェース１１２、Ｉ／Ｏ（入出力）デバイス・インタフェース１１３、および通信／ネットワーク・インタフェース１１４を含み、これらは全て、メモリ・バス１０３、Ｉ／Ｏバス１０４、およびＩ／Ｏバス・インタフェース・ユニット１０５を介してコンポーネント間の通信を行うように結合されている。
【００１５】
サーバ・コンピュータ・システム１００は、１つ以上の汎用プログラマブル中央演算処理装置（ＣＰＵ）１０１Ａ、１０１Ｂ、１０１Ｃ、および１０１Ｄを含み、本発明においてはこれらを総称してプロセッサ１０１と呼ぶ。一実施形態において、コンピュータ・システム１００は、比較的大きいシステムに特有の多数のプロセッサを含む。しかしながら、別の実施形態においては、コンピュータ・システム１００を単一ＣＰＵシステムとすることも可能である。各プロセッサ１０１は、主メモリ１０２にストアされた命令を実行し、１つ以上のレベルのオンボード・キャッシュを含む場合がある。
【００１６】
主メモリ１０２は、データおよびプログラムをストアするためのランダム・アクセス半導体メモリである。主メモリ１０２は、概念的には単一のモノリシック・エンティティであるが、他の実施形態においては、主メモリ１０２は、階層キャッシュおよび他のメモリ・デバイス等のもっと複雑な構成である。例えば、メモリは、多レベルのキャッシュで存在することができ、これらのキャッシュを更に機能によって分割して、１つのキャッシュが命令を保持する一方で、他のキャッシュは、プロセッサまたは複数のプロセッサが用いる非命令データを保持するようにすることができる。メモリは、更に、異なるＣＰＵまたは複数組のＣＰＵに分散させて関連付けることも可能である。これは、様々ないわゆる不均等メモリ・アクセス（ＮＵＭＡ：non-uniform memory access）・コンピュータ・アーキテクチャのいずれにおいても既知である。
【００１７】
主メモリ１０２は、コントローラ１５８およびサービス１５９を含む。コントローラ１５８およびサービス１５９は、コンピュータ・システム１００においてメモリ１０２内に含まれるものとして図示しているが、他の実施形態では、それらの一部または全てが異なるコンピュータ・システム上にあって、例えばネットワーク１３０を介してリモート・アクセスされる場合がある。コンピュータ・システム１００は、仮想アドレッシング機構を用いることができる。これによって、コンピュータ・システム１００のプログラムは、多数の小さいストレージ・エンティティにアクセスする代わりに、単一の大きいストレージ・エンティティにのみアクセスを有するかのように動作することができる。従って、コントローラ１５８およびサービス１５９は主メモリ１０２内に含まれるように図示しているが、これらの要素は必ずしも全て同時に同一の物理的ストレージ・デバイス内に完全に含まれるわけではない。更に、コントローラ１５８およびサービス１５９は別個のエンティティとして図示しているが、他の実施形態においては、それらのいくつかまたはそれらのいくつかの一部をひとまとめにすることも可能である。
【００１８】
一実施形態において、コントローラ１５８は、プロセッサ１０１上で実行可能なメモリ１０２にストアされた命令、または、プロセッサ１０１上で実行する命令によって解釈可能なステートメントを含み、以下で図６、図７、図８、および図９を参照して更に詳細に述べるような機能を実行する。別の実施形態では、コントローラ１５８は、マイクロコードまたはファームウェアにおいて実現することができる。別の実施形態では、コントローラ１５８は、論理ゲートによるハードウェアにおいて、あるいは他の適切なハードウェア技法において、またはそれら両方で実現することができる。
【００１９】
コントローラ１５８は、ルーティング・データ１６０、時間ベース管理部１６２、健康状態聴取部１６４、情報合成部１６６、情報配信部１６７、およびポイント・ツー・ポイント送信部１６８を含む。時間ベース管理部１６２は、あるサーバがサーバ・クラスタに加入した時からの経過時間を算出する。健康状態聴取部１６４は、サーバ１００またはネットワーク１３０に関連したエラーを監視する。情報合成部１６６は、情報をルーティング・データ１６０にマージする。情報配信部１６７は、ブロードキャスト・メッセージをネットワーク１３０に送信する。ポイント・ツー・ポイント送信部１６８は、ポイント・ツー・ポイント・メッセージをネットワーク１３０に接続されたサーバに送信する。ルーティング・データ１６０は、ネットワーク１３０に接続されたサーバ１００を記述する。ルーティング・データ１６０については、以下で図５を参照して更に詳細に説明する。
【００２０】
サービス１５９は、サーバ１００において利用可能なサービス、機能、または方法であり、様々な実施形態においては、アプリケーション、ユーザ・アプリケーション、サードパーティ・アプリケーション、アプリケーション・サーバ、オペレーティング・システム、他のいずれかのサービス、またはそれらの一部もしくは組み合わせとすることができる。
【００２１】
メモリ・バス１０３は、プロセッサ１０１、主メモリ１０２、およびＩ／Ｏバス・インタフェース・ユニット１０５間でデータを転送するためのデータ通信経路を提供する。Ｉ／Ｏバス・インタフェース・ユニット１０５は、更に、様々なＩ／Ｏユニットとの間でデータを転送するために、システムＩ／Ｏバス１０４に結合されている。Ｉ／Ｏバス・インタフェース・ユニット１０５は、システムＩ／Ｏバス１０４を介して、多数のＩ／Ｏインタフェース・ユニット１１１、１１２、１１３、および１１４と通信を行う。これらは、Ｉ／Ｏプロセッサ（ＩＯＰ）またはＩ／Ｏアダプタ（ＩＯＡ）としても既知である。システムＩ／Ｏバス１０４は、例えば、業界標準のＰＣＩバスまたは他のいずれかの適切なバス技術とすることができる。
【００２２】
Ｉ／Ｏインタフェース・ユニットは、様々なストレージおよびＩ／Ｏデバイスとの通信をサポートする。例えば、端末インタフェース・ユニット１１１は、１つ以上のユーザ端末１２１、１２２、１２３、および１２４の接続をサポートする。ストレージ・インタフェース・ユニット１１２は、１つ以上のダイレクト・アクセス・ストレージ・デバイス（ＤＡＳＤ：direct access storage device）１２５、１２６、および１２７（これらは典型的には回転磁気ディスク・ドライブ・ストレージ・デバイスであるが、これ以外に、ホストに対して単一の大きいストレージ・デバイスに見えるように構成されたディスク・ドライブ・アレイを含む他のデバイスとすることも可能である）の接続をサポートする。主メモリ１０２の内容は、ダイレクト・アクセス・ストレージ・デバイス１２５、１２６、および１２８にストアし、これらから検索することができる。
【００２３】
Ｉ／Ｏデバイス・インタフェース１１３は、様々な他の入出力デバイスまたは他のタイプのデバイスのいずれかに対するインタフェースを提供する。図１の例示的な実施形態では、かかるデバイスの２つすなわちプリンタ１２８およびファックス機械１２９を図示するが、他の実施形態においては、他の多くのそのようなデバイスが存在する場合があり、これらは異なるタイプである場合もある。ネットワーク・インタフェース１１４は、コンピュータ・システム１００から他のデジタル・デバイスおよびコンピュータ・システムへの１つ以上の通信経路を提供する。かかる経路は、例えば１つ以上のネットワーク１３０を含むことができる。
【００２４】
図１において、メモリ・バス１０３は、比較的単純な単一のバス構造として図示し、プロセッサ１０１、主メモリ１０２、およびＩ／Ｏバス・インタフェース１０５間の直接通信経路を与えるが、実際には、メモリ・バス１０３は、多数の異なるバスまたは通信経路を含む場合があり、これらは、階層的、星型、またはウェブ構成におけるポイント・ツー・ポイント・リンク、多階層バス、並列および冗長経路等、様々な形態のいずれかに構成することができる。更に、Ｉ／Ｏバス・インタフェース１０５およびＩ／Ｏバス１０４はそれぞれ単一のユニットとして示すが、実際にはコンピュータ・システム１００は、多数のＩ／Ｏバス・インタフェース・ユニット１０５あるいは多数のＩ／Ｏバス１０４またはそれら両方を含むことができる。多数のＩ／Ｏインタフェース・ユニット図示し、これらはシステムＩ／Ｏバス１０４を様々なＩ／Ｏデバイスへと至る様々な通信経路から分離するが、他の実施形態では、Ｉ／Ｏデバイスの一部または全てが、１つ以上のシステムＩ／Ｏバスに直接接続される。
【００２５】
図１に示すコンピュータ・システム１００は、多数の端末１２１、１２２、１２３、および１２４が接続されており、これはマルチ・ユーザ「メインフレーム」コンピュータ・システムに特有である場合があるもの等である。通常、かかる場合、接続されたデバイスの実際の数は図１に示すものよりも多いが、本発明はいずれかの特定サイズのシステムには限定されない。あるいは、コンピュータ・システム１００は、典型的に一つのみのユーザ・ディスプレイおよびキーボード入力を含む単一ユーザ・システムとすることも可能であり、または、直接ユーザ・インタフェースをほとんどまたは全く有しないが他のコンピュータ・システム（クライアント）から要求を受信するサーバまたは同様のデバイスとすることも可能である。他の実施形態においては、コンピュータ・システム１００は、パーソナル・コンピュータ、ポータブル・コンピュータ、ラップトップまたはノードブック・コンピュータ、ＰＤＡ（パーソナル・デジタル・アシスタント）、タブレット・コンピュータ、ポケット・コンピュータ、電話、ページャ、自動車、遠隔会議システム、器具、または他のいずれかの適切なタイプの電子デバイスとして実現することができる。
【００２６】
ネットワーク１３０は、いずれかの適切なネットワークまたはネットワークの組み合わせとすることができ、コンピュータ・システム１００との間のデータあるいはコードまたはそれら両方の通信に適したいずれかの適切なプロトコルをサポートすれば良い。様々な実施形態において、ネットワーク１３０は、コンピュータ・システム１００に対して直接的または間接的のいずれかで接続されたストレージ・デバイスまたはストレージ・デバイスの組み合わせを表すことができる。ある実施形態において、ネットワーク１０３はインフィニバンド（Infiniband）をサポートすることができる。別の実施形態では、ネットワーク１３０は無線通信をサポートすることができる。別の実施形態では、ネットワーク１３０は、電話線またはケーブル等のハードワイヤード通信をサポートすることができる。別の実施形態においては、ネットワーク１３０は、イーサネット（登録商標）ＩＥＥＥ（Institute of Electrical and Electronics Engineers）８０２．３ｘ仕様をサポートすることができる。別の実施形態では、ネットワーク１３０は、インターネットとすることができ、ＩＰ（インターネット・プロトコル）をサポートすることができる。別の実施形態では、ネットワーク１３０は、ロカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）とすることができる。別の実施形態では、ネットワーク１３０は、ホットスポット・サービス・プロバイダ・ネットワークとすることができる。別の実施形態では、ネットワーク１３０はイントラネットとすることができる。別の実施形態では、ネットワーク１３０は、ＧＰＲＳ（General Packet Radio Service）ネットワークとすることができる。別の実施形態では、ネットワーク１３０は、ＦＲＳ（Family Radio Service）ネットワークとすることができる。別の実施形態では、ネットワーク１３０は、いずれかの適切なセル式データ・ネットワークまたはセル・ベースの無線ネットワーク技術とすることができる。別の実施形態では、ネットワーク１３０は、ＩＥＥＥ８０２．１１Ｂ無線ネットワークとすることができる。更に別の実施形態では、ネットワーク１３０は、いずれかの適切なネットワークまたはネットワークの組み合わせとすることができる。１つのネットワーク１３０を図示するが、他の実施形態では、（同一または異なるタイプの）いかなる数のネットワークも存在することができる。
【００２７】
図１は、コンピュータ・システム１００およびネットワーク１３０の代表的な主要コンポーネントを高レベルで示すように意図されており、個々のコンポーネントは図１に示すよりも複雑である場合があり、図１に示すもの以外のコンポーネントまたは図１に示すものに追加されたコンポーネントが存在することがあり、かかるコンポーネントの数、種類、および構成は様々である場合があることは理解されよう。かかる付加的な複雑さまたは付加的な変形のいくつかの具体例を本発明において開示するが、これらは一例に過ぎず、必ずしもかかる変形のみでないことは理解されよう。
【００２８】
図１に示した様々なソフトウェア・コンポーネントおよび本発明の様々な実施形態の実現は、様々なコンピュータ・ソフトウェア・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造等の使用を含む多数の方法で実現可能であり、これらを以下では「コンピュータ・プログラム」、または単に「プログラム」と称する。コンピュータ・プログラムは通常、１つ以上の命令またはステートメントを含み、これらは様々な時点でコンピュータ・システム１００内の様々なメモリおよびストレージ・デバイスに常駐し、コンピュータ・システム１００内の１つ以上のプロセッサによって読み出されて実行されると、本発明の実施形態の様々な態様を含むステップまたは要素を実行するために必要なステップをコンピュータ・システム１００に実行させる。
【００２９】
更に、本発明の実施形態について、完全に機能するコンピュータ・システムの状況において、これまでもこれ以降も説明を行うが、本発明の様々な実施形態は、様々な形態でプログラムとして分散させることができ、本発明は、この分散を実際に実行するために用いられる特定のタイプの信号担持媒体には無関係に、等しく適用される。この実施形態の機能を規定するプログラムは、様々な有形のコンピュータ記録可能および読み取り可能信号担持媒体を介してコンピュータ・システム１００に送出することができる。この媒体は以下のものを含むがこれらには限定されない。
（１）例えば、ＣＤ−ＲＯＭ、ＤＶＤ−Ｒ、またはＤＶＤ＋Ｒ等、コンピュータ・システムに接続されているかまたはコンピュータ・システム内のリード・オンリ・メモリ・デバイスのような、書き換え不可能なストレージ媒体上に永久的にストアされた情報、
（２）例えば、ハード・ディスク・ドライブ（例えばＤＡＳＤ１２５、１２６、または１２）、ＣＤ−ＲＷ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＤＶＤ−ＲＡＭ、またはディスケットのような、書き換え可能ストレージ媒体上にストアされた変更可能情報、または、  
（３）コンピュータまたは例えばネットワーク１３０のような電話ネットワークを介して等、通信媒体によって伝達される情報。
【００３０】
かかる有形の信号担持媒体は、本発明の機能を指示する機械読み取り可能命令を担持し、本発明の実施形態を表す。
【００３１】
また、本発明の実施形態は、クライアント企業、非営利組織、政府の組織体、内部組織構造等とのサービス契約の一部として配信することも可能である。これらの実施形態の態様は、本発明に記載する方法の一部または全てを実行するようにコンピュータ・システムを構成すること、ならびに本発明に記載する方法の一部または全てを実施するソフトウェア・システムおよびウェブ・サービスを展開することを含むことができる。また、これらの実施形態の態様は、クライアント企業を分析すること、この分析に応答して提案を作成すること、提案の部分を実現するようにソフトウェアを発生させること、そのソフトウェアを既存のプロセスおよびインフラストラクチャに統合すること、本発明に記載された方法およびシステムの使用を計測すること、ユーザに費用を配分すること、これらの方法およびシステムの使用についてユーザに課金することを含む場合がある。更に、以下に記載する様々なプログラムは、それらを本発明の特定の実施形態において実現する用途に基づいて識別することができる。しかしながら、以下のいかなる具体的なプログラム専門用語も便宜のために用いるだけであり、従って、本発明の実施形態は、かかる専門用語が識別あるいは示唆するまたはそれら両方であるいずれかの特定の用途においてのみ用いることに限定されるものではない。
【００３２】
図１に示す例示的な環境は、本発明を限定することを意図していない。実際、本発明の範囲から逸脱することなく、他の代替的なハードウェア環境あるいはソフトウェア環境またはそれら両方を用いることができる。
【００３３】
図２は、本発明の一実施形態に従った、例示的なサーバ１００のクラスタ２０２のブロック図を示す。クラスタ２０２は、パーティションまたはグループとしても知られている場合がある。いかなる数のサーバ１００もクラスタ２０２にまとめることができ、いかなる数のクラスタも存在することができる。クラスタ２０２内のサーバ１００は、サービス１５９を用いる要求を相互に（図１のネットワーク１３０を介して）送信することができる。サーバ１００のいずれもクライアントとして機能することができる。
【００３４】
図３は、本発明の一実施形態に従った、サーバ１００−１、１００−２、１００−３、１００−４、および１００−５を含むクラスタ２０２−１に新しいサーバ１００−６が加入する例を示すブロック図である。サーバ１００（図１）は、サーバ１００−１、１００−２、１００−３、１００−４、１００−５、および１００−６を総称したものである。クラスタ２０２（図２）は、クラスタ２０２−１を一般的に呼ぶものである。サーバ１００−１、１００−２、１００−３、１００−４、１００−５、および１００−６は、ネットワーク１３０を介して接続されている。
【００３５】
サーバ１００−１は、クラスタ２０２−１内の最も古いサーバである。これは、サーバ１００−１がクラスタ２０２−１内に最も長く存在し、クラスタ２０２−１の最初のメンバであり、従って、サーバ１００−２、１００−３、１００−４、１００−５、および１００−６がクラスタ２０２−１に加入する前の時点でクラスタ２０２−１に加入したことを意味する。サーバ１００がクラスタ２０２−１を脱退したり加入したりすると、最も古いサーバ１００−１の指定は変化する場合がある。サーバ１００−１、１００−２、１００−３、１００−４、および１００−５は、クラスタ２０２−１の既存のメンバである。これは、これらがネットワーク１３０にすでに接続され、最も古いサーバ１００−１からクラスタ２０２−１内の様々なサーバおよび利用可能サービス１５０を識別するルーティング・データ１６０を以前に受信したことを意味する。
【００３６】
サーバ１００−６は、クラスタ２０２−１内の新しいサーバであり、これは、他のサーバ１００−１、１００−２、１００−３、１００−４、および１００−５の後にクラスタ２０２−１に加入していることを意味する。新しいサーバ１００−６がネットワーク１３０に接続したことに応答して、新しいサーバ１００−６は、ネットワーク１３０を介してクラスタ２０２−１にブロードキャスト・メッセージ２０５を送信する。このメッセージは、新しいサーバ１００−６を識別するレコードを含み、新しいサーバ１００−６および新しいサーバ１００−６において利用可能なサービス１５９に関する情報を含む。ブロードキャスト・メッセージングにおいて、クラスタ２０２−１内のサーバ全てに同一のメッセージ２０５を送信し、新しいサーバ１００−６は、受信側のサーバ１００−１、１００−２、１００−３、１００−４、および１００−５のネットワーク・アドレスを知る必要はない。代わりに、新しいサーバ１００−６は、ブロードキャスト・メッセージ２０５をクラスタ２０２−１のアドレスに送信し、ネットワーク１３０は、このブロードキャスト・メッセージ２０５を、クラスタ２０２−１内のサーバ１００−１、１００−２、１００−３、１００−４、および１００−５の各々に送信する。ブロードキャスト・メッセージングは、マルチキャスティングとも呼ばれる。
【００３７】
ブロードキャスト・メッセージ２０５は、ネットワーク１３０に接続されているサーバ１００−１、１００−２、１００−３、１００−４、および１００−５の全てによって受信される。ブロードキャスト・メッセージ２０５の受信に応答して、最も古いサーバ１００−１は、受信したレコードをそのルーティング・データ１６０のコピーに追加し、ポイント・ツー・ポイント・メッセージ２１０を新しいサーバ１００−６に送信する。このメッセージは、クラスタ２０２−１内のサーバ１００−１、１００−２、１００−３、１００−４、および１００−５の全てを表すグローバル・リソース・データ１６０を含む。最も古いサーバ１００−１は、ポイント・ツー・ポイント・メッセージ２１０を排他的に新しいサーバ１００−６に送信する。これは、最も古いサーバ１００−１が、ポイント・ツー・ポイント・メッセージ２１０を、他のサーバ１００−２、１００−３、１００−４、および１００−５には送信しないことを意味する。ポイント・ツー・ポイント・メッセージは、ユニキャスト（unicast）・メッセージとも呼ばれる。ブロードキャスト・メッセージ２０５の受信に応答して、サーバ１００−２、１００−３、１００−４、および１００−５は、受信したレコードをそれらのルーティング・データ１６０の各コピーに追加するが、各ルーティング・データを新しいサーバ１００−６に送信する必要はない。なぜなら、最も古いサーバ１００−１が単一のポイント・ツー・ポイント・メッセージ２１０によって応答しており、これがクラスタ２０２−１内のサーバ全てを表すルーティング・データ１６０を含むからである。
【００３８】
図４は、本発明の一実施形態に従った、クラスタ２０２−２および２０２−３の統合の一例を示すブロック図である。クラスタ２０２−２は、サーバ１００−７、１００−８、および１００−９を含む。クラスタ２０２−３は、サーバ１００−１０、１００−１１、および１００−１２を含む。サーバ１００（図１）は、サーバ１００−７、１００−８、１００−９、１００−１０、１００−１１、および１００−１２を総称したものである。クラスタ２０２（図２）は、クラスタ２０２−２および２０２−３を総称したものである。一実施形態において、クラスタ２０２−２および２０２−３は、以前に１つのクラスタ２０２として接続されていたが、相互の接続を失い、別々に分かれ、この時点で再び接続されている。切断されたことの結果として、失われたクラスタ内のサーバのレコードはルーティング・データ１６０から削除された。これについては、以下で図９を参照して更に詳しく述べる。別の実施形態においては、クラスタ２０２−２および２０２０３は以前に接続されていないが、この時点で接続されている。
【００３９】
クラスタ２０２−２内の最も古いサーバ１００−７がクラスタ２０２−３に対する接続（または再接続）を検出したことに応答して、最も古いサーバ１００−７は、ブロードキャスト・メッセージ３０５をクラスタ２０２−３内のサーバ１００−１０、１００−１１、および１００−１２全てに送信する。クラスタ２０２−２内のサーバ１００−８および１００−９はクラスタ２０２−３に対する接続を検出することができるが、それらはブロードキャスト・メッセージ３０５を送信しない。なぜなら、それらはクラスタ２０２−２内で最も古いサーバでないからである。ブロードキャスト・メッセージ３０５は、クラスタ２０２−２内の全てのサーバ１００−７、１００−８、および１００−９についてのルーティング・データ１６０−２内の全てのレコードを含む。
【００４０】
ブロードキャスト・メッセージ３０５の受信に応答して、受信側のサーバ１００−１１および１００−１２は、ブロードキャスト・メッセージ３０５からそれらのルーティング・データ１６０−３の各コピーにルーティング・データ１６０−２のレコードを追加するが、それらは応答は行わない。なぜなら、それらはクラスタ２０２−３内の最も古いサーバでないからである。ブロードキャスト・メッセージ３０５の受信に応答して、受信側のサーバ１００−１０は、そのルーティング・データ１６０−３のコピーを調べることによって、それがクラスタ２０２−３内の最も古いサーバであることを判定し、ポイント・ツー・ポイント・メッセージ３１０をクラスタ２０２−２内の最も古いサーバ１００−７に送信する。ポイント・ツー・ポイント・メッセージ３１０は、クラスタ２０２−３内の全てのサーバ１００−１０、１００−１１、および１００−１２についてのルーティング・データ１６０−３内の全てのレコードを含む。
【００４１】
ポイント・ツー・ポイント・メッセージ３１０の受信に応答して、最も古いサーバ１００−７は次いで、クラスタ２０２−２内のサーバ１００−８および１００−９にブロードキャスト・メッセージ３１５を送信する。このメッセージは、受信したルーティング・データ１６０−３からのレコードを含む。クラスタ２０２−２内の受信側サーバ１００−８および１００−９は、受信したルーティング・データ１６０−３からのレコードをそれらのルーティング・データ１６０−２のコピーに追加する。次いで、クラスタ２０２−２内の最も古いサーバ１００−７は、受信したルーティング・データ１６０−３からそのルーティング・データ１６０−２のコピーにレコードを追加する。クラスタ２０２−２および２０２−３はここで単一のクラスタにマージされ、新しい単一のクラスタ内の最も古いサーバは、マージされたルーティング・データ１６０−２および１６０−３に示される通り、サーバ１００−７および１００−１１のうち古い方である。
【００４２】
図５は、本発明の一実施形態に従った、ルーティング・データ１６０の例示的なデータ構造のブロック図を示す。ルーティング・データ１６０はレコード４０５、４１０、および４１５を含むが、他の実施形態において、いかなる適切なデータによるいかなる数のレコードも存在することができる。レコード４０５、４１０、および４１５の各々は、サーバ識別フィールド４２０、リソース・データ・フィールド４２５、およびタイムスタンプ・フィールド４３０を含むが、他の実施形態では、存在するフィールドがもっと多いかまたは少ない場合もある。
【００４３】
サーバ識別フィールド４２０は、レコードに関連付けられたサーバ１００を識別する。様々な実施形態において、サーバ識別フィールド４２０は、ネットワーク・アドレス、ＩＰ（インターネット・プロトコル）・アドレス、ＭＡＣ（Media Access Control）アドレス、または、サーバ１００にアクセスするかメッセージ、要求、もしくはデータを送信するために用いることができる他のいずれかのタイプの識別子を含むことができる。
【００４４】
様々な実施形態において、リソース・データ４２５は、サーバ１００におけるリソースまたはサービス１５９のリソース識別子、サーバ１００におけるリソースまたはサービス１５９のステータス、サービス１５９の内容、サービス１５９における待ち状態の要求の数または種類、サーバ１００におけるプロセッサ１０１のＣＰＵ利用、サーバ１００のメモリ使用、および終点を含むことができる。しかしながら、他の実施形態において、リソース・データ４２５は、他のサーバが受信したいと望み得るいかなる適切なデータも含むことができる。
【００４５】
タイムスタンプ・フィールド４３０は、関連するサーバ４２０がクラスタに加入した時点を識別する。サーバ４２０がクラスタに加入した時点は、サーバ４２０がネットワークに接続した時点、またはサーバ４２０がブロードキャスト・メッセージ２０５を送信した時点とすれば良い。従って、図５の例では、レコード４０５は最も早いタイムスタンプ４３０を有するので、これはクラスタ内の最も古いサーバを識別する。
【００４６】
図６は、本発明の一実施形態に従って、新しいサーバがクラスタに加入するための例示的な処理のフローチャートを示す。制御はブロック５００において開始する。次いで制御はブロック５０５に移り、新しいサーバ１００−６がネットワーク１３０に接続し、クラスタ２０２−１のアドレスを求める。次いで制御はブロック５１０に移り、新しいサーバ１００−６におけるコントローラ１５８は、新しいサーバ１００−６を識別するサーバ識別４２０、新しいサーバ１００−６において利用可能なサービス１５９に関するリソース・データ４２５、および現在の時刻（日付を含む場合がある）を識別するタイムスタンプ４３０を有するレコードを作成する。
【００４７】
次いで制御はブロック５１５に移り、新しいサーバ１００−６におけるコントローラ１５８は、ネットワーク１３０において求めたクラスタ２０２−１のアドレスによって、作成したレコードを含むブロードキャスト・メッセージ２０５をクラスタ２０２−１内の全てのサーバ１００に送信する。次いで制御はブロック５２０に移り、クラスタ２０２−１内のサーバ１００はブロードキャスト・メッセージ２０５を受信して処理する。これについては、以下で図９を参照して更に詳しく述べる。
【００４８】
次いで制御はブロック５２５に移り、新しいサーバ１００−６におけるコントローラ１５８は、クラスタ２０２−１内の全てのサーバ１００についてのレコードを含むルーティング・データ１６０を有するポイント・ツー・ポイント・メッセージ２１０を受信する。ポイント・ツー・ポイント・メッセージは、クラスタ２０２−１内の最も古いサーバ１００−１によって送信され、排他的に新しいサーバ１００−６に送信されるが、クラスタ２０２−１内の他のサーバ１００−２、１００−３、１００−４、および１００−５には送信されない。
【００４９】
次いで制御はブロック５３０に移り、新しいサーバ１００−６におけるコントローラ１５８は、ルーティング・データ１６０によって、ネットワーク１３０のクラスタ２０２−１内の他のサーバにおけるサービス１５９に対する要求を送信する。コントローラ１５８は、ルーティング・データ１６０を用いて、リソース・データ４２５内で適切なサービスを見出し、所望の適切なサーバに関連したサーバ識別子４２０を求め、次いで求めたサーバ識別子４２０に要求を送信することができる。従って、コントローラ１５８は、受信したルーティング・データ１６０によって、クラスタ２０２内のサーバ１００の１つ以上から１つ以上のサービス１５９を要求する。
【００５０】
次いで制御はブロック５９９に移り、図６の論理に戻る。
【００５１】
図７は、本発明の一実施形態に従った、サーバのクラスタを接続するための例示的な処理のフローチャートを示す。制御はブロック６００において開始する。次いで制御はブロック６０５に移り、クラスタ２０２−２内のサーバ１００におけるコントローラ１５８がクラスタ２０２−３に接続する。次いで制御はブロック６１０に移り、サーバ１００におけるコントローラ１５８は、サーバ１００がクラスタ２０２−２内で最も古いサーバ１００−７であるか否かを判定する。すなわち、コントローラ１５８は、クラスタ２０２−３にサーバ１００が接続した時刻４３０がルーティング・データ１６０−２における他の全てのサーバの時刻４３０よりも前すなわち早いか否かを判定することによって、クラスタ２０２−２内の他の全てのサーバよりも前にサーバ１００がクラスタ２０２−２に加入したか否かを判定する。
【００５２】
ブロック６１０における判定が真である場合、クラスタ２０２−３に接続したサーバ１００は、クラスタ２０２−２内の他の全てのサーバよりも前にクラスタ２０２−２に加入しており、クラスタ２０２−２内の最も古いサーバ１００−７であるので、制御はブロック６１５に移り、最も古いサーバ１００−７におけるコントローラ１５８はブロードキャスト・メッセージ３０５をクラスタ２０２−３に送信する。ブロードキャスト・メッセージ３０５は、クラスタ２０２−２内の全てのサーバ１００−７、１００−８、および１００−９についてのルーティング・データ１６０−２内の全レコードを含む。
【００５３】
次いで制御はブロック６２０に移り、クラスタ２０２−３内のサーバがブロードキャスト・メッセージ３０５を処理する。これについては図８を参照して以下で更に詳細に述べる。次いで制御はブロック６２５に移り、クラスタ２０２−２内の最も古いサーバ１００−７におけるコントローラ１５８はクラスタ２０２−３内の最も古いサーバ１００−１０からポイント・ツー・ポイント・メッセージ３１０を受信する。これは、クラスタ２０２−３内の全てのサーバ１００−１０、１００−１１、および１００−１２についてのルーティング・データ１６０−３内の全レコードを含む。
【００５４】
次いで制御はブロック６３０に移り、クラスタ２０２−２内の最も古いサーバ１００−７におけるコントローラ１５８は、ブロードキャスト・メッセージ３１５をクラスタ２０２−２内の全てのサーバ１００−８および１００−９に送信する。ブロードキャスト・メッセージ３１５は、クラスタ２０２−３内の全てのサーバ１００−１０、１００−１１、および１００−１２についてのルーティング・データ１６０−３内の全レコードを含む。制御は次いでブロック６３５に移り、クラスタ２０２−２内のサーバはブロードキャスト・メッセージを受信し、それらのルーティング・データ１６０−３および１６０−２のコピーをマージし、マージしたルーティング・データを介してクラスタ２０２−２および２０２−３内のサーバに要求を送信する。これについては図８を参照して以下で更に詳細に述べる。制御は次いでブロック６４０に移り、クラスタ２０２−２内の最も古いサーバ１００−７におけるコントローラ１５８はそのルーティング・データ１６０−３および１６０−２のコピーをマージし、マージしたルーティング・データを介してクラスタ２０２−２および２０２−３におけるサーバに要求を送信する。次いで制御はブロック６９９に移り、図７の論理が戻る。
【００５５】
ブロック６１０における判定が偽である場合、クラスタ２０２−３に接続したクラスタ２０２−２内のサーバ１００は、クラスタ２０２−２内の他の全てのサーバの前にクラスタ２０２−２に加入しておらず、このため、クラスタ２０２−３に接続したサーバ１００はサーバ１００−８または１００−９であるので、制御はブロック６９９に移り、図７の論理が戻る。
【００５６】
図８は、本発明の一実施形態に従った、ブロードキャスト・メッセージの受信を処理するためのサーバにおける例示的な処理のフローチャートを示す。制御はブロック７００において開始する。制御は次いでブロック７０５に移り、受信側サーバにおけるコントローラ１５８は、発信側サーバ（ブロードキャスト・メッセージを送信したサーバ）からブロードキャスト・メッセージを受信する（例えばブロードキャスト・メッセージ２０５、３０５、または３１５）。受信されたブロードキャスト・メッセージは、１つ以上のレコード４０５、４１０、または４１５を含み、これらは発信側サーバに関連付けられているか、またはクラスタ２０２内の全てのサーバに関連付けられている。
【００５７】
次いで制御はブロック７１０に移り、コントローラ１５８は、受信側サーバがルーティング・データ１６０のローカル・コピーにおいて最も古いサーバであるか否かを判定する。コントローラ１５８は、この判定を行うために、受信側サーバに関連付けられたルーティング・データ１６０のレコード内のタイムスタンプ４３０を、ルーティング・データ１６０内の他のレコードのタイムスタンプ４３０と比較し、更に、受信側サーバがクラスタ２０２に加入した時刻４３０が、他のサーバがクラスタ２０２に加入した時刻４３０よりも早いか否かを判定する。
【００５８】
受信側サーバのタイムスタンプ４３０がクラスタ２０２のルーティング・データ１６０における最も早い時刻（他の全ての時刻よりも前）である場合、受信側サーバはクラスタ２０２内の最も古いサーバ（例えばサーバ１００−１、１００−７、または１００−１０）であるので、制御は続いてブロック７１５に移り、受信側サーバにおけるコントローラ１５８は、クラスタ２０２内の全サーバについてルーティング・データ１６０のそのローカル・コピーからレコードを検索し、受信したレコードをポイント・ツー・ポイント・メッセージに追加し、ポイント・ツー・ポイント・メッセージ（例えばポイント・ツー・ポイント・メッセージ２１０または３１０）を、ブロードキャスト・メッセージを発信したサーバ（例えばサーバ１００−６または１００−７）に送信する。
【００５９】
次いで制御はブロック７２０に移り、受信側サーバにおけるコントローラ１５８は、デルタ＝（ｔ１＋ｔ３）／２−ｔ２を計算する。ここで、
ｔ２＝ブロードキャスト・メッセージの到着時刻である。
ｔ１＝発信側サーバに関連付けられたブロードキャスト・メッセージにおける受信レコード内のタイムスタンプ４３０である、これは、ブロードキャスト・メッセージの発信側サーバがクラスタ２０２に加入した時刻である。
ｔ３＝受信側サーバがポイント・ツー・ポイント・メッセージを発信側サーバに送信した時刻である（ブロック７１５を参照して前述した）。
【００６０】
次いで制御はブロック７２５に移り、受信側サーバにおけるコントローラ１５８は、計算したデルタを、ブロードキャスト・メッセージを発信したサーバに関連付けられた受信レコード内のタイムスタンプ４３０に追加する。従って、受信側サーバにおけるコントローラ１５８は、算出したデルタによって発信側サーバがクラスタ２０２に加入した時刻を調節して、発信側サーバがクラスタに加入することを決定した時刻とクラスタ２０２内の最も古いサーバが発信側サーバのクラスタ２０２への加入を認識した時刻との間の遅延を考慮に入れる。
【００６１】
次いで制御はブロック７３０に移り、受信側サーバにおけるコントローラ１５８は、往復のタイミング・データを蓄積し、計算したデータをもっと多くの動作によって調節する。
【００６２】
次いで制御はブロック７３５に移り、受信側サーバにおけるコントローラ１５８は、ブロードキャスト・メッセージにおいて受信したレコードをルーティング・データ１６０に追加し、タイムスタンプ４３０に基づいてルーティング・データ１６０内のレコードをソートする。
【００６３】
次いで制御はブロック７４０に移り、受信側サーバにおけるコントローラ１５８は、リソース・データ４２５において識別された適切なサービス１５９を見つけ、関連するサーバ識別子４２０を介してクラスタ２０２内のサーバ１００におけるサービス１５９に要求を送信する。
【００６４】
ブロック７１０における判定が偽である場合、受信側サーバはルーティング・データ１６０のローカル・コピーにおける最も古いサーバでないので（すなわち、受信側サーバはクラスタ２０２内の他のサーバ１００よりも早い時刻にクラスタ２０２に加入していない）、制御はブロック７３５に移る。これについてはすでに述べた。
【００６５】
図９は、本発明の一実施形態に従った、サーバがネットワーク１３０を脱退することに応答した例示的な処理のフローチャートを示す。制御はブロック８００において開始する。次いで制御はブロック８０５に移り、コントローラ１５８は、サーバ１００がクラスタ２０２を脱退したか否か、例えば、サーバ１００がネットワーク１３０を脱退したか、エラーを経験したか、または到達不可能になったか否かを判定する。ブロック８０５における判定が真である場合、サーバ１００はクラスタ２０２を脱退したか、サーバ１００はネットワーク１３０を脱退したか、サーバ１００はエラーを経験したか、またはサーバは到達不可能であるので、制御はブロック８１０に移って、コントローラ１５８は、ブロック８０５において判定されたサーバ１００に関連付けたルーティング・データ１６０からサーバ識別子フィールド４２０を介してレコードを見つけ、このレコードをルーティング・データ１６０から除去する。次いで制御はブロック８９９に移り、図９の論理は戻る。
【００６６】
ブロック８０５における判定が偽である場合、制御は続いてブロック８９９に移り、図９の論理が戻る。
【００６７】
これまでの本発明の例示的な実施形態の詳細な説明において、添付図面（同様の番号は同様の要素を表す）を参照したが、図面はその一部を形成し、図面において、本発明を実施可能な具体的かつ例示的な実施形態を一例としてのみ示した。これらの実施形態を充分に詳しく記載して、当業者が本発明を実施することを可能としたが、他の実施形態も利用可能であり、本発明の範囲から逸脱することなく、論理的、機械的、電気的、および他の変更を行うことも可能である。本明細書内で用いたような「実施形態」という言葉の異なる例は、必ずしも同一の実施形態を指さないが、そうである場合もある。本発明において図示されたかまたは記載されたいかなるデータおよびデータ構造も一例であり、他の実施形態においては、異なる量のデータ、データ・タイプ、フィールド、フィールドの数およびタイプ、フィールド名、レコードの数およびタイプ、エントリ、またはデータの組織を用いることができる。更に、いかなるデータも論理と組み合わせることができるので、別個のデータ構造は必要でない。従って、前述の詳細な説明は限定の意味にとられるのではなく、本発明の範囲は特許請求の範囲によってのみ規定されるものとする。
【００６８】
前述の記載において、多数の具体的な詳細事項を述べて本発明の完全な理解を与えた。しかしながら、本発明はこれらの具体的な詳細事項がなくても実施可能である。他の例において、本発明を不明瞭にしないために、周知の回路、構造、および技法については詳細に示していない。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施形態を実現するための例示的なシステムのブロック図を示す。
【図２】本発明の一実施形態に従った例示的なサーバのクラスタのブロック図を示す。
【図３】本発明の一実施形態に従った、新しいサーバがサーバのクラスタに加入する一例のブロック図を示す。
【図４】本発明の一実施形態に従ったサーバ・クラスタの統合の一例のブロック図を示す。
【図５】本発明の一実施形態に従ったルーティング・データの一例のブロック図を示す。
【図６】本発明の一実施形態に従った、新しいサーバがサーバのクラスタに加入する処理の一例のフローチャートを示す。
【図７】本発明の一実施形態に従った、サーバのクラスタを接続する処理の一例のフローチャートを示す。
【図８】本発明の一実施形態に従ったブロードキャスト・メッセージの処理の一例のフローチャートを示す。
【図９】本発明の一実施形態に従った、サーバがネットワークを脱退することに応答した処理の一例のフローチャートを示す。
【図１】
2009516279.tif 000003
【図２】
2009516279.tif 000004
【図３】
2009516279.tif 000005
【図４】
2009516279.tif 000006
【図５】
2009516279.tif 000007
【図６】
2009516279.tif 000008
【図７】
2009516279.tif 000009
【図８】
2009516279.tif 000010
【図９】
2009516279.tif 000011
【手続補正書】
【提出日】平成21年2月16日(2009.2.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のサーバのクラスタにおいて受信側サーバで実行される方法であって、
新しいサーバからブロードキャスト・メッセージを受信するステップであって、前記新しいサーバが前記複数のサーバの前記クラスタに前記ブロードキャスト・メッセージを送信した、前記受信するステップと、
前記受信側サーバが、前記クラスタにおける前記複数のサーバの他の全てよりも前に前記クラスタに加入したか否かを判定するステップと、
前記判定が真である場合、前記新しいサーバにポイント・ツー・ポイント・メッセージを送信するステップであって、前記ポイント・ツー・ポイント・メッセージが前記クラスタ内の前記複数のサーバの全てに関連したルーティング・データを含む、前記送信するステップと、
を含む、方法。
【請求項２】
前記ブロードキャスト・メッセージが、前記新しいサーバの識別、前記新しいサーバに関連したリソース・データ、および前記新しいサーバが前記クラスタに加入する時刻を含むレコードを含む、請求項１に記載の方法。
【請求項３】
前記レコードを前記ルーティング・データに追加するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記レコードによって前記新しいサーバに要求を送信するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記ルーティング・データが前記複数のサーバに関連した複数のレコードを含み、前記複数のレコードの各々が、前記各サーバの識別、前記各サーバが提供するリソース、および前記各サーバが前記クラスタに加入した時刻を含むレコードを含み、前記受信側サーバが前記複数のレコードにおける前記時刻に基づいて前記判定を行う、請求項１に記載の方法。
【請求項６】
前記複数のサーバの１つが前記クラスタを脱退した場合、前記クラスタを脱退した前記１つのサーバに関連した前記レコードを前記ルーティング・データから除去するステップを更に含む、請求項５に記載の方法。
【請求項７】
前記ポイント・ツー・ポイント・メッセージを送信する前記ステップが、前記ポイント・ツー・ポイント・メッセージを排他的に前記新しいサーバに送信するステップを更に含む、請求項１に記載の方法。
【請求項８】
前記判定が偽である場合、前記レコードを前記ルーティング・データに追加するステップを更に含む、請求項２に記載の方法。
【請求項９】
サーバのクラスタに加入することを望む新しいサーバにおいて実行される方法であって、
ネットワークを介して接続された前記サーバのクラスタにブロードキャスト・メッセージを送信するステップと、
第１の複数のサーバの第１のクラスタの調整サーバからポイント・ツー・ポイント・メッセージを受信するステップであって、前記調整サーバが前記第１の複数のサーバの他の全てよりも前に前記第１のクラスタに加入し、前記ポイント・ツー・ポイント・メッセージが前記第１のクラスタにおける前記第１の複数のサーバの全てに関連したルーティング・データを含み、前記ポイント・ツー・ポイント・メッセージが排他的に前記新しいサーバによって受信される、前記受信するステップと、
を含む、方法。
【請求項１０】
前記ルーティング・データが、前記クラスタにおける前記サーバの全ての識別、前記クラスタにおける前記サーバの全てが提供するリソース、および前記サーバの各々が前記クラスタに加入した時刻を含む、請求項９に記載の方法。
【請求項１１】
前記ルーティング・データによって、前記サーバの１つにおける前記リソースの少なくとも１つに対する要求を送信するステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記ブロードキャスト・メッセージにおいて、前記新しいサーバが前記クラスタに加入する時刻をストアするステップを更に含む、請求項９に記載の方法。
【請求項１３】
前記ブロードキャスト・メッセージに前記新しいサーバの識別およびリソース・データをストアするステップを更に含み、前記リソース・データが前記新しいサーバにおいて利用可能な少なくとも１つのサービスを記述する、請求項９に記載の方法。
【請求項１４】
請求項１〜１３のいずれかの方法に記載された各ステップを実行するために適合された手段を含むシステム。
【請求項１５】
コンピュータ・システム上で実行された場合に請求項１〜１３のいずれかの方法に記載された各ステップを実行するための命令を含むコンピュータ・プログラム。
【国際調査報告】
2009516279.tif 000012
2009516279.tif 000013
2009516279.tif 000014