(57)【要約】【課題】  動的分散環境におけるノードマッチングを提供すること。【解決手段】  動的分散コンピューティング環境における各計算エンティティを、あたかもその計算エンティティが、エッジによってリンクされたグラフ中のノードであるかのように処理することによって、これらのノードをそれ以上のマッチが可能でなくなるまでマッチさせる。新しいノードが分散コンピューティング環境に動的に導入された場合でも、本発明の様々な実施形態は、この分散コンピューティング環境においてデッドロックを避けながらノードをマッチさせ続けることができる。【選択図】  図３Ａ
2005310117.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを備える分散コンピューティング環境であって、前記複数のノード中の各ノードは前記複数のノード中の他のノードの隣接ノードになることができ、各ノードはマッチのために隣接ノードの使用可能性を問い合わせることができ、第１のノードが第２のノードの使用可能性を問い合わせかつ前記第２のノードが前記第１のノードの使用可能性を問い合わせたときに、前記マッチが形成されることを特徴とする分散コンピューティング環境。
【請求項２】
前記第１のノードが前記第２のノードの使用可能性を問い合わせ、前記第２のノードが肯定メッセージで応答したときに、他のマッチが形成されることを特徴とする請求項１に記載の分散コンピューティング環境。
【請求項３】
前記第１のノードが前記第２のノードの使用可能性を問い合わせ、前記第２のノードが否定メッセージで応答したときには、マッチが形成されないことを特徴とする請求項１に記載の分散コンピューティング環境。
【請求項４】
前記複数のノードに通信を要請してマッチを見つけるインバイタをさらに備えることを特徴とする請求項１に記載の分散コンピューティング環境。
【請求項５】
前記分散コンピューティング環境に動的に導入された新しいノードをさらに備え、前記新しいノードは、マッチのために隣接ノードの使用可能性を問い合わせることができることを特徴とする請求項１に記載の分散コンピューティング環境。
【請求項６】
動的分散コンピューティング環境において通信可能なノードをマッチさせるためのコンピュータ実装されたプロトコルであって、
マッチを見つけるために各ノードに通信を要請するステップと、
アベイラビリティメッセージを送信することによって、マッチのためのノードの使用可能性を認識するステップと、
第１のノードから第２のノードに別のアベイラビリティメッセージを送信したときに、前記第２のノードがアベイラビリティメッセージと肯定メッセージからなるグループから選択されたメッセージを送信した場合にマッチを形成するステップと
を備えることを特徴とするプロトコル。
【請求項７】
前記通信要請のステップはインバイタによって実行され、前記インバイタは、隣接する第１のノードと第２のノードとを識別し、前記第１のノードおよび前記第２のノードのアドレスを含む通信要請を前記第１のノードに送信し、さらに前記インバイタは他の通信要請を前記第２のノードに送信することを特徴とする請求項６に記載のプロトコル。
【請求項８】
前記第１のノードが既に他のノードとマッチしている場合は、さらに前記プロトコルを終了し、そうでない場合は、前記プロトコルは、さらにアベイラビリティメッセージを前記第２のノードに送信してマッチのためにそのノードの使用可能性を判断することを特徴とする請求項７に記載のプロトコル。
【請求項９】
前記第１のノードから送信された前記アベイラビリティメッセージを前記第２のノードが受信し、前記第２のノードが既に他のノードとマッチしている場合は、前記第２のノードは前記第１のノードに否定メッセージで応答し、そうでない場合は、前記第２のノードの使用状態が、前記第２のノードが前記第１のノードにマッチしたことを示す真に設定されることを特徴とする請求項８に記載のプロトコル。
【請求項１０】
前記第１のノードの使用状態を、前記第１のノードが前記第２のノードにマッチしたことを示す真に設定するステップをさらに備えることを特徴とする請求項９に記載のプロトコル。
【請求項１１】
動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を実施するコンピュータ実行可能な命令を有するコンピュータ可読媒体であって、プロトコルが、
マッチを見つけるために各ノードに通信を要請するステップと、
アベイラビリティメッセージを送信することによってノードのマッチのための使用可能性を認識するステップと、
第１のノードから第２のノードに別のアベイラビリティメッセージを送信したときに、前記第２のノードがアベイラビリティメッセージと肯定メッセージとからなるグループから選択されたメッセージを送信した場合にマッチを形成するステップと
を備えることを特徴とするコンピュータ可読媒体。
【請求項１２】
前記通信要請のステップはインバイタによって実行され、前記インバイタは、隣接する第１のノードと第２のノードとを識別し、前記第１のノードおよび前記第２のノードのアドレスを含む通信要請を前記第１のノードに送信し、さらに前記インバイタは別の通信要請を前記第２のノードに送信することを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記第１のノードが既に他のノードとマッチしている場合は、さらに前記プロトコルを終了し、そうでない場合は、前記プロトコルはさらに、アベイラビリティメッセージを前記第２のノードに送信してマッチのためにそのノードの使用可能性を判断することを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記第１のノードから送信された前記アベイラビリティメッセージを前記第２のノードが受信し、前記第２のノードが既に他のノードとマッチしている場合は、前記第２のノードは前記第１のノードに否定メッセージで応答し、そうでない場合は、前記第２のノードの使用状態が、前記第２のノードが前記第１のノードにマッチしたことを示す真に設定されることを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記第１のノードの使用状態を、前記第１のノードが前記第２のノードにマッチしたことを示す真に設定するステップをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、通信可能なノードを他のノードと結びつける動作に関し、より詳細には、タンパク結合（ｐｒｏｔｅｉｎ  ｂｉｎｄｉｎｇｓ）、社会ネットワーク、または動的分散コンピューティング環境において、通信可能なノード同士をマッチさせる方法に関する。
【背景技術】
【０００２】
集中コンピューティングアーキテクチャは、あらゆる計算は単一のコンピュータシステムによって完全に実行できるという、１９５０年代のメインフレームコンピュータから始まったフィクションを続けている。このアーキテクチャでは、あらゆるリソースはそのコンピュータシステムにとってローカルであると想定される。あらゆるリソースは、（単一のコンピュータシステム内に存在するものと想定され、）そのシステム内でアドレス指定され、検出され、ロードされ、使用され、解放される。しかし、今日および予測できる将来において、リソース（およびインターネットの普及によりユーザデータ）は、しばしば異なる信頼ドメインに存在し、各々が独自のセキュリティポリシーを有する多数のコンピュータシステムに分散される。過去の集中型コンピューティングアーキテクチャは、今日まで続く多くの問題を有している。図１は、これらの問題のいくつかを詳細に図示したものである。
【０００３】
メインフレームコンピュータ１０４は、集中型の計算タスクを処理するように設計されている。図１を参照されたい。メインフレームコンピュータ、例えばメインフレームコンピュータ１０４は、端末によってそのコンピュータに接続された多数のユーザを同時にサポートする能力を特徴とする。メインフレームという名前は、元々このようなコンピュータの処理ユニットを格納するために使用されるキャビネットである「本体（ｍａｉｎ  ｆｒａｍｅ）」に由来する。複数のノード１０２Ａ〜１０２Ｄがメインフレームコンピュータ１０４に結合されている。ノードは、例えばクライアントコンピュータ１０２Ａ〜Ｃや共用プリンタ１０２Ｄなどの装置であり、ネットワーク１００に接続され、他のネットワーク装置と通信することができる。ノード１０２Ａがノード１０２Ｄと通信しようとし、ノード１０２Ｂがノード１０２Ｃと通信しようとしていると想定する。ノード１０２Ａ〜１０２Ｄはすべてメインフレームコンピュータ１０４にとってローカルなので、メインフレームコンピュータ１０４は、これらのノード１０２Ａ〜１０２Ｄの全体を視野に入れ、これらのノードのどれが通信に使用できるかを認識することができる。例えば、ノード１０２Ａ、１０２Ｄのどちらもが使用可能な場合は、メインフレームコンピュータ１０４は、ノード１０２Ａと１０２Ｄの間で通信を行うことを可能にする。同様に、ノード１０２Ｂ、１０２Ｃが使用可能な場合は、メインフレームコンピュータ１０４は、ノード１０２Ｂと１０２Ｃを相互に通信可能にする。メインフレームコンピュータ１０４の集中コンピューティングアーキテクチャを用いると、相互に通信可能なノードをマッチさせる問題の全体を一度に調べることが可能であり、通信可能なノード間のマッチングを瞬時に見つけ出すことができる。
【０００４】
メインフレームコンピュータ１０４が、ネットワーク１００に存在しない場合のシナリオを考える。この場合、通信のために、あるノードを他のノードにマッチさせる問題は解決不可能にも思える。１つのノード、例えばノード１０２Ａ〜１０２Ｄが認識できるのは、それに隣接するノードだけである。例えば、ノード１０２Ａは、ノード１０２Ｂまたは１０２Ｄだけを認識することが可能であり、ノード１０２Ｃを認識することはできない。ノード１０２Ｂがノード１０２Ａに対し早期に通信をコミットし、同様にノード１０２Ｃがノード１０２Ｄに対して早期に通信をコミットしていると想定する。この早期のコミットメントのために、ノード１０２Ｂ、１０２Ｃは、互いに通信のためにマッチできる可能性があることに気づかない。さらに、ノード１０２Ａがノード１０２Ｂにコミットしかつノード１０２Ｄがノード１０２Ｃにコミットするのではなく、ノード１０２Ａが通信のためにノード１０２Ｄとの接続を進めたと想定する。デッドリーエンブレイス（ｄｅａｄｌｙ  ｅｍｂｒａｃｅ）すなわちデッドロックが発生する。デッドロックは、２つのプログラム、装置、またはノード（例えばノード１０２Ｂ、１０２Ｃ）が、続行の前に、各々ノード１０２Ａ、１０２Ｄからの応答を待っているときに発生する状況である。もちろん、ノード１０２Ａ、１０２Ｄからの応答を受信することは絶対にない。その理由は、ノード１０２Ｂ、１０２Ｃにとって不利なことには、１０２Ａと１０２Ｄが通信のためにすでに互いに接続してしまったからである。
【０００５】
集中コンピューティングアーキテクチャは、インターネットの分散アーキテクチャの成長を妨げる。インターネットでは、先に論じたように、ユーザデータは多数のコンピュータシステムに分散されている。もう１つの問題は、インターネットの分散アーキテクチャの動的な性質に関する。ノードが追加される可能性があり、したがってネットワーク１００は動的に成長する。このことにより、ノードが動的に導入された場合でも２つのノード間で通信ができるように、使用可能なノードを互いにマッチさせるネットワーク１００の機能が複雑なものになる。デッドロックを避けるためには、マッチさせることができるノードがあれば、それらを必ずマッチさせる必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
要するに、集中コンピューティングアーキテクチャは、インターネットなど、分散型の大規模コンピュータシステムにはうまく使えない。ノードが使用可能であり通信しようとしているにもかかわらず、通信相手である他のノードを見つけることができないときに、デッドロックが発生する可能性がある。動的分散コンピューティング環境で適切に動作し、動的に分散された通信可能なノードのマッチングを調整できるプロトコルが無ければ、ユーザはそのうち、ネットワーク１００が所望のコンピューティング環境を提供するものだとはもはや信頼しなくなるかもしれず、市場におけるネットワーク１００の需要は次第に減少するはずである。したがって、求められているのは、上で論じた問題を回避または軽減しながら、動的分散コンピューティング環境における通信可能なノードをマッチさせる方法およびシステムである。
【課題を解決するための手段】
【０００７】
以下では、「ノード」という用語は、あるエンティティを、永続的にまたは一時的に他のエンティティと関連づけることを可能にするコンピュータ機器、ウェブサービス、タンパク結合、社会ネットワーク上の各ポイントを含むものとする。本発明によると、動的分散コンピューティング環境における通信可能なノードをマッチさせるためのシステム、プロトコル、およびコンピュータ可読媒体が提供される。本発明のシステム形態には、複数のノードを含む分散コンピューティング環境が含まれる。複数のノード中の各ノードは、複数のノード中の他のノードの隣接ノードになる。各ノードは、マッチのための隣接ノードの使用可能性を問い合わせる（ｑｕｅｒｙ）ことができる。マッチは、第１のノードが、第２のノードの使用可能性を問い合わせ、それに応答して第２のノードが、第１のノードの使用可能性を問い合わせたときに形成される。
【０００８】
本発明の他の態様によれば、本発明のプロトコル形態は、動的分散コンピューティング環境において通信可能なノードをマッチさせるためのコンピュータ実装されたプロトコルを含む。このプロトコルは、マッチを見つけるために各ノードに通信を要請する（ｉｎｖｉｔｅ）ステップを含む。このプロトコルはさらに、アベイラビリティメッセージ（ａｖａｉｌａｂｉｌｉｔｙ  ｍｅｓｓａｇｅ）を送信することによって、マッチのためのノードの使用可能性を認識する（ｄｉｓｃｏｖｅｒ）ステップを含む。このプロトコルはさらに、第１のノードから第２のノードに別のアベイラビリティメッセージを送信したとき、第２のノードがアベイラビリティメッセージと肯定メッセージとからなるグループから選択された応答を返した場合にマッチを形成するステップも含む。
【０００９】
本発明の他の態様は、動的分散コンピューティング環境において通信可能なノードをマッチさせる方法を実施するためのコンピュータ実行可能な命令を有するコンピュータ可読媒体であり、この態様によれば、プロトコルは、マッチを見つけるためにノードに通信を要請するステップを含む。このプロトコルはさらに、アベイラビリティメッセージを送信することによって、ノードがマッチのために使用可能かどうかを認識するステップも含む。このプロトコルはさらに、第１のノードから第２のノードに別のアベイラビリティメッセージを送信したとき、第２のノードがアベイラビリティメッセージと肯定メッセージとからなるグループから選択された応答を返した場合にマッチを形成するステップも含む。
【００１０】
本発明の前述の態様および付随する利点の多くは、以下の詳細な説明を添付の図面と併せて読むことによって本発明をより良く理解できるようになり、より容易に理解できるようになるはずである。
【発明を実施するための最良の形態】
【００１１】
本発明の様々な実施形態は、動的分散コンピューティング環境における計算エンティティを、これらの計算エンティティが、あたかもエッジによってリンクされたグラフ中のノードであるかのように処理し、その結果、これらのノードをそれ以上のマッチが不可能になるまでマッチさせる。新しいノードが分散コンピューティング環境に動的に導入された場合でも、本発明はこの分散コンピューティング環境でデッドロックを避けながらノードをマッチさせ続けることができる。本発明の様々な実施形態は、各ノードが使用して、隣接するノードを調べてマッチできる可能性があるかどうかを判断するためのプロトコルを提供する。本発明の様々な実施形態においては、これまでの集中コンピューティングアーキテクチャを使用する必要はない。その理由は、各ノードが独自にそのノードがマッチできるノードを発見できる機能を有しており、したがって、例えばインターネットに代表される分散コンピューティングアーキテクチャをうまく機能させることができるからである。
【００１２】
動的分散コンピューティング環境２００を図２に示す。動的分散コンピューティング環境２００は、複数のノード２００Ａ〜２００Ｉを含む。ノードは、クライアントコンピュータ、サーバ、共用プリンタ、その他のコンピュータ装置などの装置であり、他のノードと通信する機能を有する装置である。ノード２００Ａは、両端に矢印のついたラインによって示されるエッジによってノード２００Ｄにリンクされる。ノード２００Ａは、ラインの一端の矢印がノード２００Ａを指示し、他端の矢印がノード２００Ｂを指示する他のエッジによってノード２００Ｂにリンクされる。ノード２００Ｂは、ラインの両端の矢印がノード２００Ｂと２００Ｃを指示する他のエッジによってノード２００Ｃにリンクされる。ノード２００Ｃは、このノード２００Ｃが動的分散コンピューティング環境２００に新しく導入されたノードであることを示す破線で図示されている。「動的」という用語は、直前まで含まれていなかったノードを動的分散コンピューティング環境に導入することを含むものとする。ノード２００Ｄは、ラインの矢印が２００Ｄと２００Ｅを指示するエッジによってノード２００Ｅにリンクされる。ノード２００Ｅは、一端の矢印がノード２００Ｅを指示し、他端のもう１つの矢印がノード２００Ｆを指示する他のエッジによってノード２００Ｆにリンクされる。ノード２００Ｆとノード２００Ｈは、ラインの矢印がノード２００Ｆとノード２００Ｈを指示するように図示されたエッジによってリンクされる。ノード２００Ｅは、両端に矢印のついたラインとして示された他のエッジによってノード２００Ｇにリンクされる。ノード２００Ｇと２００Ｉは、両端に矢印のついた、エッジを定義するラインによってリンクされる。
【００１３】
ノード２００Ａ〜２００Ｈおよびそれらのエッジは、０または１個以上のノード２００Ａ〜２００Ｉと、ノードのペアを接続する０個以上のエッジとからなるグラフを形成する。マッチは、２つのフリーのノードを接続するエッジが存在し、その２つのフリーノードが互いにコミットしようとする場合に生じる。動的分散コンピューティング環境２００においてデッドロックが阻止されることを保証するために、通信しようとする各フリーノードを、２つのフリーノードを相互にリンクするエッジが存在しなくなるまでマッチさせる。動的分散コンピューティング環境２００にノード２００Ｃやその他のノードを動的に追加できるという事実によって、マッチング処理が終了しない状況が生ずる。新しく導入されたノード、例えばノード２００Ｃが、他のノード、例えば既にノード２００Ａとマッチしているノード２００Ｂにリンクされる場合には、ノード２００Ｃのための追加のマッチングが不可能な場合がある。しかし、新しく導入されたノード、例えばノード２００Ｃが、ノード２００Ｃと通信しようとするフリーのノードの隣接ノードとして追加された場合には、新たなマッチを可能にすることができる。
【００１４】
動的分散コンピューティング環境２００において、ノードをマッチさせるための課題の１つは、各ノードに、エッジによってそのノードにリンクされた、そのノードの隣接ノードに関する知識を持たせることである。例えば、ノード２００Ａは、ノード２００Ｄおよびノード２００Ｂを認識しているが、ノード２００Ｅは認識していないものとする。ノード２００Ｂ、２００ＤはノードＡとマッチできる可能性がある。分からないことは、ノード２００Ｄがすでにノード２００Ｅとマッチしているかもしれないこと、およびノード２００Ｂがすでにノード２００Ｃとマッチしているかもしれないことであり、したがって通信のためにノード２００Ｂ、２００Ｄをノード２００Ａとマッチさせることができないことである。本発明の様々な実施形態は、動的分散コンピューティング環境２００においてデッドロックを回避または減少させながら、各ノードが相互に接続し情報を交換することを可能にするように設計された１組のルールまたは標準を提供する。各ノード２００Ａ〜２００Ｉは同時に実行される可能性があり、したがって同一のプロトコルで稼動する。このマッチング方法は、あるノードがある隣接ノードとの関連付けを決定することから始まる。本発明の様々な実施形態を用いると、ノードは、隣接ノードとの対話を始めることによってマッチングの可能性があるかどうかを確認することができる。
【００１５】
ノード２００Ａがノード２００Ｄとのマッチをコミットしたが、ノード２００Ｄがすでにノード２００Ｅとマッチしていたためノード２００Ａにコミットできない状況を考える。同時に、ノード２００Ｂはノード２００Ｃとのマッチをコミットしたが、ノード２００Ｃはすでに他のノード（図示せず）とマッチしているものとする。言い換えるとこの状況では、ノード２００Ａとノード２００Ｂは、ノード２００Ａと２００Ｂの両方による早期のコミットメントのためにマッチできないエッジによって相互に隣接している２つのノードである。したがって、最大マッチングが不可能になる。本発明の様々な実施形態は、このような状況を阻止する。本発明の様々な実施形態では、ノードをマッチさせるためにグラフを固定する必要はない。このことにより、ノード２００Ｃなど新しいノードを動的分散コンピューティング環境２００に導入することが可能になる。
【００１６】
本発明の様々な実施形態によって使用されるプロトコルについての議論を単純にするために、図３００Ａにはノード３０２〜３０６のうちの３つのノードだけを図示する。このプロトコルは、各ノードが折衝によってマッチを形成することを可能にするものである。マッチは、ノード３０２〜３０６のうちの２つが、相互に通信をコミットされたときに生ずる。ノード３０２は２つのポート３０２Ｚと３０２Ｘを含むが、その一方だけが通信に使用できる。数学的には、ポート３０２Ｚを文字Ｚで表し、ポート３０２Ｘを文字Ｘで表す。フレーズ「Ｚ＋Ｘ」は、ノード３０２で、ポートＺ、Ｘのうちの一方だけが使用可能であることを示す。
【００１７】
【数１】
2005310117.tif 000003
【００１８】
各ノード３０２〜３０６が、その隣接ノードのどちらがマッチングに使用できるかを決定しなければならない場合には、問題は解決できないようにも思える。
【００１９】
【数２】
2005310117.tif 000004
【００２０】
π計算式
【００２１】
【数３】
2005310117.tif 000005
【００２２】
を考える。
【００２３】
【数４】
2005310117.tif 000006
【００２４】
は、第２の処理「Ｘ．Ｒ」と並行して動作する。第２の処理は、チャネルＸ上の情報を受信し、次いで処理Ｒを稼動させる。デッドリーエンブレイスすなわちデッドロックを避けるためには、上記のπ計算式は第２のπ計算式「Ｐ｜Ｒ」に移行する必要がある。移行しない場合は、デッドリーエンブレイスすなわちデッドロックが発生している可能性がある。言い換えれば、第１のπ計算式の縦線の両側にある２つのフレーズは、第２のπ計算式に継続されるように動作できる必要がある。継続されない場合は、システムは適切に動作せず、上で論じたように、望ましくない存在のデッドロックが発生する。
【００２５】
本発明の様々な実施形態を用いると、マッチが生ずるように、ノード３０２〜３０６の間で解決策を収束させることができる。本発明の様々な実施形態を用いると、フレーズ「Ｚ＋Ｘ」、
【００２６】
【数５】
2005310117.tif 000007
【００２７】
によって数学的に示された排他的な動作およびそれらの通信を互いに排他的なまま維持することが可能になる。本発明の様々な実施形態は、あるノード上のポートが他のノード上の適合するポートにコミットする用意ができるまでは、そのノードが他のノードにコミットすることを阻止する。このようなコミットメントが不可能な場合は、本発明の様々な実施形態は、マッチの発生を不可能にする。言い換えると、本発明の様々な実施形態は、ノード上の他の排他的通信によって通信が先取りされていない場合に、ノード間の通信を実施可能にする。本発明の各実施形態は、各ノード上で対称的に動作する。さらに、ノード間の通信は、そのノードに隣接するノードとは非同期に行われる。「非同期（ａｓｙｎｃｈｒｏｎｏｕｓ）」という用語は、あるノードが通信を出力するとき、そのノードが、ある通信が成功したという応答を受信するまで阻止または待つ必要が無い状況を意味するものとする。各ノードは、本発明の様々な実施形態によって通信しそれを継続する。この設計の単純さによって同時実行性が増し、各ノードは、入ってくる通信を処理するための独立した機能を有することが可能になる。
【００２８】
動的分散コンピューティング環境において、通信可能なノードをマッチさせるプロトコル３００Ｂを図３Ｂに示す。プロトコル３００Ｂは、２つのノード間のマッチを見つけるために、インバイタ（ｉｎｖｉｔｅｒ）３０８およびノード３０２〜３０６によって使用される。インバイタ３０８は、ノード３０２〜３０６が相互に通信できることを認識し、ノード３０２〜３０６に通信要請してノード３０２〜３０６の２つのノードの間にマッチが存在するかどうかを確認する。インバイタ３０８は、通信要請の第１の組３０８−１を送信する。第１の組３０８−１は、通信要請３０８Ａ、３０８Ｂを含む。通信要請３０８Ａはノード３０２に送信され、通信要請３０８Ｂはノード３０４に送信される。通信要請３０８Ａ、３０８Ｂには、ノード３０２、３０４が相互に通信できるようにするためにノード３０２、３０４のアドレスが含まれる。通信要請の他の組３０８−２は、送信要請３０８Ｃ、３０８Ｄを含み、それぞれノード３０２、３０６に送信される。送信要請３０８Ｃ、３０８Ｄは、ノード３０２、３０６が相互に通信することができるように、ノード３０２、３０６のアドレスを含む。通信要請のさらなる組３０８−３は、ノード３０４に送信される通信要請３０８Ｅとノード３０６に送信される通信要請３０８Ｆとを含む。通信要請３０８Ｅ，３０８Ｆは、ノード３０４、３０６が相互に通信してマッチの可能性を判断できるようにする。通信要請３０８Ｅ、３０８Ｆは、ノード３０４、３０６が互いに相手を見つけ通信して、マッチの可能性を判断できるようにするためにノード３０４、３０６のアドレスを含む。通信要請の組３０８−１、３０８−２、および３０８−３は、潜在的に通信可能なノードに相互に通信を要請してマッチの可能性を見つけるプロトコル３００Ｂの一部３１０を形成する。
【００２９】
プロトコル３００Ｂの他の部分３１２は、ノード３０２〜３０６が、マッチのために使用できるノードを確認できるようにする。ノード３０４のアドレスを使用して、ノード３０２はアベイラブルメッセージ３０２Ａをノード３０４に送信して、ノード３０４がマッチングに使用可能かどうかを確認する。ノード３０４もまたアベイラブルメッセージ３０４Ａをノード３０６に送信する。同様に、ノード３０６はノード３０２のアドレスを知っており、アベイラブルメッセージ３０６Ａをノード３０２に送信して、ノード３０２がマッチングに使用可能かどうかを確認する。アベイラブルメッセージ３０２Ａに応答して、ノード３０４は、ＭＡＹＢＥメッセージ３０４Ｂをノード３０２に返して、ノード３０２にノード３０４が潜在的に使用可能であることを知らせる。ノード３０６はＭＡＹＢＥメッセージ３０６Ｂをノード３０４に送信して、ノード３０６が潜在的なマッチに使用可能であることを知らせる。同様に、ノード３０２はＭＡＹＢＥメッセージ３０２Ｂをノード３０６に送信して、ノード３０２が潜在的にマッチに使用可能であることを明らかにする。したがって、要するに、プロトコル３００Ｂの一部３１２を用いると、各ノードは、隣接ノードの使用可能性を認識することができる。
【００３０】
プロトコル３００Ｂの他の部分３１４は、マッチしたノードを確定して、他のノードを拒絶する。再度、ノード３０２は、アベイラブルメッセージ３０２Ｃをノード３０４に送信してノード３０４にノード３０２が、まだマッチのために使用可能であることを知らせる。ノード３０４もまたアベイラブルメッセージ３０４Ｃをノード３０６に送信する。同時に、ノード３０６もまた、そのノードがマッチに使用可能であるというアベイラブルメッセージ３０６Ｃをノード３０４に送信する。（言い換えれば、メッセージ３０４Ｃ、３０６Ｃは、ラインの両端に矢印を有するエッジによって示されるように相互にクロスしている）。ノード３０４は、ノード３０６からアベイラブルメッセージ３０６Ｃを受信し、ノード３０６がＭＡＹＢＥメッセージを送信していないという事実にもかかわらずマッチが生じたことを認識する。したがって、ノード３０４は、マッチが可能なノードとしてのノード３０２を拒絶するＮＯメッセージ３０４Ｄをノード３０２に返す。したがって、プロトコル３００Ｂの一部３１４は、使用可能ノードが発見されたと結論し、２つのノードを相互にコミットさせマッチを形成させる。（好ましくは、ノード３０２は、将来のマッチのために使用可能な複数のノードの中に残る）。
【００３１】
図４Ａ〜４Ｍは、動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法４００を示す。説明を分かりやすくするために、方法４００についての以下の説明では、動的分散コンピューティング環境２００（図２）、ネットワーク３００Ａ（図３Ａ）、および動的分散コンピューティング環境（図３Ｂ）の通信可能なノードをマッチさせるためのプロトコル３００Ｂに関して説明した様々な要素を参照する。スタートブロックから、方法４００は継続結合子（「結合子Ａ」）と出口結合子（「結合子Ｂ」）の間に定義された１組の方法ステップ４０２に進む。１組の方法ステップ４０２では、インバイタによる相互に通信可能なノードの識別、およびそのインバイタによるそれらのノード間の通信要請について説明している。
【００３２】
結合子Ａ（図４Ｂ）から、方法４００はブロック４０８に進み、そのブロックでインバイタ３０８は、ノード３０２〜３０６のうちの相互に通信可能な２つのノード（すなわち、グラフ中のノードのエッジ）を識別する。ブロック４０８から、方法４００は、同時に実行を３つのプログラム経路、すなわち４１０、４１６、および４２０に分岐させることができる。ブロック４１０で、各ノードの有するアドレスがインバイタ３０８によって検出される。（２つのノードの各アドレスは、グラフ中の２つのノード間のエッジを形成する）。インバイタ３０８は、第１のノードに、第２のノードと通信してマッチの可能性を探索するよう要請する。ブロック４１２を参照されたい。次いで、方法４００はブロック４１４に進み、このブロックで通信要請は、２つのノードのアドレスが含まれたエッジを含む。次いで、方法４００は出口結合子Ｂに進む。同時に、ブロック４１６でインバイタ３０８は、第２のノードに、第１のノードと通信してマッチの可能性を探索するよう要請する。通信要請は、２つのノードの各アドレスが含まれたエッジを含む。ブロック４１８を参照されたい。次いで、方法４００は出口結合子Ｂに進む。同時に、判断ブロック４２０で、識別できる他のノードがあるかどうかを判断するための試験を行う。判断ブロック４２０の試験の回答が肯定（ＹＥＳ）の場合は、方法４００はブロック４０８にループバックし、そこから上記識別処理ステップを繰り返す。一方、判断ブロック４２０の試験の回答が否定（ＮＯ）の場合は、方法４００は、識別できる他のノードが見つかるまでループする。出口結合子Ｂから、方法４００は、継続結合子（「結合子Ｃ」）と出口結合子（「結合子Ｄ」）の間に定義された１組の方法ステップ４０４に進む。１組の方法ステップ４０４は、インバイタ３０８によって識別された各ノードが相互に通信してマッチを見つける処理を記載する。
【００３３】
結合子Ｃ（図４Ｃ）から、方法４００はブロック４２２に進み、そのブロックで第１のノードは、インバイタ３０８によって送信された、（２つのノードの各アドレスによって形成された）エッジを含む通信要請を受信する。次に、判断ブロック４２４で、第１のノードが既に他のノードにマッチしているかどうかを判断するための試験を行う。判断ブロック４２４での試験の回答がＹＥＳの場合は、方法４００は、他の継続結合子（「結合子Ｆ」）に進み、そこで実行を終了する。判断ブロック４２４での試験の回答がＮＯの場合は、方法４００は、他の判断ブロック４２６に進み、そのブロックで、第１のノードが既にそのエッジを認識しているかどうかを判断するための試験を行う。判断ブロック４２６の試験の回答がＹＥＳの場合は、方法４００は、結合子Ｆに進みそのブロックで実行を終了する。一方、判断ブロック４２６の試験の回答がＮＯの場合は、方法４００は他の継続結合子（「結合子Ｃ１」）に進む。
【００３４】
結合子Ｃ１（図４Ｄ）から、方法４００はブロック４２８に進み、そのブロックで、方法４００は、第１のノードの（複数のエッジを含む）隣接ノードアレイの長さを取得する。ここで論ずるアレイの使用は、例示のためだけのものである。任意の適切なデータ構造を使用することが可能であり、本発明はアレイの使用に限定されるものではない。次に、ブロック４３０で、その長さが可変インデックスに割り当てられる。（２つのノードの各アドレスによって生成された）エッジは、（可変インデックスによってアドレス指定された）隣接ノードアレイの中のある位置に格納される。ブロック４３２を参照されたい。次に、方法４００は判断ブロック４３４に進み、そのブロックで、そのエッジが隣接ノードアレイ中のただ１つのエッジかどうかを判断するための試験を行う。判断ブロック４３４での試験の回答がＮＯの場合は、方法４００は結合子Ｆに進み、そこで実行を終了する。一方、判断ブロック４３４での試験の回答がＹＥＳの場合は、方法４００はブロック４３６に進み、そのブロックで第１のノードは、アベイラビリティメッセージを第２のノードに送信して、第２のノードが通信に使用可能かどうかを判断する。次いで、方法４００は出口結合子Ｄに進む。
【００３５】
結合子Ｄ（図４Ａ）から、方法４００は、継続結合子（「結合子Ｅ」）と出口結合子である結合子Ｆとの間に定義された１組の方法ステップ４０６に進む。この１組の方法ステップ４０６では、マッチしたノードが相互に通信を確認し、他のノードを拒絶する処理について説明している。
【００３６】
結合子Ｅ（図４Ｅ）から、方法４００はブロック４３８に進み、そのブロックで第２のノードは、第１のノードによって送信されたアベイラビリティメッセージを受信し処理する。次に、判断ブロック４４０で、第２のノードが既に他のノードとマッチしているかどうかを判断する試験を行う。判断ブロック４４０での試験の回答がＮＯの場合は、方法４００は他の継続結合子（「結合子Ｅ２」）に移る。一方、判断ブロック４４０での試験の回答がＹＥＳの場合は、第２のノードは、第１のノードにＮＯを返す。ブロック４４２を参照されたい。次に、方法４００はブロック４４４に進み、そのブロックで第１のノードは、その第２のノードが、通信要請またはアベイラビリティメッセージを送信した先のノードであることを確認する。次に、方法４００は、他の継続結合子（「結合子Ｅ１」）に移る。
【００３７】
結合子Ｅ１（図４Ｆ）から、方法４００はブロック４４６に進み、そのブロックで方法４００は、隣接ノードアレイから（２つのノードの各アドレスによって形成された）エッジを除去する。次に、ブロック４４８で、第１のノードは、アベイラビリティメッセージを他のノードに発行する準備をする。また、隣接ノードアレイ中にエッジが存在するかどうかを判断するための試験を行う。判断ブロック４５０を参照されたい。判断ブロック４５０での試験の回答がＮＯの場合は、方法４００は出口結合子Ｆに進み、実行を終了する。一方、判断ブロック４５０の試験の回答がＹＥＳの場合は、方法４００はブロック４５２に進み、そのブロックで、第１のノードはマッチを見つけるために通信すべき新しいノードを選択する。次いで、方法４００は結合子Ｅに移り、そこから上記の処理ステップを繰り返す。
【００３８】
結合子Ｅ２から（図４Ｇ）、方法４００は判断ブロック４５４に進み、そのブロックで、第２のノードの隣接ノードアレイ中にエッジが存在するかどうかを判断する試験を行う。判断ブロック４５４での試験の回答がＮＯの場合は、方法４００は他の継続結合子（「結合子Ｅ３」）に進む。一方、判断ブロック４５４での試験の回答がＹＥＳの場合は、方法４００は他の判断ブロック４５６に進み、そのブロックで、そのエッジがアベイラビリティメッセージを送信した先のエッジかどうかを判断する他の試験を行う。判断ブロック４５６での試験の回答がＮＯの場合は、方法４００は結合子Ｅ３に進む。一方、判断ブロック４５６での試験の回答がＹＥＳの場合は、方法４００はブロック４５８に進み、そのブロックで第２のノードは、その第１のノードが通信要請またはアベイラビリティメッセージの送信元であることを確認する。次に方法４００は、他の継続結合子（「結合子Ｅ４」）に続く。
【００３９】
結合子Ｅ４（図４Ｈ）から、方法４００はブロック４６０に進み、そのブロックで第２のノードの使用状態を、第２のノードが第１のノードにマッチしていることを示す真に設定する。次に、ブロック４６２で、第２のノードがマッチしたので、第２のノードの隣接ノードアレイの内容をクリアする。次に、方法４００は結合子Ｆに進み、そこで実行を終了する。
【００４０】
結合子Ｅ３から、方法４００は判断ブロック４６４に進み、そのブロックで、そのエッジが第２のノードにとって既知のものかどうかを判断するための試験を行う。判断ブロック４６４での試験の回答がＹＥＳの場合は、方法４００は他の継続結合子（「結合子Ｅ６」）に進む。一方、判断ブロック４６４での試験の回答がＮＯの場合は、方法４００は、第２のノードの（複数のエッジを含む）隣接ノードアレイの長さを取得する。ブロック４６６を参照されたい。次いで、ブロック４６８で、その長さが可変インデックスに割り当てられる。次に、方法４００は他の継続結合子（「結合子Ｅ５」）に続く。
【００４１】
結合子Ｅ５から（図４Ｊ）、方法４００はブロック４７０に進み、そのブロックで（２つのノードの各アドレスによって形成される）エッジが、（可変インデックスによってアドレス指定される）隣接ノードアレイ中のある位置に格納される。次に、判断ブロック４７２で、そのエッジが隣接ノードアレイ中のただ１つのアレイかどうかの判断をするための試験を行う。判断ブロック４７２での試験の回答がＮＯの場合は、方法４００は結合子Ｅ６に進む。一方、判断ブロック４７２での試験の回答がＹＥＳの場合は、第２のノードは第１のノードにＹＥＳで応答する。ブロック４７４を参照されたい。次に、方法４００はブロック４７６に移り、そのブロックで第１のノードは、その第２のノードが、通信要請またはアベイラビリティメッセージを送信した先のノードであることを確認する。次いで、ブロック４７８で、第１のノードの使用状態を、第１のノードが第２のノードとマッチしたことを示す真に設定する。次に、方法４００は、他の継続結合子（「結合子Ｅ７」）に進む。
【００４２】
結合子Ｅ７から（図４Ｋ）、方法４００はブロック４８０に進み、そのブロックで、第１のノードがマッチしているので、第１のノードの隣接ノードアレイの内容をクリアする。次に、ブロック４８２で第２のノードは、その第１のノードが、通信要請またはアベイラビリティメッセージを送信してきた送信元のノードであることを確認する。第２のノードの使用状態を、第２のノードが第１のノードにマッチしたことを示す真に設定する。ブロック４８４を参照されたい。第２のノードがマッチしたので、第２のノードの隣接ノードアレイの内容をクリアする。ブロック４８６を参照されたい。次に、方法４００は出口結合子Ｆに続き、そこで実行を終了する。
【００４３】
結合子Ｅ６から（図４Ｌ）、方法４００はブロック４８８に進み、そのブロックで第２のノードはＭＡＹＢＥを第１のノードに返す。次に、ブロック４９０で、第１のノードは、その第２のノードが、通信要請またはアベイラビリティメッセージを送信した送信先であることを確認する。次に、方法４００は他の継続結合子（「結合子Ｅ８」）に続く。
【００４４】
結合子Ｅ８から（図４Ｍ）、方法４００はブロック４９２に進み、そのブロックで第１のノードは、アベイラビリティメッセージを他のノードに発行する準備をする。次に、判断ブロック４９４で、隣接ノードアレイの中にエッジがあるかどうかを判断するための試験を行う。判断ブロック４９４での試験の回答がＮＯの場合は、方法４００は、出口結合子Ｆに進み実行を終了する。一方、判断ブロック４９４での試験の回答がＹＥＳの場合は、第１のノードは、マッチを見つけるために通信すべき新しいノードを選択する。ブロック４９６を参照されたい。次いで、方法４００は結合子Ｅに移り、そこから上記の処理ステップを繰り返す。
【００４５】
本発明の好ましい実施形態を図示し説明してきたが、本発明の趣旨および範囲を逸脱することなく、本発明の様々な変更を実施し得ることを理解されたい。
【図面の簡単な説明】
【００４６】
【図１】メインフレームコンピュータ１０４および複数のノードを含む従来のネットワークを示すブロック図である。
【図２】本発明の一実施形態による、通信のために他のノードとのマッチを試みる複数のノードを示すブロック図である。
【図３Ａ】本発明の一実施形態による、マッチング処理中の通信可能ノードを示すブロック図である。
【図３Ｂ】本発明の一実施形態による、マッチを判断するために相互に通信するインバイタと３つのノードを示すプロトコル図である。
【図４Ａ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｂ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｃ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｄ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｅ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｆ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｇ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｈ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｉ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｊ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｋ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｌ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【図４Ｍ】動的分散コンピューティング環境において、通信可能なノードをマッチさせる方法を示すプロセス図である。
【符号の説明】
【００４７】
１０２Ａ  ノード
１０４    メインフレームコンピュータ
２００Ａ  ノード
３０２    ノードＢ
３０２    ノードＡ
３０８    インバイタ
【図１】
2005310117.tif 000008
【図２】
2005310117.tif 000009
【図３Ａ】
2005310117.tif 000010
【図３Ｂ】
2005310117.tif 000011
【図４Ａ】
2005310117.tif 000012
【図４Ｂ】
2005310117.tif 000013
【図４Ｃ】
2005310117.tif 000014
【図４Ｄ】
2005310117.tif 000015
【図４Ｅ】
2005310117.tif 000016
【図４Ｆ】
2005310117.tif 000017
【図４Ｇ】
2005310117.tif 000018
【図４Ｈ】
2005310117.tif 000019
【図４Ｉ】
2005310117.tif 000020
【図４Ｊ】
2005310117.tif 000021
【図４Ｋ】
2005310117.tif 000022
【図４Ｌ】
2005310117.tif 000023
【図４Ｍ】
2005310117.tif 000024
【外国語明細書】
2005310117000001.pdf