(57)【要約】【課題】ネットワークのノードのワークロードを分割する。【解決手段】本発明にかかる方法は、ピアツーピアネットワーク（２１０）のノードの一組の最高ワークロード（７１２）内にあると判断されたワークロードを有するノード（１３０ｂ）で要求を受信することと、分割アルゴリズムを使用して、ノード（１３０ｂ）のワークロードを、ピアツーピアネットワーク（２１０）の第２のノード（１３０ｃ）と分割することとを含む。ピアツーピアネットワーク（２１０）のノード（１３０）は、サービスの属性および属性値に関連する情報を記憶するように動作可能であり、ノード（１３０ｂ）のワークロードを分割することは、分割アルゴリズムを使用して属性および少なくとも１つの属性分割値を決定することと、属性および少なくとも１つの属性分割値に基づいてノード（１３０ｂ）のワークロードを分割することとをさらに含む。【選択図】図１０
2008524674.tif 000002
【特許請求の範囲】
【請求項１】
ピアツーピアネットワーク（２１０）のノードの一組の最高ワークロード（７１２）内にあると判断されたワークロードを有するノード（１３０ｂ）で要求を受信することと、
分割アルゴリズムを使用して、前記ノード（１３０ｂ）の前記ワークロードを、前記ピアツーピアネットワーク（２１０）の第２のノード（１３０ｃ）と分割することと
を含む方法。
【請求項２】
前記ピアツーピアネットワーク（２１０）の前記ノード（１３０）は、サービスの属性および属性値に関連する情報を記憶するように動作可能であり、
前記ノード（１３０ｂ）の前記ワークロードを分割することは、
前記分割アルゴリズムを使用して属性および少なくとも１つの属性分割値を決定することと、
前記属性および前記少なくとも１つの属性分割値に基づいて前記ノード（１３０ｂ）の前記ワークロードを分割することと
をさらに含む
請求項１に記載の方法。
【請求項３】
前記ノード（１３０ｂ）の前記ワークロードを分割することは、
前記属性の属性値の２つの範囲を決定することであって、第１の範囲は、前記少なくとも１つの属性分割値よりも小さな属性値を含み、第２の範囲は、前記少なくとも１つの属性分割値よりも大きな属性値を含むことと、
前記２つの範囲の一方の属性値を有するサービスについての情報を記憶することを前記ノード（１３０ｂ）に割り当てることと、
前記２つの範囲の他方の属性値を有するサービスについての情報を記憶することを前記第２のノード（１３０ｃ）に割り当てることと
をさらに含む
請求項２に記載の方法。
【請求項４】
前記ノードの前記ワークロードを分割することは、
前記ノード（１３０ｂ）から前記第２のノード（１３０ｃ）へサービスの情報を送信することであって、前記送信された情報は、前記第２のノード（１３０ｂ）に割り当てられた前記範囲の属性値を有するサービスの情報を含むこと
をさらに含む
請求項３に記載の方法。
【請求項５】
前記ノード（１３０ｂ）の前記ワークロードを分割することは、
前記ノード（１３０ｂ）のルーティング表を使用して前記第２のノード（１３０ｃ）のルーティング表を生成することであって、前記第２のノード（１３０ｃ）の前記ルーティング表は、前記ノード（１３０ｂ）の最高レベルのエントリーに関連する最高レベルのエントリーを含むこと
をさらに含む
請求項３に記載の方法。
【請求項６】
前記分割アルゴリズムは、
クラスタリングアルゴリズム
を含み、
前記分割アルゴリズムを使用して前記属性および前記少なくとも１つの属性分割値を選択することは、
前記クラスタリングアルゴリズムを使用して、前記ノードに記憶されたデータから少なくとも２つのクラスタを決定することと、
前記少なくとも２つのクラスタに基づいて前記属性および前記属性分割値を選択することと
をさらに含む
請求項３に記載の方法。
【請求項７】
前記分割アルゴリズムは、
クラスタリングアルゴリズム
を含み、
前記分割アルゴリズムを使用して前記属性および前記少なくとも１つの属性分割値を選択することは、
前記クラスタリングアルゴリズムを使用して、前記ノード（１３０ｂ）に記憶されたデータから３つのクラスタを決定することと、
前記３つのクラスタに基づいて前記属性および２つの属性分割値を選択することと
をさらに含む
請求項３に記載の方法。
【請求項８】
前記ノード（１３０ｂ）の前記ワークロードを分割することは、
前記２つの属性分割値に基づいて、前記選択された属性の属性値の３つの範囲を決定することと、
前記３つの範囲のうちの１つの範囲の属性値を有するサービスについての情報を記憶することを前記ノード（１３０ｂ）に割り当てることと、
前記３つの範囲のうちの第２の範囲の属性値を有するサービスについての情報を記憶することを前記第２のノード（１３０ｃ）に割り当てることと、
前記３つの範囲のうちの第３の範囲の属性値を有するサービスについての情報を記憶することを前記ノード（１３０ｂ）および前記第２のノード（１３０ｃ）の双方に割り当てることと
をさらに含む請求項７に記載の方法。
【請求項９】
前記３つの範囲のうちの第３の範囲の属性値を有するサービスについての情報を記憶することを前記ノード（１３０ｂ）および前記第２のノード（１３０ｃ）の双方に割り当てることは、
前記ノード（１３０ｂ）および前記第２のノード（１３０ｃ）が、前記３つの範囲のうちの第３の範囲の属性値を有するサービスについての情報を記憶する確率を割り当てること
をさらに含む
請求項８に記載の方法。
【請求項１０】
ネットワーク（２１０）のノード（１３０ｂ）であって、最高ワークロードを有すると判断された前記ネットワーク（２１０）の一組のノードの１つであり、
前記ノード（１３０ｂ）は、
参加要求を受信するように動作可能なネットワークインターフェース（１５３０）と、
クラスタリングアルゴリズムを適用して、前記ノード（１３０ｂ）の前記ワークロードを、前記ネットワーク（２１０）に参加する別のノード（１３０ｃ）と分割するように動作可能な処理回路（１５０２）と
を備えるノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、ネットワークに関する。
より詳細には、本発明は、ネットワークのノードのワークロードを分割することに関する。
【背景技術】
【０００２】
［背景］
インターネット等の大きなネットワークは、多くのピアツーピアシステムのインフラストラクチャを提供することができ、今や、さまざまなサービスをユーザに提供するのに使用されている。
たとえば、ストリーミングおよびトランスコード等のメディアサービス、航空券の予約およびホテルの予約等の電子商取引のウェブサービス、または、計算およびデータのグリッドコンピューティングサービスが、大きなネットワークを介して利用可能であり得る。
【特許文献１】米国特許出願公開第２００２／１０７９６２号
【特許文献２】米国特許出願公開第２００４／１４３８４２号
【特許文献３】米国特許出願公開第２００２／０５９４５１号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
これらのネットワークサービスを効果的に利用する際の基本的な課題は、インターネット等の大きなネットワークで所望のサービスを効率的に且つ素早く突き止めることである。
サービスを発見する課題は、いくつかの要因によって複雑化されている。
たとえば、ピアツーピアファイル共有システムに使用される集中化（centralized）情報サービス等、このような発見を容易にするための集中化情報サービスが利用された場合、利用可能なサービス数およびユーザ数が増加しても、集中化情報サービスは容易に拡大しない。
加えて、各サービスは、変化し続け、情報サービスにおいて更新を受ける必要がある、たとえば負荷および待ち時間といったいくつかの動的な属性を有する。
所望の更新レートは、集中化情報サービスによって維持することができない。
また、情報サービスを最小のダウンタイムで提供するには、数人のシステムアドミニストレータがメンテナンスを行うことが必要となる場合があり、これは多大な費用を要する。
最後に、情報サービスは、より高速な応答時間のために局所性を考慮すべきである。
たとえば、所望のサービスの要求を含む問い合わせは、その問い合わせを最初に送信するノードの、ネットワークにおける近接したノードへ向けられるべきであり、問い合わせに対する応答として返されるサービスも、問い合わせを行ったノードにネットワークにおいて近接して存在すべきである。
【０００４】
加えて、情報サービスが利用可能にされる場合、その情報サービスは、エラーを起こしやすい、多大なコストを要する手動管理を最小にするために、ワークロードバランシングおよび他の管理タスク等の自己管理特性を含むべきである。
【課題を解決するための手段】
【０００５】
［概要］
一実施の形態によれば、ピアツーピアネットワークにおいて最高ワークロードを有するノードが、そのピアツーピアネットワークの一組のノードから特定される。
そのノードのワークロードは、分割アルゴリズムを使用して別のノードと分割される。
【０００６】
実施形態の以下の詳細な説明が添付図面に関して考慮された時に、実施形態のさまざまな特徴は、当該以下の詳細な説明についてより良く理解されるにつれてより十分に認識することができる。
【発明を実施するための最良の形態】
【０００７】
［実施形態の詳細な説明］
簡単にするために且つ例示の目的で、実施形態の原理を説明する。
しかしながら、当業者は、同じ原理が、すべてのタイプのネットワークシステムに等しく適用可能であり、且つ、すべてのタイプのネットワークシステムで実施できること、および、あらゆるこのような変形が、実施形態の真の趣旨および範囲から逸脱しないことを容易に認識するであろう。
その上、以下の詳細な説明では、添付図面が参照される。
添付図面は、特定の実施形態を示している。
実施形態の趣旨および範囲から逸脱することなく、電気的な変更、機械的な変更、論理的な変更、および構造的な変更を実施形態に対して行うことができる。
【０００８】
一実施形態によれば、ネットワークにおいてサービスを発見するための分散情報サービスが提供される。
この情報サービスは、ネットワークを介して利用可能なサービスについての情報をユーザに提供する。
ユーザは、ネットワークを介して利用可能な所望のサービスについての情報を情報サービスに問い合わせる。
情報サービスは、所望のサービスを提供するように動作可能なネットワークのサービスノードのリストで応答することができる。
【０００９】
情報サービスは、利用可能なサービスについての情報を記憶するピアツーピアネットワークの複数の情報サービスノードを含む分散情報サービスである。
ノードが一時的なものである傾向を有する従来のピアツーピアネットワークと異なり、情報サービスノードは、短期間ピアツーピアネットワークに参加するのではなく、長期間ピアツーピアネットワークに留まる可能性が高いピアツーピアアーキテクチャの安定したノードである。
ピアツーピアネットワークは、分散アーキテクチャで情報サービスノードを組織化する一例であり、任意のタイプの分散アーキテクチャを使用できることが当業者には明らかであろう。
【００１０】
情報サービスの分散性によって、情報のすべての問い合わせを取り扱う従来の中央情報レポジトリを使用することに関連するボトルネックが最小にされ、したがって、問い合わせ応答時間が改善される。
ピアツーピアネットワークのオーバーレイネットワークが、ネットワークにおいて利用可能なサービスの発見を容易にするために、分散情報サービスにおけるサービスについての問い合わせおよび情報を効率的にルーティングするのに使用される。
【００１１】
本明細書で使用されるようなサービスは、入力に処理を行い、出力を生成するあらゆる機能を指す。
サービスの例には、トランスコード、言語翻訳、暗号化、画像修復および画像解析、エラー訂正、異なる言語へのコンテンツの変換等が含まれる。
また、１つのサービスは、複数のサービスで構成される場合がある。
たとえば、或るサービスの出力は別のサービスの入力となる場合があり、サービスを構成するのに使用される同じ数の中間サービスについて同様である。
構成されたサービスの一例には、ユーザが特定のエンドユーザデバイスで視聴できるフォーマットでストリーミングビデオを受信できるようなトランスコードサービスに入力されるビデオストリーミングサービスを含むメディアサービスが含まれ得る。
【００１２】
他のタイプのサービスには、コンピューティングサービス、データストレージサービス、およびグリッドコンピューティングサービスが含まれる。
グリッドコンピューティングサービスは、コンピュータ資源の共有を包含することができる。
グリッドコンピューティングサービスによって、たとえば、ユーザは、アプリケーション要件等の仕様に基づいてコンピューティングサービスにアクセスすることが可能になる。
【００１３】
［１．システムの概観］
図１は、ユーザノード１１０とサービスノード１２０と情報サービスノード１３０とを含むネットワーク１００を示している。
ネットワーク１００の一例には、サービスがユーザに利用可能とされるインターネット等の大規模ネットワークが含まれる。
しかしながら、実施形態は、サービスを提供するより小さなネットワークで実施してもよい。
ユーザノードには、サービスを受信するように動作可能なあらゆるノードが含まれる。
通常、ユーザノードは、ユーザが所望するサービスがネットワーク１００において利用可能であるか否か、および、そのサービスが利用可能である場合に、そのサービスを受信するためにどのサービスノードと連絡するかを判断するための問い合わせを情報サービスにサブミットする。
サービスノード１２０には、サービスを提供するように動作可能なノードが含まれる。
ユーザノードは、情報サービスに問い合わせることによって所望のサービスを提供するように動作可能なサービスノードを特定した後、所望のサービスを提供するサービスノードからサービスを受信する。
ノードとは、ネットワークを介してメッセージを送信および／または受信でき、且つ、通常は或るタイプのデータ処理を実行するように動作可能であるあらゆるデバイスである。
ノードの例には、ルータ、サーバ、およびエンドユーザデバイスが含まれる。
エンドユーザデバイスは、ＰＤＡ、パーソナルコンピュータ、ラップトップ、および携帯電話等である。
【００１４】
情報サービスは、一実施形態によれば、情報サービスノード１３０によって提供される。
情報サービスノード１３０は、ネットワーク１００においてサービスの発見を可能にする。
情報サービスノード１３０は、サービスの発見に加えて、Sujoy Basu他による「Splitting Workload Of A Node」という発明の名称の同時係属中の米国特許出願（代理人整理番号第２００５０００３１−１号）およびSujoy Basu他による「Determining Highest Workloads For Nodes In A Network」という発明の名称の同時係属中の米国特許出願（代理人整理番号第２００５０００３０−１号）に記載されたいくつかの技法を使用して、それらの情報サービスノード間でワークロードをバランスさせる。
これらの米国特許出願の双方は、その全内容が参照により援用される。
【００１５】
上述したように、情報サービスノード１３０を含む情報サービスは、ネットワーク１００におけるサービスの発見に関連する機能を実行する。
２つの重要な機能は、利用可能なサービスについての情報を記憶すること、および利用可能なサービスについての問い合わせに対して応答することを含む。
情報サービスノード１３０は、ネットワーク１００における、図２に示すピアツーピアネットワーク２００に設けられる。
ピアツーピアネットワーク２００、および、ピアツーピアネットワーク２００のオーバーレイネットワーク２１０は、とりわけ、情報サービスノード１３０にサービスについての情報を記憶すること、情報サービスノード１３０間でルーティングを行うこと、および問い合わせに対して応答するために使用される。
【００１６】
図２に示すように、オーバーレイネットワーク２１０は、基礎と成るピアツーピアネットワーク２００をオーバーレイする。
オーバーレイネットワーク２１０は、ピアツーピアネットワーク２００の論理表現であり、以下で詳述するように、サービスを定義するために使用される属性および属性範囲に基づいて、問い合わせおよびサービス情報を効率的にルーティングするように動作可能である。
図２は、ピアツーピアネットワーク２００が情報サービスノード１３０を含むこと、並びに、ユーザノード１１０およびサービスノード１２０が必要に応じてピアツーピアネットワーク２００の情報サービスノード１３０と通信することを示す目的で、ネットワーク１００の中央に位置する情報サービスノード１３０、並びに、オーバーレイネットワーク２１０の周囲に設けられたユーザノード１１０およびサービスノード１２０を示している。
待ち時間（たとえば、ユーザノードが問い合わせ応答に対する応答を得るのに要する時間の長さ）を最小にするために、情報サービスノード１３０は、ネットワーク１００のいくつかの異なるエリアに設けてもよい。
【００１７】
［２．属性空間および属性部分空間］
サービスは、さまざまなサービス属性の値を指定することによって特徴付けられる。
たとえば、コンピューティングサービスは、オペレーティングシステムおよびアプリケーション、物理メモリの量、ディスク容量、およびネットワーク帯域幅等の属性の値によって特徴付けられてもよい。
【００１８】
情報サービスは、これらの属性および属性値を追跡する。
各情報サービスノードは、属性の１つまたは複数の一定の一組の値の追跡を担当する。
追跡されるすべての属性の数組の属性値を組み合わせることによって、その情報サービスノードによって追跡される属性部分空間が形成される。
【００１９】
情報サービスノード１３０により構成される情報サービスは、図３に示す属性空間３００を含む。
属性空間３００は、ピアツーピアネットワーク１００の利用可能なサービスについてのすべての情報を含む。
属性空間３００は、情報サービスに記憶された情報の論理表現である。
【００２０】
属性空間３００は、情報サービスノード１３０間に分散される。
図３には、例示の目的で、３つの情報サービスノード１３０ａ〜１３０ｃのみ示す。
情報サービスノード１３０のそれぞれには、属性空間３００の属性部分空間の担当が割り当てられる。
各属性部分空間は、特定の属性および属性値に関連付けられる。
情報サービスにおいて、サービスは、サービスによって変化する所定の属性および属性値により定義される。
属性および属性値は、情報サービスノード１３０のそれぞれに割り当てられる。
サービスは、１つの情報サービスノードの１つの属性部分空間内に分類されるように定められ、したがって、そのサービスの属性および属性値が、情報サービスノードの属性部分空間に割り当てられた属性および属性値と一致する場合、そのサービスについての情報は、最終的に、その情報サービスノードに記憶される。
たとえば、属性部分空間は、特定の属性の属性値を含むことができる。
或るサービスが、或る属性部分空間の属性値と交わる１つまたは複数の属性値を使用して定義される場合、そのサービスは、その属性部分空間内に分類することができる。
属性部分空間をさらに説明する一例は以下の通りである。
ネットワーク１００におけるすべてのサービスを定義するための所定の属性のリストは、メモリ、ディスク容量、平均負荷、オペレーティングシステム、アプリケーション、サービスアップタイム、および応答時間を含んでもよい。
グリッドコンピューティングサービスは、コンピュータ資源の共有を含んでもよい。
グリッドコンピューティングサービス（たとえばグリッドコンピューティングサービス１）は、共有できるコンピュータ資源に基づいて定義することができる。
グリッドコンピューティングサービス１は、以下の属性値を使用して定義される。
【００２１】
［グリッドコンピューティングサービス１の属性および属性値の表１］
メモリ：１ＧＢ，
ディスク容量：２．５〜５ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
平均負荷：０，
アプリケーション：Ｍａｙａ、Ｒｅｎｄｅｒｍａｎ，
サービスアップタイム：９９．５％，
応答時間：≦２０ｍｓ，
【００２２】
図３に示すように、情報サービスノード１３０ａには、メモリ≦１ＧＢの属性値によって定義される属性部分空間が割り当てられている。
グリッドコンピューティングサービス１の広告３１０は、表１の属性値を含み、情報サービスノード１３０ａに記憶される。
その理由は、情報サービスノード１３０ａが、メモリ属性値≦１ＧＢを有するすべての広告を記憶するからである。
【００２３】
広告は、特定のサービスを定義するために使用される属性および属性値を含む。
ネットワーク１００のすべてのサービスを定義するために所定の一組の属性を使用してもよい。
サービスノード１２０のそれぞれは、その所定の一組の属性における属性のそれぞれについて属性値を測定するかまたは他の方法で決定する。
また、サービスノード１２０のそれぞれは、それらのノードの広告を情報サービスへ定期的に送信する。
オーバーレイネットワーク２１０は、広告が分類される属性部分空間を所有する適切な情報サービスノードへ広告を自動的にルーティングする。
グリッドコンピューティングサービス１についての上記に示した属性および属性値は、グリッドコンピューティングサービス１の広告１３０の情報の一例である。
たとえば、グリッドコンピューティングサービス１を提供するサービスノードは、表１に示すグリッドコンピューティングサービス１の属性値を定期的に測定するかまたは他の方法で決定し、属性値を含む広告３１０をオーバーレイネットワーク２１０へ送信して、その広告が分類される属性部分空間を所有する情報サービスノードに記憶する。
図３に示す例では、情報サービスノード１３０は、グリッドコンピューティングサービス１の広告３１０を情報サービスノード１３０ａへルーティングした。
その理由は、情報サービスノード１３０ａが、オーバーレイネットワーク２１０へ送信される、メモリ≦１ＧＢ内の属性値を有するサービスについてのすべての情報を記憶するからである。
すなわち、グリッドコンピューティングサービス１は、メモリ＝属性の１ＧＢの属性値を使用して定義され、１ＧＢの属性値が交わる。
すなわち、１ＧＢの属性値は、情報サービスノード１３０ａの属性部分空間のメモリ≦１ＧＢの属性範囲に含まれる。
このように、グリッドコンピューティングサービス１は、情報サービスノード１３０ａの属性部分空間内に分類される。
【００２４】
グリッドコンピューティングサービス１について上記に示した属性は、ネットワーク１００におけるサービスを定義するために使用される所定の一組の属性の例である。
利用可能なサービスを定義するのに他の属性を使用してもよいことが当業者に明らかであろう。
また、それらのサービスを定義するのに或る所定の一組の属性を使用することもできる。
しかしながら、各サービスは、異なる属性値を有してもよい。
これらの異なる属性値は、定期的に測定されて、対応する属性部分空間を有する情報サービスノードに記憶される。
【００２５】
問い合わせも、同様に、ピアツーピアネットワーク２００に記憶される。
たとえば、図２に示すオーバーレイネットワーク２１０は、メモリ＞１ＧＢおよびディスク容量＝２ＧＢの属性を有するサービスの要求を含む、図３に示す問い合わせ３２０を受信する場合がある。
問い合わせ３２０は、情報サービスノード１３０ｂによって所有される属性部分空間に分類される。
したがって、問い合わせ３２０は、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる。
問い合わせ３２０は、情報サービスノード１３０ｂへ自動的にルーティングされ且つ情報サービスノード１３０ｂに記憶され、情報サービスノード１３０ｂは、情報サービスノード１３０ｂに記憶された広告を探索して、あらゆる一致するものを、サービスを要求したノードへ送信することにより、この問い合わせに応答する。
【００２６】
属性空間３００を含むオーバーレイネットワーク２１０は、範囲問い合わせをサポートする。
範囲問い合わせは、所望のサービスを特定する１つまたは複数の属性範囲を含む。
情報サービスノード１３０は、オーバーレイネットワーク２１０を使用して、範囲問い合わせを、属性値の範囲を含む属性部分空間へ、または問い合わせの属性値の範囲と交わる属性部分空間へルーティングするように動作可能である。
加えて、問い合わせは、複数の属性範囲を含むことができ、問い合わせは、属性範囲を含む属性部分空間または属性範囲と交わる属性部分空間を有する２つ以上の情報サービスノードへルーティングすることができる。
【００２７】
［３．情報サービスノード］
図４は、情報サービスノード１３０ｂ等の情報サービスノードに記憶された情報の一部の一例を示している。
情報サービスノード１３０ｂは、ストレージキャッシュ４１０、オーバーレイルーティング表４２０、およびレプリカロケーションキャッシュ４４０を含む。
ストレージキャッシュ４１０は、ローカルな問い合わせ４０１およびグローバルな問い合わせ４０２を記憶する。
また、ストレージキャッシュ４１０は、ローカルな広告４０５およびグローバルな広告４０６も記憶する。
グローバルな問い合わせ４０２には、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる問い合わせが含まれる。
その理由は、問い合わせは、情報ストレージノード１３０ｂによって所有される属性部分空間に分類されるからである。
図３に示す問い合わせ３２０は、グローバルな問い合わせの一例である。
【００２８】
ローカルな問い合わせ４０１には、情報サービスノード１３０ｂによって受信されるあらゆる問い合わせが含まれる。
たとえば、情報サービスノード１３０ａは、問い合わせを受信して、その問い合わせを、オーバーレイネットワーク２１０にあるその宛先に向けて転送することができる。
オーバーレイネットワーク２１０は、問い合わせが分類される属性部分空間を所有する情報サービスノードを含むことができる。
問い合わせをその宛先に向けて転送する前に、問い合わせは、ストレージキャッシュ４１０にローカルにキャッシュされる。
また、情報サービスノード１３０ｂは、問い合わせをその宛先に向けて転送する前に、ストレージキャッシュ４１０に記憶されたローカルな広告４０５を探索して、問い合わせと一致するものが見つかるか否かを判断する。
一致するものが見つかった場合、情報サービスノード１３０ｂは、たとえば、サービスを要求したノードおよび関連するサービスノードへ一致する広告を送信することによって、その問い合わせに応答する。
宛先は、サービスを要求したノードにより近いサービスノードによって提供される、問い合わせと一致するサービスの広告を含む場合があることから、情報サービスノード１３０ｂは、問い合わせをその宛先に向けて引き続きルーティングする場合がある。
或いは、情報サービスノード１３０ｂは、一致するものがローカルにキャッシュされている場合に、問い合わせを転送しない場合がある。
【００２９】
グローバルな広告４０６は、オーバーレイネットワーク２１０を通じて情報サービスノード１３０ｂへルーティングされる広告を含む。
その理由は、それらの広告が、情報ストレージノード１３０ｂによって所有される属性部分空間に分類されるからである。
図３に示す広告３１０は、情報サービスノード１３０ａのグローバルな広告の一例である。
【００３０】
ローカルな広告４０５は、情報サービスノード１３０ａによって受信されたあらゆる広告を含む。
たとえば、情報サービスノード１３０ａは、広告を受信して、その広告をその宛先に向けて転送することができる。
これらの広告は、ストレージキャッシュ４１０にローカルにキャッシュされ、一致するものがローカルキャッシュに見つかった場合に、問い合わせに対するより高速な応答時間を提供するために探索することができる。
【００３１】
情報サービスノード１３０ｂは、オーバーレイルーティング表４２０も含む。
オーバーレイルーティング表４２０は、以下のフィールド、すなわち、レベル４２１、ＩＰアドレス４２２、確率４２３、および属性範囲４２４を含む。
レベル４２１は、一般に、情報サービスノード１３０ｂが自身のワークロードを別の情報サービスと分割した回数に関連付けられている。
情報サービス１３０ｂが自身のワークロードを別の情報サービスノードと分割する時、情報サービスノード１３０ｂのルーティング表の新たなエントリーが、ルーティング表における既存の最高レベルよりも大きなレベルに作成される。
たとえば、エントリー４３１および４３２は、情報サービスノード１３０ｂが自身のワークロードを情報サービスノード１３０ｃと分割した時にレベル１に作成されたものである。
エントリー４３３は、情報サービスノード１３０ｂがその後自身のワークロードを情報サービスノード１３０ｄと分割した時にレベル２に作成されたものである。
ワークロードの分割は、情報サービスノードが、オーバーレイネットワーク２１０の他の情報サービスノードと比較して高いワークロードを有すると判断された時に行うことができる。
確率４２３は、情報サービスノードが所望のデータを有する確率を示す。
たとえば、エントリー４３０は、情報サービスノード１３０ａが、メモリ≦１ＧＢを有する広告を常に記憶していることを示し、エントリー４３１は、情報サービスノード１３０ｃが、ディスク容量≦２ＧＢを有する広告を常に記憶していることを示す。
一方、情報サービスノード１３０ｃが、ディスク容量≦５ＧＢを有する広告を記憶している確率は５０％である。
ルーティング表にエントリーを生成することおよび確率は、上記で参照により援用された米国特許出願にさらに詳細に記載されている。
【００３２】
ルーティング表４２０のＩＰアドレスフィールド４２２は、特定のエントリーの情報サービスノードの宛先を特定するためのものである。
たとえば、情報サービスノード１３０ｂは、広告を受信して、その広告がメモリ属性＜１ＧＢを有するものと判断した場合、エントリー４３０を使用して、その広告をその次の宛先、たとえば情報サービスノード１３０ａへルーティングする。
情報サービスノード１３０ａのＩＰアドレスは、エントリー４３０のＩＰアドレスフィールドに設けることができ、情報サービスノード１３０ｂは、ＩＰルーティングを使用して、メッセージをネットワーク２００の情報サービスノード１３０ａへ送信する。
【００３３】
レプリカロケーションキャッシュ４４０は、各サービスノードが連絡を受ける回数および連絡を受けたことがあるサービスノードの待ち時間に関する情報を記憶する。
レプリカとは、情報サービスノードのコピーである。
たとえば、オリジナルの情報サービスノードが、ネットワーク１００の或るエリアのユーザノードによって頻繁に連絡されていたと判断された場合、および／または、オリジナルの情報サービスノードからの、問い合わせに対する応答等のメッセージを受信するユーザノードが、情報サービスノードへの長い待ち時間を経験し続けていたと判断された場合、情報サービスノードをネットワーク１００の新たなロケーションに複製することができる。
情報サービスノード１３０ｂは、レプリカロケーションキャッシュ４４０の情報を使用して、待ち時間を削減するためにネットワーク１００の別のエリアにレプリカを追加するか否かを判断することができる。
【００３４】
［４．ルーティング］
図５は、オーバーレイネットワーク２１０で問い合わせ５０１をルーティングする一例を示している。
ユーザノード１１０ａは、問い合わせ５０１を、オーバーレイネットワーク２１０の情報サービスノード、たとえば情報サービスノード１３０ａへ送信する。
一例では、ユーザノード１１０ａがオーバーレイネットワーク２１０において最初に連絡を取る情報サービスノードは、ネットワーク近接性に基づいて選択することができる。
たとえば、ユーザノード１１０ａがピアツーピアネットワーク１００に参加する時の初期化ステップの期間中、ユーザノード１１０ａは、ユーザノード１１０ａにネットワークにおいて極めて近接した情報サービスノードのＩＰアドレスを示すメッセージをその情報サービスノードから受信する。
待ち時間、ホップ数等のネットワークメトリックに基づき測定された距離を使用してノードのロケーション情報を決定する一例は、２００４年１月３０日に出願されたZhichen Xu他による「Selecting Nodes Close To Another Node In A Network Using Location Information For The Nodes」という発明の名称の米国特許出願第１０／７６７，２８５号に記載されている。
この米国特許出願は、本出願の譲受人に譲渡されている。
ロケーション情報は、ネットワークの他のノードへのネットワーク近接性を判断するのに使用され、最も近い情報サービスノードを選択するのに使用することができる。
ネットワークのノードの距離およびロケーション情報を決定するための他の技法も使用することができる。
【００３５】
ユーザノード１１０ａが、極めて近接した情報サービスノード、たとえば情報サービスノード１３０ａ、を特定した後、ユーザノード１１０ｂは、問い合わせ５０１を情報サービスノード１３０ａへ送信する。
問い合わせ５０１は、ユーザノード１１０ａが所望するサービスを定義する属性値を含む。
属性値は、範囲の場合も単一の値の場合もある。
この例では、問い合わせ５０１は以下の属性値を含む。
【００３６】
［問い合わせ５０１の属性および属性値の表２］
メモリ：２ＧＢ，
ディスク容量：１０ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
応答時間：５０〜１００ｍｓ，
【００３７】
情報サービスノード１３０ａは問い合わせ５０１を受信する。
情報サービスノード１３０ａの属性部分空間は、メモリ≦１ＧＢを含む。
問い合わせ５０１は、メモリについて２ＧＢの属性値を含む。
この２ＧＢの属性値は、情報サービスノード１３０ａの属性部分空間のメモリ≦１ＧＢの属性範囲に含まれず、したがって、問い合わせ５０１は、情報サービスノード１３０ａの属性部分空間に分類されない。
【００３８】
情報サービスノード１３０ａは、自身のルーティング表から、問い合わせ５０１の属性値を含む情報サービスノードを特定する。
たとえば、情報サービスノード１３０ａは、最低レベルのエントリー、たとえばエントリー０から開始して、問い合わせ５０１の属性値と交わる属性値を含むエントリーを求めて自身のルーティング表を探索する。
レベル０、情報サービスノード１３０ｂのＩＰアドレス、１の確率、およびメモリ＞１ＧＢを含むエントリー５１０が示されている。
エントリー５１０に基づいて、情報サービスノード１３０ａは、問い合わせ５０１を情報サービスノード１３０ｂへ送信する。
情報サービスノード１３０ｂの属性部分空間は、問い合わせ５０１で指定された５０〜１００ｍｓの応答時間範囲に含まれない応答時間＜２０ｍｓを含む。
したがって、情報サービスノード１３０ｄは、自身のルーティング表を探索して、たとえばエントリー５１１を見つける。
エントリー５１１は、情報サービスノード１３０ｄを特定し、問い合わせ５０１は、情報サービスノード１３０ｄへ送信される。
情報サービスノード１３０ｄは、問い合わせ５０１の属性値を含む属性部分空間を有し、したがって、問い合わせ５０１は、その属性部分空間に分類される。
情報サービスノード１３０ａは、自身のグローバルキャッシュに記憶されたいずれかの広告が問い合わせを満たすか否かを判断する。
たとえば、サービスは、当該サービスが一致するものであるとみなされるためには、問い合わせ５０１で指定されたすべての属性値を有することを必要とし得る。
一致するものが見つかった場合、情報サービスノード１３０ａは、たとえばサービスを提供するサービスノードのＩＰアドレスを含む広告をユーザノード１１０ａへ送信することによって問い合わせ５０１に応答する。
また、情報サービスノード１３０ａは、広告のために、ユーザノード１１０ａが広告に記載されたサービスを要求していることを示すメッセージを、ユーザノード１１０ａのＩＰアドレスと共にサービスノードへ送信することもできる。
問い合わせ５０１も、情報サービスノード１３０ｃのグローバルキャッシュに記憶される。
【００３９】
情報サービスノード１３０ａおよび１３０ｂは、問い合わせ５０１を転送する前に、自身のローカルキャッシュに問い合わせ５０１のコピーを記憶することができる。
また、情報サービスノード１３０ａおよび１３０ｂは、問い合わせを転送する前に、自身のローカルキャッシュに記憶されたいずれかの広告が問い合わせ５０１を満たすか否かを判断することもできる。
一致するものが見つかった場合、情報サービスノード１３０ａは、たとえばサービスを提供するサービスノードのＩＰアドレスを含む広告をユーザノード１１０ａへ送信することによって問い合わせ５０１に応答することができる。
また、情報サービスノード１３０ａは、ユーザノード１１０ａが広告のサービスを要求していることを示すメッセージを、ユーザノード１１０ａのＩＰアドレスと共に、広告に記載されたサービスを提供するサービスノードへ送信することもできる。
【００４０】
図５に関して上述した例では、問い合わせ５０１は、情報サービスノード１３０ｄの属性部分空間に分類されるので、情報サービスノード１３０ｄへルーティングされる。
問い合わせ５０１は、問い合わせ５０１に一致する広告を含み得る他の情報サービスノードへ引き続きルーティングされる場合がある。
たとえば、別の情報サービスノードは、以下の属性部分空間、すなわち、メモリ＞１ＧＢ、ディスク容量＞５ＧＢ、応答時間≧２０ｍｓ、およびＬｉｎｕｘ１．０〜２．５を含むオペレーティングシステム、を含む場合がある。
問い合わせ５０１は、上述した属性部分空間にも分類されることから、情報サービスノード１３０ｄは、その属性部分空間を含む情報サービスノードへ問い合わせ５０１をルーティングすることができる。
したがって、ユーザノード１１０ａは、自身のローカルキャッシュで一致するものを見つけた情報サービスノードを含む複数の情報サービスノードから探索結果を受信する場合があり、ユーザノード１１０ａは、所望のサービスを受信するためのサービスノードを選択することができる。
【００４１】
加えて、オーバーレイネットワーク２１０は、範囲の問い合わせもサポートすることに留意すべきである。
問い合わせ５０１は、属性の応答時間について、属性値の範囲５０〜１００ｍｓを含む。
問い合わせ５０１は、１つまたは複数の範囲を含むことができ、その範囲と交わる情報サービスノードへルーティングされる。
たとえば、属性値５０〜１００ｍｓのいずれかを含む属性部分空間へ問い合わせ５０１をルーティングすることができる。
【００４２】
図６は、オーバーレイネットワーク２１０における広告６０１のルーティングを示している。
広告は、オーバーレイネットワーク２１０において問い合わせと同様にルーティングされる。
サービスノード１２０は、自身の属性を定期的に測定して、測定された属性を含む自身の広告をオーバーレイネットワーク２１０へ送信する。
各広告は、所定の一組の属性における属性ごとに属性値または属性値の範囲を含んでもよい。
所定の一組の属性の一例は、メモリ、ディスク容量、オペレーティングシステム、サービスを提供するサービスノードの平均負荷、アプリケーション、サービスアップタイム、およびサービスを提供する情報サービスノードの応答時間を含む。
【００４３】
図６は、サービスノード１２０ｂによって生成された広告６０１を示している。
広告６０１は以下のものを含む。
【００４４】
［広告６０１の属性値の表３］
メモリ：１ＧＢ，
ディスク容量：２．５〜５ＧＢ，
オペレーティングシステム：Ｌｉｎｕｘ２．４，
平均負荷：０，
アプリケーション：Ｍａｙａ、Ｒｅｎｄｅｒｍａｎ，
サービスアップタイム：９９．５％，
応答時間：≦２０ｍｓ，
【００４５】
たとえば、情報サービスノード１３０ａは、サービスノード１２０ｂに極めて近接しているので、サービスノード１２０ｂは、情報サービスノード１３０ａへ広告６０１を送信することができる。
広告６０１はメモリ＞１ＧＢを有し、且つ、情報サービスノード１３０ａの属性部分空間はメモリ≦１ＧＢを含むので、広告６０１は、情報サービスノード１３０ａによって所有される属性部分空間に分類されない。
したがって、情報サービスノード１３０ａは、自身のルーティング表のエントリー６１０から情報サービスノード１３０ｂを特定する。
たとえば、情報サービスノード１３０ｂは、最低レベルのエントリーから開始して、広告６０１の属性値と交わる属性値を含むエントリーを求めて自身のルーティング表を探索する。
エントリー６１０は、情報サービスノード１３０ｂを特定し、広告６０１は、情報サービスノード１３０ｂへ送信される。
広告６０１のディスク容量は５ＧＢ以下であるので、広告６０１は、情報サービスノード１３０ｂによって所有される属性部分空間に分類されない。
情報サービスノード１３０ｂは、ディスク容量≦５ＧＢの属性値を含む自身のルーティング表のエントリー６１１から情報サービスノード１３０ｃを特定する。
広告６０１は、情報サービスノード１３０ｃの属性部分空間に分類され、情報サービスノード１３０ｃに記憶される。
広告６０１を転送する前に、情報サービスノード１３０ａおよび１３０ｂは、広告６０１を自身のローカルキャッシュに記憶する。
加えて、情報サービスノード１３０ｃは、自身のグローバルキャッシュに記憶するために広告６０１をコピーすることができ、広告６０１が分類される属性部分空間を含む他の情報サービスノードへ広告６０１を転送することができる。
【００４６】
［４．上位Ｋ個のノードを特定するための分散アルゴリズム］
ワークロードは、図２に示すオーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれによって定期的に測定される。
ワークロードは、１つまたは複数のメトリックから計算することができる。
これらのメトリックには、記憶された広告の個数、処理された問い合わせの個数、問い合わせを処理する平均待ち時間、たとえば毎秒処理される問い合わせ等のスループット等が含まれるが、これらに限定されるものではない。
【００４７】
各エポック（epoch）の初めに、情報サービスノード１３０は交換フェーズに参加する。
各エポックは、交換フェーズおよび／または普及（dissemination）フェーズが実行される期間を含んでもよい。
エポックカウンタまたは次のエポックの開始時刻を上位Ｋリストに含めてもよい。
エポックカウンタまたは次のエポックの開始時刻は、情報サービスノードが、その情報サービスノードによって受信されたリストが現在のエポックについてのものであるか否かを判断するのに使用することができる。
交換フェーズの期間中、上位Ｋ個のノードのリストが、情報サービスノード１３０で構成されたサービスツリーの上方にルーティングされる。
サービスツリーの最上位にはリーダノードがある。
リーダノードは、事前に選択された情報サービスノードとしてもよい。
【００４８】
上位Ｋリストは、オーバーレイネットワーク２１０の情報サービスノード１３０によって測定された最高ワークロードを含み、オーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれを通じて、図７に示すリーダノード７１０へルーティングされる。
上位Ｋリストが、情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身の測定されたワークロードを上位Ｋリストの他のワークロードと比較する。
上位Ｋリストを受信した情報サービスノードのワークロードが、上位Ｋリストの別のワークロードよりも大きい場合、その情報サービスノードは、自身のワークロードを上位Ｋリストに含め、場合により、それによりも小さなワークロードは置き換えられる。
上位Ｋリストは、所定の個数であるＫ個のワークロードを含むことができる。
したがって、上位Ｋリストが含むワークロードがＫ個よりも少ない場合、情報サービスノードは、自身のワークロードを上位Ｋリストに含める。
また、上位Ｋリストは、最初に、いくつかの上位Ｋリストで構成することもできる。
たとえば、情報サービスノード１３０を含むサービスツリーの各リーフが、上位Ｋリストを創設する（originate）ことができる。
これらの上位Ｋリストは、いくつかの上位Ｋリストを受信する情報サービスノードで結合することができる。
最終的に、リーダノード７１０が単一の上位Ｋリストを編集する。
【００４９】
上位Ｋリストに加えて、オーバーレイネットワークにおけるＬ最低レベルベクトルおよび最高ルーティング表値も、オーバーレイネットワーク２１０を通じて伝播される。
最低レベルベクトルは、オーバーレイネットワーク２１０のＬ個の最低ルーティング表レベルを含む。
最低レベルベクトルが情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身のルーティング表の最高レベルを、最低レベルベクトルの他の値と比較する。
最低レベルベクトルを受信した情報サービスノードのルーティング表の最高レベルが、最低レベルベクトルの別の値よりも小さい場合、その情報サービスノードは、自身の最高レベルを最低レベルベクトルに含め、場合により、それよりも大きな値が置き換えられる。
最低レベルベクトルは、所定の個数であるＬ個の値を含むことができる。
したがって、最低レベルベクトルが含む値がＬ個よりも少ない場合、情報サービスノードは、自身の最高レベルを最低レベルベクトルに含める。
また、最低レベルベクトルは、最初に、いくつかの最低レベルベクトルで構成することもできる。
たとえば、情報サービスノード１３０を含むサービスツリーの各リーフが、最低レベルベクトルを創設することができる。
最低レベルベクトルは、いくつかの最低レベルベクトルを受信する情報サービスノードにおいて結合することができる。
最終的に、リーダノード７０１がＬ個の値を含む単一の最低レベルベクトルを編集する。
【００５０】
オーバーレイネットワーク２１０の情報サービスノード１３０のルーティング表の最高レベルも、オーバーレイネットワーク２１０の情報サービスノード１３０のそれぞれを通じて、図７に示す同じリーダノード７０１へルーティングされる。
最高レベルが、情報サービスノード１３０のそれぞれを通じてルーティングされる時、各情報サービスノードは、自身のルーティング表の最高レベルを受信した値と比較する。
情報サービスノードのルーティング表の最高レベルが、受信した値よりも大きい場合、その情報サービスノードは、受信した値を自身の値に置き替える。
情報サービスノード１３０を含むサービスツリーの各リーフが、その最高レベルを創設することになる。
これらの値は、いくつかの最高レベル値を受信した情報サービスノードにおいて結合することができる。
最終的に、リーダノード７０１が単一の最高レベルを編集する。
最高ルーティング表レベルは、便宜のための、Ｌ最低レベルベクトルに含めることができ、オーバーレイネットワークを通じてＬ最低レベルベクトルと共に送信することができる。
【００５１】
交換フェーズの期間中、上位Ｋリストがリーダノード７０１へルーティングされる時、情報サービスノード１３０のそれぞれは、ＩＰアドレス等の識別子を上位Ｋリストに含める。
上位Ｋリストを受信した情報サービスノードが上位Ｋリストに自身のワークロードを含めない場合であっても、識別子は含められる。
普及フェーズでは、上位Ｋリストは、これらの識別子を使用して情報サービスノード１３０のそれぞれを通じてサービスツリーの下方に送信される。
たとえば、上位Ｋリストは、各情報サービスノードが上位Ｋリストを受信した順序とは逆の順序で、情報サービスノード１３０のそれぞれへ送信される。
また、新たな情報サービスノードが情報サービスに参加する時、その新たな情報サービスノードは、ルーティング表を生成してその新たな情報サービスノードのグローバルキャッシュに広告および問い合わせを記憶することに加えて、最後のエポックにおいて測定されたワークロードを含む上位Ｋリストを受信する。
【００５２】
交換フェーズおよび普及フェーズを図７に関してさらに示す。
図７は、オーバーレイネットワーク２１０の情報サービスノード１３０ａ〜１３０ｄを含むサービスツリーの一部を示している。
リーダノード７０１は、情報サービスノード１３０ａである。
交換フェーズの期間中、情報サービスノード１３０ａ〜１３０ｄは、自身のワークロードを測定する。
ワークロードの上位Ｋリストは、リーフ、たとえば情報サービスノード１３０ｄおよび１３０ｅからリーダノード７０１へサービスツリーの上方に送信される。
【００５３】
情報サービスノード１３０は、上位Ｋリストのワークロードベクトルおよび最低レベルベクトルを生成して、サービスツリーがどれだけ非対称になっているか、または、サービスツリーがどれだけバランスがとれているかを指定する。
最低レベルベクトルは、サービスツリーのバランスを維持することを試みながら、ワークロード分割のための情報サービスノードを選択するのに使用することができる。
たとえば、オーバーレイネットワーク２１０の最高（最大）ルーティング表レベルと最低レベルベクトルの最小値との差がしきい値と比較される。
この差がしきい値よりも大きい場合、サービスツリーのバランスの維持を試みて、ワークロード分割用の、最小値を有する情報サービスノードを選択することができる。
したがって、オーバーレイネットワーク２１０の最高（最大）ルーティング表レベルと最低レベルベクトルの最小値との差をしきい値と比較することは、サービスツリーがどれだけ非対称になっているか、または、サービスツリーがどれだけバランスがとれているかを推定する一例である。
この推定に基づいて、情報サービスノードは、ワークロード分割用の情報サービスノードを選択して、サービスツリーのバランスをとることができる。
【００５４】
図７に示すように、情報サービスノード１３０ｄおよび１３０ｅは、自身のワークロードを測定し、ワークロードベクトル７１０および７１１をそれぞれ生成する。
Ｋ個の最高ワークロードを含むオーバーレイネットワーク２１０のワークロードベクトルが結合されて、上位Ｋリストが形成される。
各ワークロードベクトルは、少なくとも、情報サービスノードの識別情報および測定されたワークロードを含む。
また、情報サービスノード１３０ｄおよび１３０ｅは、最低レベルベクトル７２０および７２１もそれぞれ生成する。
最低レベルベクトルは、その情報サービスノードのルーティング表における最高レベルを含む。
情報サービスノード１３０ａ〜１３０ｄの最高レベルの例は、図８Ａ〜図８Ｄに示され、０、２、１、および２をそれぞれ含む。
最低レベルベクトルは、オーバーレイネットワーク２１０のＫ個の最低レベルを含むＫ最低レベルリストを形成するのに使用される。
Ｋ最低レベルリストは、オーバーレイネットワーク２１０の最高レベルを有する情報サービスノードの情報サービスノードＩＤおよびルーティング表レベルも含む。
【００５５】
いくつかの上位Ｋリストは、交換フェーズの期間中に交換することができ、情報サービスノード１３０ｂ等の中間ノードにおいて結合することができる。
たとえば、ワークロードベクトル７１０および７１１は、情報サービスノード１３０ｂへ送信された上位Ｋリストである。
Ｋが３であると仮定すると、情報サービスノード１３０ｂは、ワークロードベクトル７１０および７１１と自身のワークロードベクトルとを結合して、上位Ｋリスト７１２にする。
上位Ｋリスト７１２は、リーダノード７０１に向けて送信され、情報サービスノード１３０ｃおよび／または１３０ａのワークロードが、各情報サービスノードによって受信された上位Ｋリスト７１２のワークロードよりも高い場合には、それらの情報サービスノード１３０ｃおよび／または１３０ａのワークロードを含めることができる。
【００５６】
また、交換フェーズの期間中、最低レベルベクトル７２０および７２１は、情報サービスノード１３０ｂへ送信される。
情報サービスノード１３０ｂは、最低レベルベクトル７２０および７２１と自身の最低レベルベクトルとを結合して、Ｋ最低レベルリスト７２２にする。
Ｋ最低レベルリストは、リーダノード７０１に向けて送信され、情報サービスノード１３０ｃおよび／または１３０ａのレベルが、Ｋ最低レベルリストのレベルよりも低い場合には、それらの情報サービスノードの最高ルーティング表レベルを含めることができる。
加えて、Ｋ最低レベルリストは、オーバーレイネットワーク２１０の最高レベルを有するサービスノードを含む。
最大レベルと、ワークロード分割のために最初に選択された情報サービスノードのレベルとの差をしきい値と比較して、最初に選択された情報サービスノードが、ワークロード分割のために選択されたもののままであるか否かを判断することができる。
この比較は、サービスツリーのバランスを維持するための一技法である。
【００５７】
また、普及フェーズの期間中に上位Ｋリストをすべての情報サービスノードに普及できるように、交換フェーズの期間中、上位Ｋリストを受信する情報サービスノードの順序が、情報サービスノード１３０に記憶される。
たとえば、情報サービスノード１３０ｂが普及フェーズの期間中に上位Ｋリスト７１２を情報サービスノード１３０ｅおよび１３０ｄへ送信するように、順序情報７３０は、ＩＰアドレス等の、情報サービスノード１３０ｅおよび１３０ｄの識別情報を含む。
順序情報の他の例には、情報サービスノード１３０ｂのＩＰアドレス等、情報サービスノード１３０ｃにおける順序情報７３１、および、情報サービスノード１３０ｃのＩＰアドレス等、情報サービス１３０ａにおける順序情報７３２が含まれる。
したがって、普及フェーズの期間中、上位Ｋリスト７１２は、すべての情報サービスノード１３０へサービスツリーの下方に送信される。
Ｋ最低レベルリストも、普及フェーズの期間中にサービスツリーの下方に送信される。
【００５８】
上位Ｋリストを送信する情報サービスノードのルーティング表に基づいて上位Ｋリストをどの情報サービスノードへ送信するかを決定するのに、上位Ｋルーティングアルゴリズムが使用される。
たとえば、図８Ａ〜図８Ｄは、情報サービスノード１３０ａ〜１３０ｄのルーティング表を示している。
上位Ｋリストをリーダノードへルーティングするために、上位Ｋリストを受信する情報サービスノードは、対応する分割値未満の範囲を担当する、自身のルーティング表における最大レベルへ上位Ｋリストを送信する。
上位Ｋリストの情報は、上位Ｋリストがリーダノードへルーティングされる所までに判明した上位Ｋ個のノードおよびそれらのノードのワークロードを特定する。
たとえば、図８Ｄの情報サービスノード１３０ｄのルーティング表を参照すると、最高レベルまたは最大レベルは、２のレベルを有するエントリー８４０にある。
エントリー８４０は、応答時間属性について２０ｍｓの属性分割値を含む。
応答時間の範囲は応答時間≦２０ｍｓを含む。
この範囲は、対応する分割値未満、すなわち、２０ｍｓの分割値よりも小さいので、ノード１３０ｂは上位Ｋリストを受信する次のノードとして特定される。
ノード１３０ｄは、上位Ｋリストをノード１３０ｂへ送信する。
【００５９】
情報サービスノード１３０ｂは、上位Ｋリストを受信し、上位Ｋルーティングアルゴリズムに基づき、図８ｂに示す情報サービスノード１３０ｂのルーティング表のエントリー８２０を使用して、情報サービスノード１３０ｃを、上位Ｋリストを受信する次の情報サービスノードとして特定する。
情報サービスノード１３０ｂは、上位Ｋリストに自身のワークロードを含め、上位Ｋリストを情報サービスノード１３０ｃへ送信する。
【００６０】
この例では、Ｋ＝３の値である。
また、情報サービスノード１３０ｃは、図７に示すように、情報サービスノード１３０ｂ、１３０ｄ、および１３０ｅのワークロードも受信する。
情報サービスノード１３０ｃのワークロードが、情報サービスノード１３０ｂ、１３０ｄ、および１３０ｅのワークロードよりも小さい場合、情報サービスノード１３０ｃは、自身のワークロードを上位Ｋリストに含めない。
情報サービスノード１３０ｃのルーティング表のエントリー８３０は、上位Ｋルーティングアルゴリズムに基づいて、上位Ｋリストを受信する次のノードとして情報サービスノード１３０ａを特定する。
情報サービスノード１３０ａは、自身のワークロードが上位Ｋリストの３つのワークロードよりも大きいか否かを判断する。
大きい場合には、情報サービスノード１３０ａは、自身のワークロードを上位Ｋリストに含める。
また、情報サービスノード１３０ａはリーダノードでもある。
リーダノードは、自身のルーティング表の対応する分割値よりも大きな属性範囲のみを有する情報サービスノードである。
図８Ａに示す情報サービスノード１３０ａのルーティング表は、１つのエントリー８１０を含む。
エントリー８１０は、１ＧＢの対応する分割値よりも大きな属性範囲を含む。
したがって、情報サービスノード１３０ａのルーティング表は、対応する分割値よりも大きな属性範囲しか含まず、情報サービスノード１３０ａはリーダノードである。
これとは対照的に、情報サービスノード１３０ｂ〜１３０ｄのルーティング表は、エントリー８２０、８３０および８４０等、対応する分割値よりも小さな少なくとも１つの属性範囲を含む。
【００６１】
リーダノードが上位Ｋリストを受信した後、普及フェーズが開始する。
図７に示すように、リーダノード、たとえば情報サービスノード１３０ａは、上位Ｋリストを情報サービスノード１３０ｃへ送信する。
上位Ｋリストは、最終的には、たとえば、前に、上位Ｋリストがリーダノードに向けてサービスツリーの上方にルーティングされた時に情報サービスノードが上位Ｋリストを受信した順序と逆の順序で、すべての情報サービスノードへ普及される。
【００６２】
上位Ｋリストは、オーバーレイネットワーク２１０のＫ個の最高ワークロードのリストを含む。
本明細書で使用されるようなリストは、ノード間で送信できる１つまたは複数の値のデータ表現を含む。
たとえば、上位Ｋリストは、オーバーレイネットワーク２１０の最大のワークロードの値を含む。
これらの値は、情報サービスノード１３０間で送信される。
上位Ｋリストは、ワークロードを含むことに加えて、上位Ｋリストにワークロードを有する情報サービスノードの識別子も含む。
識別子の一例はＩＰアドレスであるが、他の識別子も使用することができる。
【００６３】
［５．分割アルゴリズム］
図８Ｂ〜図８Ｄに示すルーティング表は、情報サービスノードのワークロードをバランスさせるのに使用される分割アルゴリズムに基づいて生成することができる。
分割アルゴリズムの一タイプは、高いワークロードを有する上位Ｋリストにおける情報サービスノード等の情報サービスノードのワークロードを分割するのに使用されるローカル分割アルゴリズムである。
情報サービスノードのワークロードは、オーバーレイネットワーク２１０に参加する新たな情報サービスノードまたは既存の情報サービスノード等、別の情報サービスノードと分割することができる。
【００６４】
ローカル分割アルゴリズムは、情報サービスノードのワークロードを分割するための属性および少なくとも１つの属性分割値を特定するのに使用される。
各広告は、所定の一組の属性、および、場合により、その一組の属性における各属性の属性値を含むことができる。
一組の属性および対応する属性値を含む広告の一例は、上記表３に示されている。
ローカル分割アルゴリズムは、一組の属性から１つの属性を選択し、且つ、選択した属性の少なくとも１つの属性分割値を選択して、情報サービスノードのワークロードを分割するのに使用される。
【００６５】
図９Ａ〜図９Ｃは、新たなノードがオーバーレイネットワーク２１０に参加する時に、情報サービスノードがそれらの情報サービスノード間でワークロードを分散させるプロセスを示すのに助けとなるものである。
オーバーレイネットワーク２１０への加入許可を制御するのに、アドミッションポリシーを使用することができる。
たとえば、ノードがしきい値よりも大きなアップタイムを有する場合、ノードが一時的なものでない場合、および、ノードが所定のしきい値よりも大きな処理速度、ディスク容量、メモリ等の所定のハードウェア属性を含む場合に、そのノードがオーバーレイネットワーク２１０に参加することを許可することができる。
【００６６】
この例では、当初、情報サービスノード１３０ａは、広告の記憶および問い合わせに対する応答を行う唯一のノード等、情報サービスを提供する唯一のノードであった。
その後、情報サービスノード１３０ｂが情報サービスに参加する。
ローカル分割アルゴリズムを適用することによって、情報サービスノード１３０ａが、メモリ≦１ＧＢを有する広告を記憶し、メモリ≦１ＧＢを有する問い合わせに応答する、すなわち、メモリ≦１ＧＢの属性部分空間を有し、且つ、情報サービスノード１３０ｂが、メモリ＞１ＧＢを有する広告を記憶し、メモリ＞１ＧＢを有する問い合わせに応答する、すなわち、メモリ＞１ＧＢの属性部分空間を有する場合に、情報サービスノード１３０ａは、自身のワークロードの均等な分散を達成できると判断する。
ワークロードのこの分割は、分割後の属性部分空間並びに情報サービスノード１３０ａおよび１３０ｂのルーティング表を示す図９Ａに示されている。
【００６７】
情報サービスノード１３０ｃは、情報サービスおよび情報サービスを提供するオーバーレイネットワーク２１０に参加する次のノードであり、情報サービスノード１３０ａおよび１３０ｂの１つまたは複数のワークロードは再分散されるべきである。
１つの選択肢は、情報サービスを現在提供しているすべての情報サービスノード、たとえば情報サービスノード１３０ａおよび１３０ｂのワークロードをグローバルに評価することである。
これは、グローバル分割アルゴリズムを適用することによって達成される。
グローバル分割アルゴリズムは、すべての情報サービスノードに影響を与え、潜在的にすべての情報サービスノードのワークロードを再分散する。
もう１つの選択肢は、ローカル分割アルゴリズムを適用することである。
ローカル分割アルゴリズムは、新たなノードが情報サービスに参加するごとに、また、その後、グローバルな再分散を定期的に行うごとに、単一の情報サービスノードのワークロードを分割する。
【００６８】
図９Ｂは、情報サービスノード１３０ｂのワークロードのローカルな再分散を示している。
情報サービスノード１３０ｂの属性部分空間を情報サービスノード１３０ｃとどのように分割するかを決定するのに、異なるタイプのローカル分割アルゴリズムを使用することができる。
一例では、Ｋ平均クラスタリング等の反復クラスタリングアルゴリズムが使用されて、このクラスタリングアルゴリズムによって見つけられた２つのクラスタに基づき、属性および属性分割値が選択される。
別の例では、同じＫ平均クラスタリングアルゴリズム等のクラスタリングアルゴリズムが使用されて、３つのクラスタが決定され、これらの３つのクラスタが使用されて、情報サービスノード１３０ｂのワークロードを分割するための属性および属性分割値が選択される。
【００６９】
図９Ｂは、クラスタリングアルゴリズムを使用して、情報サービスノード１３０ｂのワークロードを情報サービスノード１３０ｃと分割するための３つのクラスタが決定された後の情報サービスノード１３０ｂおよび１３０ｃの属性部分空間およびルーティング表を示している。
【００７０】
ディスク容量が、分割のために選択された属性であると仮定する。
以下の表４は、情報サービスノード１３０ｃとの分割前の情報サービスノード１３０ｂの属性部分空間に分類される広告および問い合わせの分散を示している。
この分散は、クラスタリングアルゴリズムを使用して決定することができる。
【００７１】
［情報サービスノード１３０ｂのワークロード分散の表４］
ディスク容量≦２ＧＢ：    ４０％，
２＜ディスク容量≦５ＧＢ：    ２０％，
ディスク容量＞５ＧＢ：    ４０％，
【００７２】
表４に示すように、クラスタリングアルゴリズムは、情報サービスノード１３０ｂのワークロードの８０％が、たとえば４０％はディスク容量≦２ＧＢの属性値の或るクラスタに関連付けられ、たとえば４０％はディスク容量＞５ＧＢの属性値の別のクラスタに関連付けられることを決定する。
これらの２つのクラスタは、合わせて、分割前の情報サービスノード１３０ｂに記憶された広告および問い合わせの８０％をカバーする。
２つの属性分割値は、これらのクラスタに基づいて選択される。
１つの分割値は２ＧＢである。
【００７３】
分割後に情報サービスノード１３０ｃがディスク容量の属性値≦２ＧＢを有する広告を記憶する確率は１００％である。
これは、情報サービスノード１３０ｂのルーティング表のエントリー９１０および情報サービスノード１３０ｃの属性部分空間に反映される。
もう１つの分割値は５ＧＢである。
分割後に情報サービスノード１３０ｂがディスク容量の属性値＞５ＧＢを有する広告を記憶する確率は１００％である。
これは、情報サービスノード１３０ｃのエントリー９２０および情報サービスノード１３０ｂの属性部分空間に反映される。
【００７４】
クラスタリングアルゴリズムによって特定される第３のクラスタは、次の範囲、すなわち、２ＧＢ＞ディスク容量≦５ＧＢを含む。
クラスタリングアルゴリズムは、情報サービスノード１３０ｂのワークロードの２０％が第３のクラスタに関連付けられることを決定する。
情報サービスノード１３０ｂまたは１３０ｃのいずれかに、或る確率で、第３のクラスタに分類される広告および問い合わせを記憶することを割り当てることができる。
広告が情報サービスノード１３０ｂおよび１３０ｃに受信されるとともに記憶される割合をほぼ等しくするように確率を割り当てることができる。
情報サービスノード１３０ｂおよび１３０ｃのルーティング表のエントリー９１２および９２２は、広告が、エントリーにリストアップされた情報サービスノードで見つかる確率をそれぞれ示している。
たとえば、２ＧＢよりも大きなディスク容量属性値を有する問い合わせは、情報サービスノード１３０ｃの属性部分空間に基づいて情報サービスノード１３０ｃへルーティングすることができる。
一致するものが見つからない場合、２ＧＢよりも大きなディスク容量属性値を有する広告が情報サービスノード１３０ｂに記憶される確率は５０％であるので、問い合わせは、エントリー９２２に基づいて情報サービスノード１３０ｂへルーティングされる。
【００７５】
情報サービスノード１３０ｂの属性部分空間が、情報サービスノード１３０ｃの属性部分空間と分割された後、情報サービスノード１３０ｂは、情報サービスノード１３０ｃの属性部分空間に分類されるすべての記憶された広告および問い合わせを情報サービスノード１３０ｃへ送信する。
このように、情報サービスノード１３０ｃは、自身の属性部分空間内に分類される問い合わせに応答する準備ができている。
【００７６】
図９Ｃは、分割アルゴリズムが情報サービスノード１３０ｂに適用されて、情報サービスノード１３０ｂのワークロードが情報サービスノード１３０ｄと分割された後の情報サービスノード１３０ｂおよび１３０ｄのルーティング表および属性部分空間の例を示している。
この例では、Ｋ平均クラスタリング等の反復クラスタリングアルゴリズムが使用されて、クラスタリングアルゴリズムにより見つけられた２つのクラスタに基づき属性および属性分割値が選択される。
選択された属性は応答時間であり、２つのクラスタから決定された分割値は２０ｍｓである。
たとえば、クラスタリングアルゴリズムは、応答時間属性について、情報サービスノード１３０ｂにより記憶された広告および問い合わせを２つのクラスタに分割できると判断する。
一方のクラスタは属性値＜２０ｍｓを含み、他方のクラスタは属性値≧２０ｍｓを含む。
したがって、２０ｍｓの属性分割値が選択され、情報サービスノード１３０ｂのワークロードは、２０ｍｓの分割値に基づいて情報サービスノード１３０ｄと分割される。
【００７７】
上述したように、情報サービスノードのワークロードを分割するための属性および分割値を選択するのに、分割アルゴリズムを使用することができる。
分割アルゴリズムの一例は、属性および分割値を決定するための２つのクラスタを特定するＫ平均クラスタリングアルゴリズムである。
Ｋ平均クラスタリングアルゴリズムは、所定の個数のクラスタにデータの母集団をグループ化するのに使用される既知のアルゴリズムである。
たとえば、２つのクラスタが選択された場合、その母集団の各データ点は、ほぼ同じ個数のデータ点が各クラスタに存在するように、２つのクラスタの１つにランダムに割り当てられる。
次に、各クラスタの各データ点が評価されて、そのデータ点が、クラスタへの最小距離に基づきいずれのクラスタに属するかが判断される。
たとえば、クラスタリングは、情報サービスノード１３０ｂのメモリ属性について実行される。
情報サービスノード１３０ｂは、自身に記憶されたすべての広告のメモリ属性値を決定する。
それぞれ１ＧＢおよび５ＧＢに中心を有する２つのクラスタが選択される。
【００７８】
各属性値が評価されて、その属性値がクラスタへの最小距離に基づきどのクラスタに属するかが判断される。
たとえば、０．２５ＧＢの属性値は、５ＧＢよりも１ＧＢに近く、したがって、０．２５ＧＢの属性値は、１ＧＢのクラスタに割り当てられる。
４ＧＢの属性値は、５ＧＢに近く、５ＧＢのクラスタに割り当てられる。
この評価は、異なるクラスタに再割り当てする必要があるデータ点がないとの判断がなされるまで実行される。
【００７９】
２つのクラスタを決定することは、或る数値を有する所定の一組の属性における各属性について実行される。
たとえば、表３は、この一組における属性のそれぞれについての属性値を含む広告の一例を示している。
アプリケーション属性値は数値ではないので、クラスタリングは、アプリケーション属性以外は、属性のそれぞれについて実行される。
【００８０】
Ｋ平均クラスタリングアルゴリズムを適用して、各属性値について２つのクラスタを決定した後、少なくとも１つの最適化基準が使用されて、分割のための属性の１つが選択される。
次に、クラスタに基づいて、選択された属性の分割値が決定される。
最適化基準の一例には、クラスタリングが２つのクラスタ間のサイズの最小差につながる属性が含まれ得る。
別の例には、各クラスタにおける各一組の属性値を０から１の範囲の値に正規化し、次に、Ｋ平均クラスタリングが収束する最小二乗誤差を有する属性を選択することが含まれ得る。
情報サービスノードのワークロードを最適に分割することを可能にするクラスタを有する属性が選択されるように、他の最適化メトリックを使用して、各属性のクラスタを評価することもできる。
【００８１】
属性が選択された後、分割値が、選択された属性のクラスタに基づいて決定される。
たとえば、Ｍ１およびＭ２は、それぞれ、Ｍ１＜Ｍ２となるようなクラスタＣ１およびＣ２のそれぞれの属性値の平均である。
Ｍａｘ（Ｃ１）をＣ１の最大属性値にする一方、Ｍｉｎ（Ｃ２）はＣ２の最小属性値である。
分割値は、（Ｍａｘ（Ｃ１）＋Ｍｉｎ（Ｃ２））／２に等しい。
【００８２】
Ｋ平均クラスタリングアルゴリズムは、情報サービスノードのワークロードを分割するための属性および分割値を特定する３つのクラスタを決定するのに使用することもできる。
Ｋ平均クラスタリングアルゴリズムが使用されて、或る数値を有する所定の一組の属性における各属性の３つのクラスタが決定される。
Ｋ平均クラスタリングアルゴリズムを適用して、各属性の３つのクラスタを決定した後、少なくとも１つの最適化基準が使用されて、分割のための属性の１つが選択される。
次に、選択された属性の分割値がクラスタに基づいて決定される。
上述した最適化基準を使用することができる。
【００８３】
属性が選択された後、選択された属性の分割値が、クラスタに基づいて決定される。
たとえば、Ｍ１、Ｍ２、およびＭ３は、それぞれ、Ｍ１＜Ｍ２＜Ｍ３となるようなクラスタＣ１、Ｃ２、およびＣ３のそれぞれの属性値の平均である。
クラスタＣ１の広告は、情報サービスノード１３０ｃ等、情報サービスノードの一方に割り当てられ、クラスタＣ３の広告は、情報サービスノード１３０ｂ等、他方の情報サービスノードに割り当てられる。
第３のクラスタＣ２の広告は、確率に基づいて、情報サービスノード１３０ｃまたは１３０ｂの一方に割り当てられる。
２つの情報サービスノード間のワークロードの一様な分散を確実にするために、クラスタＣ２からの広告が情報サービスノード１３０ｂまたは１３０ｃの一方に割り当てられる確率Ｐおよび（１−Ｐ）が求められる。
Ｐの値は、Ｓｉｚｅ（Ｃ１）＋Ｐ＊Ｓｉｚｅ（Ｃ２）＝（１−Ｐ）＊Ｓｉｚｅ（Ｃ２）＋Ｓｉｚｅ（Ｃ３）によって与えられる。
図９Ｂに示す２ＧＢおよび５ＧＢ等の２つの分割値は、Ｍａｘ（Ｃ１）およびＭｉｎ（Ｃ３）である。
【００８４】
Ｋ平均クラスタリングアルゴリズムは、属性を選択し且つ１つまたは複数の属性分割値を決定するのに使用される１つのタイプのクラスタリングアルゴリズムである。
エンティティ平均クラスタリング（entity means clustering）等の他のタイプのクラスタリングアルゴリズム、または、他のタイプの統計解析を使用して、各広告の属性の属性値等のデータ間の類似度を求め、類似したデータをグループ化してワークロードを分割することもできる。
【００８５】
上述したローカル分割アルゴリズムは、新たな情報サービスノード等の別の情報サービスノードが、オーバーレイネットワーク２１０に参加した状態で、上位Ｋリストにおいて最高ワークロードまたは複数の最高ワークロードのうちの１つを有する情報サービスノードの１つとすることができる、或る情報サービスノードのワークロードを分割するのに使用される。
別の選択肢は、オーバーレイネットワークのすべての情報サービスノードのワークロードをグローバルに評価し、場合により、すべての情報サービスノードのワークロードを再割り当てして、情報サービスノード１３０のワークロードをバランスさせることである。
これは、グローバル分割アルゴリズムを適用することによって達成される。
グローバル分割アルゴリズムは、すべての情報サービスノードに影響を与え、潜在的に、すべての情報サービスノードのワークロードを再分散する。
【００８６】
グローバル分割アルゴリズムは、個別の情報サービスノードではなく、多数の情報サービスノードまたはすべての情報サービスノードのワークロードをバランスさせるのに使用でき、また、オーバーレイネットワーク２１０の待ち時間を改善するのにも使用することができる。
たとえば、ローカル分割アルゴリズムが、オーバーレイネットワーク２１０の１つのエリアの多くの情報サービスノードに適用される場合、そのエリアの情報サービスノードのワークロードをより良くバランスさせることができる。
しかしながら、広告が分類される属性部分空間を所有する情報サービスノード等、オーバーレイネットワーク２１０の最終宛先に達するのに要するホップが多くなる場合があるので、オーバーレイネットワーク２１０における待ち時間は増加する場合がある。
グローバル分割アルゴリズムは、オーバーレイネットワーク２１０のすべての情報サービスノード１３０のワークロードをバランスさせて、待ち時間を最小にするのに使用することができる。
グローバル分割アルゴリズムは、定期的に適用することができ、情報サービスの処理が履歴上低い時に適用して、情報サービスに対する混乱を最小にすることができる。
【００８７】
すべての情報サービスノードのグローバル評価は、各情報サービスノードが、或る期間中に各情報サービスノードによって受信されたすべての広告を要約することから開始する。
要約の一例には、ヒストグラムが含まれ得る。
このヒストグラムは、最近の２４時間の間に受信した広告の２０％が４ＧＢと５ＧＢとの間のメモリを有し、２０％が０．５ＧＢと１ＧＢとの間のメモリを有する等といったものである。
ヒストグラムは属性ごとに設けることができる。
要約は、ヒストグラム以外の形式で提供することもできる。
【００８８】
図１０は、グローバル分割アルゴリズムの開始フェーズにおける情報サービスノード１３０を示している。
図１０は、情報サービスノード１３０が中央ノード１０１０へ要約１０２０を送信することを示している。
中央ノード１０１０は、情報サービスノード１３０の１つとすることができる。
別の例では、中央ノード１０１０は、複数の情報サービスノードを含むことができ、各情報サービスノードは、たとえば、極めて近接した情報サービスノードから要約を受信するように割り当てられる。
この例では、複数の中央ノードが互いに通信して、グローバル分割アルゴリズムを適用する。
【００８９】
中央ノード１０１０は、各情報サービスノードからの要約の入力全体に分割アルゴリズムを適用する。
分割アルゴリズムは、上述したローカル分割アルゴリズムの１つを含むことができる。
たとえば、Ｋ平均クラスタリングアルゴリズム等のクラスタリングアルゴリズムを使用して、情報サービスノードからの要約から各属性について２つのクラスタを特定することができる。
属性および分割値は、決定されたクラスタに基づいて選択される。
たとえば、図１１Ａに示すように、メモリ属性を選択することができ、分割値は２ＧＢとすることができる。
次に、２つの情報サービスノード１３０ｄおよび１３０ａが、要約を提供する一組の情報サービスノード１１００から選択される。
情報サービスノード１３０ｄおよび１３０ａには、分割値に基づいて属性部分空間が割り当てられる。
たとえば、情報サービスノード１３０ｄには、メモリ≦２ＧＢの属性部分空間が割り当てられ、情報サービスノード１３０ａには、メモリ＞２ＧＢの属性部分空間が割り当てられ、これらの２つの情報サービスノードのそれぞれについてルーティング表が作成される。
次に、最大のクラスタを有する情報サービスノードが分割される。
たとえば、メモリ≦２ＧＢを有する広告よりもメモリ＞２ＧＢを有する広告の方が多いことが、図１０に示す要約１０２０から判断された場合、情報サービスノード１３０ａのメモリ＞２ＧＢを有する広告のクラスタは、別の情報サービスノードと分割される。
図１１Ｂは、情報サービスノード１３０ａのワークロードを分割するのに選択された情報サービスノード１３０ｆを示している。
このプロセスは、すべての情報サービスノードにオーバーレイネットワーク２１０の属性部分空間が割り当てられるまで繰り返される。
一例では、情報サービスノードは、クラスタが分割されるごとに一組１１００から任意で選択することができる。
【００９０】
一組１００のすべてのノードが新たな属性部分空間を割り当てられ、新たなルーティング表を生成した後、広告が、各広告が分類される属性部分空間を有する情報サービスノードへ送信される。
たとえば、各情報サービスノードは、自身のグローバルキャッシュに記憶された広告を、対応する属性部分空間を再割り当てされた情報サービスノードへ送信する。
或いは、情報サービスノード１３０のそれぞれは、自身のグローバルキャッシュを空にして、サービスノード１２０からオーバーレイネットワーク２１０への広告の次の報告を待つこともできる。
たとえば、図１および図２に示すサービスノード１２０は、オーバーレイネットワーク２１０へ広告を定期的に送信することができ、したがって、情報サービスノード１３０は、各属性部分空間に関連する広告を記憶する次の報告を待つことができる。
【００９１】
上述した２クラスタローカル分割アルゴリズムを使用する代わりに、グローバル分割アルゴリズムが、３クラスタローカル分割アルゴリズムを適用することができる。
この場合、第３のクラスタについて確率が求められる。
３クラスタローカル分割アルゴリズムは、要約を提供する一組の情報サービスノードが使い果たされるまで適用される。
次に、グローバルキャッシュが、新たに割り当てられた属性部分空間に基づいて再ポピュレートされる。
【００９２】
図１２は、一実施形態による、ローカル分割アルゴリズムを適用するための方法１２００のフローチャートを示している。
ステップ１２０１において、情報サービスノード１３０ｂ等の、オーバーレイネットワーク２１０の情報サービスノードが要求を受信する。
この要求は、参加要求、または、情報サービスノード１３０ｂのワークロードの分割を起動するあらゆるメッセージとすることができる。
たとえば、情報サービスノード１３０ｂは、上位Ｋリストにおける最高ワークロードを有する情報サービスノードまたは上位Ｋリストにおける複数の最高ワークロードのうちの１つを有する情報サービスノードとすることができる。
図７に関して上述したＫ最低レベルリストに設けることができる、オーバーレイネットワーク２１０の最大ルーティング表レベル、および同様にＫ最低レベルリストに設けることができる選択された情報サービスノードの最高ルーティング表レベルは、分割のための情報サービスノードを選択する時に考慮することができる。
たとえば、情報サービスノード１３０ｃは、参加要求をオーバーレイネットワーク２１０へ送信する。
この参加要求は、情報サービスノード１３０ｃにネットワークおいて極めて近接していると判断された情報サービスノード１３０ｅ等の情報サービスノードへ送信することができる。
情報サービスノード１３０ｅは、最高ワークロードを有する上位Ｋリストにおいて情報サービスノード１３０ｂを選択する。
また、情報サービスノード１３０ｅは、情報サービスノード１３０ｂの最高ルーティング表レベルを、オーバーレイネットワーク２１０の最大ルーティング表レベルと比較する。
それらのルーティング表レベル間の差がしきい値よりも大きい場合、分割のための別の情報サービスノードを選択することができる。
この別の情報サービスノードは、上位Ｋリストからの別の情報サービスノードとすることができる。
このルーティング表レベルの比較を利用することによって、サービスツリーの１つのエリアの過度の分割によって引き起こされるサービスツリーのアンバランスが最小にされる。
【００９３】
情報サービスノード１３０ｂがステップ１２０１において選択された場合に、１２０２において、情報サービスノード１３０ｂは、ローカル分割アルゴリズムを適用して情報サービスノード１３０ｂのワークロードを分割する。
たとえば、情報サービスノード１３０ｂは、上述したローカル分割アルゴリズムの１つを適用して、情報サービスノード１３０ｂのワークロードを情報サービスノード１３０ｃと分割するための属性および少なくとも１つの属性分割値を選択する。
【００９４】
図１３は、一実施形態による、グローバル分割アルゴリズムを適用するための方法１３００のフローチャートを示している。
方法１３００は、限定ではなく一例として、図１０および図１１Ａ〜図１１Ｂについて説明される。
ステップ１３０１において、中央ノード１０１０が、情報サービスノード１３０から要約１０３０を受信する。
【００９５】
ステップ１３０２において、中央ノード１０１０は、要約の統計解析に基づいて、属性および少なくとも１つの属性分割値を選択する。
統計解析は、上述したローカル分割アルゴリズムの１つを要約１０３０に適用することを含むことができる。
【００９６】
ステップ１３０３において、図１１に示す一組の情報サービスノード１１００からの２つノード、たとえば情報サービスノード１３０ｄおよび１０３ａ、があたかもオーバーレイネットワーク２１０の唯一の情報サービスノードであるかのごとく、中央ノード１０１０はそれらの２つのノードにワークロードを割り当てる。
割り当てられるワークロードは、少なくとも１つの分割値に基づいている。
【００９７】
ステップ１３０４において、中央ノード１０１０は、一組１１００のすべての情報サービスノードにワークロードが割り当てられたか否かを判断する。
すべてに割り当てられているとは限らない場合、ステップ１３０２および１３０３が繰り返される。
【００９８】
［６．レプリカ割り当て］
一実施形態によれば、新たなノードがオーバーレイネットワーク２１０に参加するのに利用可能である時、参加要求が、たとえば、最高ワークロードを有する上位Ｋリストの情報サービスノードへ転送される。
次に、その情報サービスノードは、ローカル分割アルゴリズムの適用に基づいて、自身のワークロードを新たなノードと分割する。
一定の状況では、情報サービスノードのワークロードを分割するのではなく、図１および図２に示すネットワーク１００の別のエリアの既存の情報サービスノードを複製して、特定のサービスの情報を要求したユーザノードと、それらの要求に関連のある広告を記憶している情報サービスノードとの間の待ち時間を削減することがより有益な場合がある。
たとえば、情報サービスノードは、ユーザノードが、問い合わせを処理して結果をユーザノードへ送信する情報サービスノードからの高い待ち時間を受けていると判断された場合に、ネットワーク１００の新たなロケーションにその情報サービスノードを複製することができる。
【００９９】
一例では、上位Ｋリストのワークロードがしきい値未満である場合に、情報サービスノードのワークロードを分割する代わりに、情報サービスノードを複製することができる。
さらに、情報サービスノードのワークロードを削減するのではなく情報サービスノードを複製して待ち時間を削減することがより有益であると仮定される場合がある。
【０１００】
特定の情報サービスノードとユーザノードとの間の待ち時間がしきい値よりも大きい場合、この情報サービスノードを複製することができる。
待ち時間は、各情報サービスノードのレプリカ情報キャッシュに記憶することができる。
情報サービスノード１３０ｂの、図４に示すレプリカロケーションキャッシュ４４０は、一定の情報サービスノードの待ち時間に関連する情報を記憶する。
情報サービスノード１３０ｂは、レプリカロケーションキャッシュ４４０の情報を使用し、ネットワーク１００の別のエリアにレプリカを追加して待ち時間を削減するか否かを判断することができる。
たとえば、図１４は、情報サービスノード１３０ｂが、情報サービスノード１３０ｂに極めて近接したユーザノード１１０ａ〜１１０ｃから待ち時間報告１４１０ａ〜１４１０ｃを受信することを示している。
情報サービスノード１３０ｂは、オーバーレイネットワーク２１０に問い合わせを送信した時にユーザノード１１０ａ〜１１０ｃが最初に連絡を取る情報サービスノードとすることができる。
報告１４１０ａ〜１４１０ｃは、問い合わせを処理して問い合わせ結果をユーザノード１１０ａ〜１１０ｃへ送信する情報サービスノードからの待ち時間を含む。
また、報告１４１０ａ〜１４１０ｃは、各待ち時間を有する対応した情報サービスノードの識別情報も含む。
待ち時間および情報サービスノードの識別情報は、レプリカロケーションキャッシュ４４０に記憶される。
情報サービスノード１３０ｂは、ノード１４２０から参加要求を受信する。
情報サービスノード１３０ｂは、上位Ｋリストのワークロードがしきい値未満であるか否かを判断する。
ワークロードがしきい値未満である場合、情報サービスノード１３０ｂは、高い待ち時間を有するレプリカロケーションキャッシュから情報サービスノードを選択する。
一例では、情報サービスノード１３０ｆ等、レプリカロケーションキャッシュ４４０から特定された、しきい値よりも大きな待ち時間を有する情報サービスノードが複製のために選択される。
情報サービスノード１３０ｆが複製され、これは、グローバルキャッシュをコピーすること、およびレプリカである新たな情報サービスノード１４２０に広告を記憶することを含むことができる。
ノード間の距離等のネットワーク近接性情報は、ラウンドトリップ時間、ホップ数等のネットワークメトリックに基づくことができる。
【０１０１】
図１５は、一実施形態による、情報サービスノードを複製するための方法１４００のフローチャートを示している。
方法１４００は、限定ではなく一例として図１４に示す例について説明される。
ステップ１５０１において、情報サービスノード１３０ｂが、ワークロード分割または複製を促すノード１４２０から参加要求等の要求を受信する。
【０１０２】
ステップ１５０２において、情報サービスノード１３０ｂは、情報サービスノードを複製するのか、それとも、情報サービスノードのワークロードを分割するのかを決定する。
一例では、上位Ｋリストのワークロードがしきい値未満である場合、情報サービスノードのワークロードを分割する代わりに、情報サービスノードを複製することができる。
【０１０３】
ステップ１５０３において、情報サービスノード１３０ｂが情報サービスノードを複製すると決定した場合、情報サービスノード１３０ｂは、複製される情報サービスノードを選択する。
複製のための情報サービスノードを選択する時に考慮される因子は、情報サービスノードの待ち時間およびノード１４２０とユーザノードとの間の距離を含む。
たとえば、距離について、情報サービスノード１３０ｂがユーザノードから報告を受信するノードである場合、高い待ち時間を有するユーザノードおよび情報サービスノード１３０ｂに対して同じネットワーク近接性を有する新たなノードが、レプリカとなるように選択される。
【０１０４】
ステップ１５０４において、選択された情報サービスノードが複製される。
たとえば、情報サービスノード１３０ｆのグローバルキャッシュおよびルーティング表がノード１４２０にコピーされる。
【０１０５】
図１６は、オーバーレイネットワーク２１０の情報サービスノードとして使用できるコンピュータシステム１６００の一例示のブロック図を示している。
コンピュータシステム１６００は、ソフトウェアを実行するための実行プラットフォームを提供するプロセッサ１６０２等の１つまたは複数のプロセッサを含む。
【０１０６】
プロセッサ１６０２からのコマンドおよびデータは、通信バス１６０４により通信される。
また、コンピュータシステム１６００は、ランタイム期間中、ソフトウェアが常駐することができるランダムアクセスメモリ（ＲＡＭ）等のメインメモリ１６０６および２次メモリ１６０８も含む。
２次メモリ１６０８は、たとえば、ソフトウェアのコピーを記憶できるフロッピー（登録商標）ディスケットドライブ、磁気テープドライブ、コンパクトディスクドライブ等を表す、ハードディスクドライブ１６１０および／または着脱可能ストレージドライブ１６１２、すなわち不揮発性メモリを含む。
また、２次メモリ１６０８は、ＲＯＭ（読み出し専用メモリ）、ＥＰＲＯＭ（消去可能プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）を含むことができる。
ソフトウェアに加えて、ルーティング表、グローバル情報表、並びに、測定されたＱｏＳ特性、測定された利用可能帯域幅、およびサービスに必要とされる帯域幅も、メインメモリ１６０６および／または２次メモリ１６０８に記憶することができる。
着脱可能ストレージドライブ１６１２は、既知の方法で着脱可能ストレージユニット１６１４から読み出しを行い、且つ／または、着脱可能ストレージユニット１６１４に書き込みを行う。
【０１０７】
コンピュータシステム１６００とのユーザインターフェースは、キーボード、マウス、スタイラス等の１つまたは複数の入力デバイス１６２８が用いられる。
ディスプレイアダプタ１６２２は、通信バス１６０４およびディスプレイ１６２０とインターフェースし、プロセッサ１６０２から表示データを受信し、その表示データをディスプレイ１６２０の表示コマンドに変換する。
ネットワークインターフェース１６３０は、他のノードとの通信用に設けられている。
【０１０８】
方法１２００、１３００、および１５００のステップの１つまたは複数は、メモリ１６０６および／または１６０８等のコンピュータ可読媒体に組み込まれるソフトウェアとしてインプリメントすることができ、たとえばプロセッサ１６０２によってコンピュータシステム１６００で実行することができる。
これらのステップは、コンピュータプログラムによって具現化することができる。
コンピュータプログラムは、アクティブおよび非アクティブの双方のさまざまな形で存在し得る。
たとえば、コンピュータプログラムは、ソースコード、オブジェクトコード、実行可能コード、またはステップの一部を実行するための他のフォーマットのプログラム命令で構成されたソフトウェアプログラム（複数可）として存在し得る。
上記のいずれも、コンピュータ可読媒体に具現化することができる。
コンピュータ可読媒体には、圧縮形式または非圧縮形式のストレージデバイスおよび信号が含まれる。
適したコンピュータ可読ストレージデバイスの例には、従来のコンピュータシステムのＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み出し専用メモリ）、ＥＰＲＯＭ（消去可能プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）、および磁気ディスク若しくは磁気テープまたは光ディスク若しくは光テープが含まれる。
コンピュータ可読信号の例は、搬送波を使用して変調されていようといまいと、インターネットまたは他のネットワークを通じてダウンロードされた信号を含めて、コンピュータプログラムをホスティングまたは実行するコンピュータシステムを、アクセスするように構成可能な信号である。
上記の具体例には、ＣＤ  ＲＯＭでのプログラムの配布またはインターネットのダウンロードを介したプログラムの配信が含まれる。
或る意味で、インターネット自体が、抽象的なエンティティとして、コンピュータ可読媒体である。
同じことはコンピュータネットワーク一般にも当てはまる。
したがって、以下に列挙する機能は、上述した機能を実行できるどの電子デバイスによっても実行できることが理解されよう。
【０１０９】
例について実施形態を説明してきたが、当業者は、真の精神および範囲から逸脱することなく、説明した実施形態にさまざまな変更を行うことができる。
本明細書で使用された用語および説明は、例示としてのみ述べられており、限定として意図されたものではない。
詳細には、方法は、例によって説明されているが、方法のステップは、示したものとは異なる順序でまたは同時に実行することができる。
当業者は、これらの変形および他の変形が、添付の特許請求の範囲およびその均等物で規定される精神および範囲内において可能であることを認識するであろう。
【図面の簡単な説明】
【０１１０】
【図１】一実施形態によるピアツーピアネットワークを示す図である。
【図２】一実施形態によるピアツーピアネットワークにおけるオーバーレイネットワークを示す図である。
【図３】一実施形態による属性空間および属性部分空間を示す図である。
【図４】一実施形態による、情報サービスノードに記憶された情報を示す図である。
【図５】一実施形態による問い合わせのルーティングを示す図である。
【図６】一実施形態による広告のルーティングを示す図である。
【図７】一実施形態による交換フェーズおよび普及フェーズを示す図である。
【図８Ａ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｂ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｃ】一実施形態による情報サービスノードのルーティング表である。
【図８Ｄ】一実施形態による情報サービスノードのルーティング表である。
【図９Ａ】一実施形態による、ワークロード分割から結果として生じるルーティング表および属性部分空間の例を示す図である。
【図９Ｂ】一実施形態による、ワークロード分割から結果として生じるルーティング表および属性部分空間の例を示す図である。
【図９Ｃ】一実施形態による、ワークロード分割から結果として生じるルーティング表および属性部分空間の例を示す図である。
【図１０】一実施形態による、グローバル分割アルゴリズムの開始フェーズにおける情報サービスノードを示す図である。
【図１１Ａ】一実施形態による、グローバル分割アルゴリズムの適用例を示す図である。
【図１１Ｂ】一実施形態による、グローバル分割アルゴリズムの適用例を示す図である。
【図１２】一実施形態による、ローカル分割アルゴリズムを適用するための方法のフローチャートである。
【図１３】一実施形態による、グローバル分割アルゴリズムを適用するための方法のフローチャートである。
【図１４】待ち時間報告を使用して、複製のための情報サービスノードを選択する一例を示す図である。
【図１５】一実施形態による、情報サービスノードを複製するための方法のフローチャートである。
【図１６】一実施形態によるコンピュータシステムを示す図である。
【符号の説明】
【０１１１】
１６０２・・・プロセッサ，
１６０６・・・メインメモリ，
１６１０・・・ハードディスクドライブ，
１６１２・・・着脱可能ストレージドライブ，
１６１４・・・着脱可能ストレージユニット，
１６１８・・・入力デバイス，
１６２０・・・ディスプレイ，
１６２２・・・ディスプレイアダプタ，
１６３０・・・ネットワークインターフェース，
【図１】
2008524674.tif 000003
【図２】
2008524674.tif 000004
【図３】
2008524674.tif 000005
【図４】
2008524674.tif 000006
【図５】
2008524674.tif 000007
【図６】
2008524674.tif 000008
【図７】
2008524674.tif 000009
【図８Ａ】
2008524674.tif 000010
【図８Ｂ】
2008524674.tif 000011
【図８Ｃ】
2008524674.tif 000012
【図８Ｄ】
2008524674.tif 000013
【図９Ａ】
2008524674.tif 000014
【図９Ｂ】
2008524674.tif 000015
【図９Ｃ】
2008524674.tif 000016
【図１０】
2008524674.tif 000017
【図１１Ａ】
2008524674.tif 000018
【図１１Ｂ】
2008524674.tif 000019
【図１２】
2008524674.tif 000020
【図１３】
2008524674.tif 000021
【図１４】
2008524674.tif 000022
【図１５】
2008524674.tif 000023
【図１６】
2008524674.tif 000024
【国際調査報告】
2008524674.tif 000025
2008524674.tif 000026