(57)【特許請求の範囲】
【請求項１】
複数のノードを含む分散システムであって、
各ノードは、複数の通信手段を含み、
ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶する記憶手段と、
第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、前記記憶手段から前記第１のノード及び前記第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する通信手段判定手段と、
前記通信手段判定手段の判定結果に基づいて、通信手段を選択する通信手段選択手段とを
含むことを特徴とする分散システム。
【請求項２】
通信手段判定手段が判定したアプリケーション間の最適な通信手段を記憶する判定結果記憶手段を含み、
通信手段選択手段は、前記通信手段判定手段に判定要求を送信する前に、前記判定結果記憶手段を参照し、前記判定要求に対応する判定結果が記憶されている場合には、前記記憶されている判定結果に基づいて通信手段を選択する
請求項１記載の分散システム。
【請求項３】
通信手段判定装置を備え、
前記通信手段判定装置は、記憶手段と、通信手段判定手段とを含み、
各ノードは、通信手段選択手段を含み、
前記通信手段選択手段は、前記通信手段判定装置から受信した前記通信手段判定手段の判定結果に基づいて通信手段を選択する
請求項１又は請求項２記載の分散システム。
【請求項４】
分散システムを構成するノードのうち、第１のノードが、処理配置保存手段と、通信手段判定手段とを含み、第２のノードが、通信指示手段と、通信手段選択手段と、２種以上の通信手段とを含み、
前記第１のノードの前記処理配置保存手段は、処理実体が動作するノードの物理的な位置を示す物理位置情報を保存し、
前記通信手段選択手段は、第２のノード上で実行されている処理実体が、第２のノードとは異なる第３のノード上の処理実体に対して通信をするために、前記通信指示手段を呼び出した場合に、前記第１のノードの通信手段判定手段に最適な通信手段の判定を要求する通信手段判定要求を送信し、
前記第１のノードの通信手段判定手段は、前記通信手段判定要求を受信すると、前記処理配置保存手段が保存する情報に基づいて、前記通信手段判定要求に含まれる通信元及び通信先の処理実体の論理識別子を物理位置情報に変換し、変換した前記物理位置情報に基づいて、最も高速な通信手段を選択し、選択した通信手段を通信手段判定結果として、前記第２のノードに返信し、
前記通信手段選択部は、前記第１のノードの通信手段判定部から前記通信手段判定結果を受信すると、前記通信手段判定結果に示された通信手段を用いて、通信を行う
ことを特徴とする分散システム。
【請求項５】
第２ノードは、通信手段判定結果を保存するための判定結果記憶手段を備え、
通信手段選択手段は、第１のノードの通信手段判定手段に通信手段判定要求を送信する前に、前記判定結果記憶手段を参照し、前記通信手段判定要求に対応する判定結果が記憶されている場合には、前記記憶されている判定結果に基づいて通信手段を選択する
請求項４に記載の分散システム。
【請求項６】
複数のノードを含む分散システムにおいて、通信手段を選択する通信手段選択方法であって、ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶し、
第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、前記第１のノード及び前記第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定し、
判定結果に基づいて、通信手段を選択する
ことを特徴とする通信手段選択方法。
【請求項７】
判定したアプリケーション間の最適な通信手段を記憶し、
判定要求を送信する前に、前記判定要求に対応する判定結果が記憶されている場合には、前記記憶されている判定結果に基づいて通信手段を選択する
請求項６記載の通信手段選択方法。
【請求項８】
複数のノードを含む分散システムにおいて、通信手段を選択するための通信手段選択プログラムであって、
ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶するコンピュータに、
第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、前記第１のノード及び前記第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する通信手段判定処理と、
判定結果に基づいて、通信手段を選択する通信手段選択処理とを
実行させるための通信手段選択プログラム。
【請求項９】
通信手段判定処理で判定したアプリケーション間の最適な通信手段を記憶するコンピュータに、
通信手段選択処理で、前記通信手段判定処理に判定要求を送信する前に、前記判定要求に対応する判定結果が記憶されている場合には、前記記憶されている判定結果に基づいて通信手段を選択する処理を実行させる
請求項８記載の通信手段選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードを含む分散システムに関する。また、本発明は、複数のノードを含む分散システムにおいて、通信手段を選択する通信手段選択方法及び通信手段選択プログラムに関する。
【背景技術】
【０００２】
分散システムには、複数の計算ノード（以下、ノード）が１つの筐体に収められたクラスタや、複数のノードやクラスタが１つの建物に収められたデータセンタ、広域ネットワークでノードやクラスタ、データセンタが相互に接続された広域分散システムなど様々な形態がある。また、分散システムのノードの一部が、物理的なマシンでなく、仮想化ソフトウェアにより１つのノードを分割した仮想マシン（ＶＭ）や、ハードウェアにより１つのノードを分割したパーティションとして構成されることもある。そして、このような分散システムでは、ノード上で実行されたユーザプログラム（以下、アプリケーションと呼ぶ）がお互いに通信して処理を行う。【０００３】
分散システムのノードが多種多様であるのと同様に、ノード間の通信手段も多種多様である。例えば、一般的なイーサネット（登録商標）の上で行うＴＣＰ／ＩＰなどのメッセージ通信、Ｉｎｆｉｎｉｂａｎｄなどクラスタ向けネットワークで提供されるＲｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＲＤＭＡ）、さらに、パーティション間共有メモリを使った通信などがある。これらの通信手段には、それぞれ特長があるため、一般的には、分散システムが提供する通信手段の中から、アプリケーションを開発するプログラマが（高性能、高信頼、低消費電力など）適切な通信手段を選択して、利用している。しかし、アプリケーションを開発するプログラマがいつも適切な通信手段を選択するのは難しい。例えば、メッセージ通信とＲＤＭＡと共有メモリ通信とが利用可能な場合であれば、共有メモリ＞ＲＤＭＡ＞メッセージ通信の順に通信速度が大きいが、もともとソケットなどメッセージ通信が広く使われているため、結果的にメッセージ通信を利用するプログラマが多い。【０００４】
そこで、通信ライブラリやオペレーティングシステム（以下、ＯＳ）などの下位レイヤーで、適切な通信手段を選択する通信手段選択方法が考案されている。関連する通信手段選択方式の例が特許文献１及び特許文献２に記載されている。【０００５】
特許文献１には、サイズに応じて、通信手段を切り替える無線通信システムが記載されている。特許文献１に記載されている発明は、対向する第１及び第２の無線局間の無線回線の伝送路として、複数種類の伝送路のうち一の種類の伝送路を選択して無線通信する無線通信システムである。第１及び第２の無線局のそれぞれは、接続されたデータ端末から入力された少なくとも送信すべきデータの性質及びデータ量を分析するデータ分析手段と、データ分析手段による分析結果に応じて、複数種類の伝送路のうち、一の種類の伝送路を選択する伝送路選択手段と、伝送路選択手段により選択された一の種類の伝送路を使用した無線通信を行う通信手段とを有する。この発明では、送信すべきデータ（伝送しようとするデータ）の性質及びデータ量に応じて複数種類の伝送路の中から最適な伝送路を送信側の無線局で選択して無線通信することができる。また、送信すべきデータの性質及びデータ量を分析するデータ分析手段による分析結果だけでなく、更に速度情報と受信電界強度と位置情報とトラヒックの状況とに応じて、複数種類の伝送路のうち使用可能な一の種類の伝送路を選択するようにしたため、データの性質やデータサイズだけでなく、使用状況や電波受信環境などを加味した最適な伝送路の選択ができる。【０００６】
特許文献２には、アプリケーションの特性（ＩＰアドレス、ポートなど）に基づいて、通信路を切り替える通信装置が記載されている。特許文献２に記載されている発明による通信装置は、多種多様な通信方法でかつ複数のネットワークに接続可能である。この通信装置は、通信を実施する通信アプリケーションと、通信アプリケーションの通信内容に対して最適なネットワークを選択するネットワーク選択手段と、通信アプリケーションの特性を記憶するアプリケーション特性データベースと、通信アプリケーションの通信内容を学習しかつその学習結果に基づいてアプリケーション特性データベースを更新する通信内容学習手段とを備えている。すなわち、この通信装置は、使用するアプリケーションやサービスの状態及び過去の動作履歴に応じて経路の決定方法を動的に変更させることで、常に最適なネットワークを自動的に選択することを可能としている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３４３４５６号公報（段落０００７〜０００８、００１６）
【特許文献２】特開２００７−２８２１４２号公報（段落００１４、００１７）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記の各文献に記載された方法を用いても、一般的な通信経路選択手段では、互いに通信するアプリケーションの物理的な配置関係に基づいて最適な通信経路を選択できない。【０００９】
その理由は、アプリケーションはＩＰアドレスなどの論理的な識別子で相手を特定して通信するため、通信相手及び自分の物理的な配置を特定できないからである。例えば、複数のアプリケーションが同一サーバの別のパーティション上で動作しており、それらが互いのＩＰアドレスだけを知っていて通信を始めた場合、それらのアプリケーションは、同一サーバ内の通信であるにもかかわらず、メッセージ通信で通信する可能性が高い。もし、お互いの位置が通信開始前に、同一サーバ内の別パーティションであることがわかれば、これらのアプリケーションは共有メモリを利用した通信を行うことが可能である。【００１０】
そこで、本発明は、分散システムにおいて、アプリケーション間の通信を最適化することができる通信手段選択方法及び通信手段選択プログラムを提供することを目的とする。また、本発明は、アプリケーション間の通信を最適化することができる通信手段選択方法を適用した分散システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明による分散システムは、複数のノードを含む分散システムであって、各ノードは、複数の通信手段を含み、ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶する記憶手段と、第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、記憶手段から第１のノード及び第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する通信手段判定手段と、通信手段判定手段の判定結果に基づいて、通信手段を選択する通信手段選択手段とを含むことを特徴とする。【００１２】
本発明による通信手段選択方法は、複数のノードを含む分散システムにおいて、通信手段を選択する通信手段選択方法であって、ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶し、第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、第１のノード及び第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定し、判定結果に基づいて、通信手段を選択することを特徴とする。【００１３】
本発明による通信手段選択プログラムは、複数のノードを含む分散システムにおいて、通信手段を選択するための通信手段選択プログラムであって、ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶するコンピュータに、第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、第１のノード及び第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する通信手段判定処理と、判定結果に基づいて、通信手段を選択する通信手段選択処理とを実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、分散システムにおいて、アプリケーション間の通信を最適化することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明による分散システムの第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態における分散システムの動作例を示す流れ図である。
【図３】本発明による分散システムの第２の実施形態の構成例を示すプロック図である。
【図４】第２の実施形態における分散システムの動作例を示す流れ図である。
【図５】本発明による分散システムの具体的な実施例の構成を示す図である。
【図６】配置情報ファイルの具体例を示す説明図である。
【図７】マシン１００のルーティング情報を示す説明図である。
【図８】本発明による分散システムの具体的な第２の実施例の動作を示す図である。
【図９】本発明による分散システムの最小の構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
実施形態１．
次に、本発明の実施形態について図面を参照して説明する。図１を参照すると、本発明の第１の実施形態における分散システムは、プログラムに従って動作するコンピュータ１０とコンピュータ２０とコンピュータ３０とを含む。このうち、コンピュータ１０とコンピュータ２０とコンピュータ３０とは、ネットワーク１を介して相互に接続される。また、少なくともコンピュータ２０とコンピュータ３０とは、ネットワーク２を介して相互に接続される。そして、コンピュータ１０は、処理配置保存部１１、通信手段判定部１２及び処理配置管理部１３を含む。また、コンピュータ２０及びコンピュータ３０は、ともに、通信指示部２１、通信手段選択部２２、第１の通信部２３及び第２の通信部２４を含む。さらに、コンピュータ２０では、アプリケーション２９に従った処理が実行され、コンピュータ３０ではアプリケーション３９に従った処理が実行される。
【００１７】
処理配置管理部１３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。処理配置管理部１３は、アプリケーションの起動・終了・移動などを管理する機能を備えている。例えば、ＵＮＩＸ（登録商標）のｒｓｈコマンドのようなリモートシェル、ジョブディスパッチャ、仮想マシン管理用ツール等の機能が、処理配置管理部１３が備えている機能に相当する。処理配置管理部１３は、アプリケーションの起動の際には、アプリケーションのプログラム名と起動先のコンピュータ名とを指定する。また、処理配置管理部１３は、アプリケーションを別コンピュータに移動させたときには、アプリケーションのプログラム名と移動先のコンピュータ名とを指定する。
【００１８】
処理配置保存部１１は、具体的には、メモリや磁気ディスク装置、光ディスク装置等の記憶装置によって実現される。処理配置保存部１１は、処理配置管理部１３がアプリケーションを配置（起動・移動）した時の情報に基づく、アプリケーションの論理識別子とコンピュータの物理位置識別子との組を記憶する。アプリケーションの論理識別子は、アプリケーション同士の通信の際に相手を特定するために用いられる。アプリケーションの論理識別子としては、例えば、起動先のコンピュータのＩＰアドレスとアプリケーションが使用するポート番号との組がある。また、このアプリケーションの論理識別子の代わりに、コンピュータの論理識別子を指定してもよい。コンピュータの論理識別子としては、ホスト名やＩＰアドレスを使用できる。一方、コンピュータの物理位置識別子は、コンピュータの物理的な位置関係を示す。コンピュータの物理位置識別子としては、例えば、筐体番号がある。なお、本実施形態では、同一筐体内にあるコンピュータ同士は共有メモリ通信が使えるものとする。
【００１９】
通信手段判定部１２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。通信手段判定部１２は、通信手段選択部２２から通信手段の判定を要求する通信手段判定要求を受信し、以下の方法で適切な通信手段を判定する機能を備えている。ここで、通信手段判定要求には、通信元及び通信相手のアプリケーションの論理識別子が少なくとも含まれる。通信手段判定部１２は、この論理識別子をキーにして処理配置保存部１１を検索し、通信元及び通信相手のアプリケーションが動作するコンピュータの物理位置識別子を抽出する。さらに、通信手段判定部１２は、抽出した２つの物理位置識別子を比較して最適な通信手段を判定し、判定結果を通信手段選択部２２に返信する。例えば、通信手段判定部１２は、筐体番号が一致していれば、「共有メモリ通信」を表す値を判定結果として返信し、一致していなければ、「メッセージ通信」を表す値を判定結果として返信する。なお、本実施形態では、通信手段には、ネットワークを介した端末間の通信だけでなく、同じハードウェア内において同じメモリを介してデータのやりとりを行う共有メモリ通信が含まれるものとする。
【００２０】
通信指示部２１は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。通信指示部２１は、アプリケーション２９から送信要求が出力されると、それを通信手段選択部２２に出力する。送信要求には、少なくとも、通信元（要求した）アプリケーションの論理識別子、通信相手のアプリケーションの論理識別子及び送信データ本体が含まれる。通信指示部２１が備えている機能に相当する機能としては、例えば、ＵＮＩＸのｓｅｎｄシステムコールやＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）のＭＰＩ_ｓｅｎｄなどが挙げられる。
【００２１】
通信手段選択部２２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。通信手段選択部２２は、通信指示部２１が出力した送信要求から通信元及び通信相手のアプリケーションの論理識別子を抽出し、通信手段判定要求を作成して、通信手段判定部１２に送信する機能を備えている。なお、通信手段選択部２２は、送信要求に含まれる通信元及び通信相手のアプリケーションの論理識別子から、コンピュータの論理識別子を抽出して、通信手段判定要求を作成してもよい。また、通信手段選択部２２は、通信手段判定部１２から判定結果を受信し、その判定結果に基づいて、第１の通信部か、第２の通信部かのいずれかを選択する機能を備えている。通信手段選択部２２は、例えば、判定結果が「メッセージ通信」を表す値ならば、第１の通信部を選択し、判定結果が「共有メモリ通信」を表す値ならば、第２の通信部を選択する。
【００２２】
第１の通信部２３は、ネットワーク１を介してデータを送受信する。例えば、ネットワーク１がイーサネットである場合には、第１の通信部は、ＴＣＰ／ＩＰによる通信を行う。一方、第２の通信部２４は、ネットワーク２を介してデータを送受信する。例えば、ネットワーク２が筐体内のインターコネクトである場合には、第２の通信部は、共有メモリによる通信を行う。
【００２３】
アプリケーション２９及びアプリケーション３９は、それぞれ、送信元のアプリケーション、送信先のアプリケーションであり、通信しながら、所定の処理を行う。
【００２４】
次に、図１及び図２のフローチャートを参照して本実施形態の全体の動作について説明する。
【００２５】
コンピュータ２０のアプリケーション２９が通信指示部２１に通信要求を出力すると、通信指示部２１は、アプリケーション２９が出力した通信要求を通信手段選択部２２に出力する（ステップＳ１）。ここで、送信要求には、少なくとも、通信元であるアプリケーション２９の論理識別子、通信相手であるアプリケーション３９の論理識別子及び送信データ本体が含まれる。
【００２６】
次いで、コンピュータ２０の通信手段選択部２２は、通信指示部２１が出力した通信要求に基づいて通信手段選択要求を生成し、生成した通信手段選択要求をコンピュータ１０の通信手段判定部１２に送信する（ステップＳ２）。具体的には、通信手段選択部２２は、通信指示部２１が出力した送信要求から通信元であるアプリケーション２９の論理識別子、通信相手であるアプリケーション３９の論理識別子を抽出する。そして、通信手段選択部２２は、抽出した論理識別子を用いて通信手段判定要求を生成し、通信手段判定部１２に送信する。
【００２７】
次いで、コンピュータ１０の通信手段判定部１２は、通信手段選択要求を受信し、処理配置保存部１１を参照して、通信手段を判定する。そして、通信手段判定部１２は、判定結果をコンピュータ２０の通信手段選択部２２に返信する（ステップＳ３）。具体的には、通信手段判定部１２は、受信した通信手段選択要求から、送信元及び送信相手のアプリケーションの論理識別子を抽出する。そして、通信手段判定部１２は、抽出した論理識別子をキーにして処理配置保存部１１を検索し、通信元及び通信相手のアプリケーションが動作するコンピュータの物理位置識別子を抽出する。そして、通信手段判定部１２は、抽出した２つの物理位置識別子を比較して最適な通信手段を判定し、判定結果を通信手段選択部２２に返信する。例えば、通信手段判定部１２は、筐体番号が一致していれば、「共有メモリ通信」を表す値を判定結果として返信し、一致していなければ、「メッセージ通信」を表す値を判定結果として返信する。このように、通信手段判定部１２は、処理配置保存部１１が保存する情報に基づいて、通信手段判定要求に含まれる通信元及び通信先の処理実体の論理識別子を物理位置情報に変換し、変換した物理位置情報に基づいて、最も高速な通信手段を選択し、選択した通信手段を通信手段判定結果として、返信する。
【００２８】
次いで、コンピュータ２０の通信手段選択部２２は、通信手段判定部１２から受信した判定結果に基づいて、通信手段の選択を行う（ステップＳ４）。
【００２９】
判定結果が「メッセージ通信」を表す値の場合（ステップＳ４のＹ）、コンピュータ２０は、第１の通信部２３を用いてコンピュータ３０にデータを送信する（ステップＳ５）。
【００３０】
判定結果が「共有メモリ通信」を表す値の場合（ステップＳ６のＹ）、コンピュータ２０は、第２の通信部２４を用いてコンピュータ３０にデータを送信する（ステップＳ７）。
【００３１】
また、判定結果が「メッセージ通信」でも「共有メモリ通信」でもない場合（例えば、対応する物理位置が登録されていない等の理由により判定できなかった場合）、通信手段選択部２２は、エラー情報を出力する。
【００３２】
次に、本実施形態の効果について説明する。
【００３３】
本実施形態では、アプリケーションの論理的な識別子とノード（コンピュータ）の物理的な位置情報の関係を保存している。そして、アプリケーションが通信する時に、通信に関わるアプリケーションの論理的な識別子から、通信に関わるアプリケーションが動作するノードの物理的な位置情報を特定し、これらノードの間で利用可能な最も高速な通信手段を選択する。これにより、分散システムのアプリケーション間の通信手段として、アプリケーションが動作するノードの位置関係に基づいて、複数の通信手段を選択的に利用可能な場合に、最も高速なものを選択できるという効果が得られる。
【００３４】
実施形態２．
次に、本発明による分散システムの第２実施形態について説明する。第２の実施形態における分散システムは、第１の実施形態の構成に加えて、判定結果記憶部を含む。以下、本実施形態について、図面を参照して説明する。
【００３５】
図３を参照すると、本発明の第２の実施形態における分散システムは、第１の実施形態と同様に、コンピュータ１０、コンピュータ２０及びコンピュータ３０を含む。同様に、コンピュータ１０とコンピュータ２０とコンピュータ３０とは、ネットワーク１を介して相互に接続される。また、少なくともコンピュータ２０とコンピュータ３０とは、ネットワーク２を介して相互に接続される。同様に、コンピュータ１０は、通信手段判定部１２、処理配置管理部１３を含み、さらに、処理配置保存部１４を含む。そして、第１の実施形態と同様に、コンピュータ２０及びコンピュータ３０は、ともに、通信指示部２１、第１の通信部２３及び第２の通信部２４を含み、さらに、通信手段選択部２５（本実施形態では、第１の実施形態で示した通信手段選択部２２に代えて、通信手段選択部２５を含む。）及び判定結果記憶部２６を含む。そして、コンピュータ２０では、アプリケーション２９が、コンピュータ３０ではアプリケーション３９が動作する点も第１の実施形態と同様である。
【００３６】
通信手段判定部１２及び処理配置管理部１３は、第１の実施形態と同様の構成である。すなわち、通信手段判定部１２は、通信手段選択部２２から通信手段判定要求を受信し、通信手段判定要求に含まれるアプリケーションの論理識別子をキーにして処理配置保存部１４を検索する。そして、通信手段判定部１２は、通信元及び通信相手のアプリケーションが動作するコンピュータの物理位置識別子を抽出し、抽出した２つの物理位置識別子を比較して最適な通信手段を判定し、判定結果を通信手段選択部２２に返信する。また、処理配置管理部１３は、アプリケーションの起動・終了・移動などを管理する。
【００３７】
処理配置保存部１４は、処理配置管理部１３がアプリケーションを配置（起動・移動）した時の情報に基づく、アプリケーションの論理識別子とコンピュータの物理位置識別子との組を記憶する。この第１の実施形態と同様の構成に加えて、本実施形態では、処理配置保存部１４は、処理配置管理部１３がアプリケーションを移動・停止させた時に、コンピュータ２０の判定結果記憶部２６に対して、該当記憶部分の削除を要求する機能を備えている。この削除要求には、少なくとも、移動・停止したアプリケーションの論理識別子が含まれる。本実施形態においては、処理配置保存部１４は、具体的には、光ディスク装置や磁気ディスク装置等の記憶装置とプログラムに従って動作する情報処理装置のＣＰＵとによって実現される。
【００３８】
通信指示部２１、第１の通信部２３及び第２の通信部２４も、第１の実施の形態と同様である。すなわち、通信指示部２１は、アプリケーション２９から送信要求が出力されると、それを通信手段選択部２５に出力する。第１の通信部２３及び第２の通信部２４は、それぞれ、ネットワーク１、ネットワーク２を介してデータを送受信する。
【００３９】
通信手段選択部２５は、通信指示部２１が出力した送信要求から通信元及び通信相手のアプリケーションの論理識別子を抽出し、抽出した論理識別子を用いて通信手段判定要求を作成して、通信手段判定部１２に送信する。さらに、通信手段選択部２５は、通信手段判定部１２から判定結果を受信し、その判定結果に基づいて、第１の通信部２３か、第２の通信部２４かのいずれかを選択する。この第１の実施形態と同様の構成に加えて、本実施形態では、通信手段選択部２５は、通信手段判定部１２から受信した判定結果を判定結果記憶部２６に記憶させる機能を備えている。通信手段選択部２５が判定結果記憶部２６に記憶させるのは、通信元及び通信相手のアプリケーションの論理識別子と、判定結果とである。さらに、通信手段選択部２５は、送信要求から抽出した通信元及び通信相手のアプリケーションの論理識別子、又は、そこから抽出したコンピュータの論理識別子をキーに、判定結果記憶部２６を検索する機能を備えている。そして、該当するエントリが見つかった場合には、通信手段選択部２５は、そこに含まれる判定結果に基づいて、第１の通信部２３か、第２の通信部２４かのいずれかを選択する機能を備えている。
【００４０】
判定結果記憶部２６は、具体的には、磁気ディスク装置や光ディスク装置等の記憶装置によって実現される。判定結果記憶部２６は、通信手段判定部１２による判定結果を記憶する。また、判定結果記憶部２６は、通信元及び通信相手のアプリケーションの論理識別子と判定結果とを対応付けて記憶する。
【００４１】
アプリケーション２９及びアプリケーション３９も第１の実施形態と同様に、それぞれ、送信元のアプリケーション、送信先のアプリケーションであり、通信しながら、所定の処理を行う。
【００４２】
次に、図３及び図４のフローチャートを参照して本実施形態の全体の動作について説明する。
【００４３】
コンピュータ２０のアプリケーション２９が通信指示部２１に通信要求を出力すると、通信指示部２１は、アプリケーション２９が出力した通信要求を通信手段選択部２５に出力する（ステップＳ１１）。ここで、送信要求には、少なくとも、通信元であるアプリケーション２９の論理識別子、通信相手であるアプリケーション３９の論理識別子及び送信データ本体が含まれる。
【００４４】
次いで、コンピュータ２０の通信手段選択部２５は、通信指示部２１が出力した通信要求から、送信元及び送信相手のアプリケーションの論理識別子を抽出する。そして、コンピュータ２０の通信手段選択部２５は、通信要求から抽出したアプリケーションの論理識別子をキーにして、判断結果記憶部２６を検索して、判定結果があるか否かを判定する（ステップＳ１２）。すなわち、通信手段選択部２５は、抽出した論理識別子によって識別されるアプリケーション間における最適な通信手段の判定結果が、すでに判定結果記憶部２６に記憶されているか否かを判定する。例えば、通信手段選択部２５は、通信要求に含まれる識別子に対応する判定結果がすでに記憶されているか否かを判定する。
【００４５】
そして、すでに判定結果があると判定した場合には、通信手段選択部２５は、ステップＳ１６に処理を移行する（ステップＳ１２のＹ）。一方、判定結果がないと判定した場合には、通信手段選択部２５は、ステップＳ１３に処理を移行する（ステップＳ１２のＮ）。
【００４６】
ステップＳ１２において、判定結果がないと判定すると、コンピュータ２０の通信手段選択部２５は、抽出したアプリケーションの論理識別子を用いて通信手段選択要求を生成し、生成した通信手段選択要求をコンピュータ１０の通信手段判定部１２に送信する（ステップＳ１３）。
【００４７】
次いで、コンピュータ１０の通信手段判定部１２は、通信手段選択部２５から通信手段選択要求を受信すると、処理配置保存部１１を参照して、通信手段を判定する。そして、通信手段判定部１２は、判定結果をコンピュータ２０の通信手段選択部２５に返信する（ステップＳ１４）。具体的には、通信手段判定部１２は、受信した通信手段選択要求から、送信元及び送信相手のアプリケーションの論理識別子を抽出する。そして、通信手段判定部１２は、抽出した論理識別子をキーにして処理配置保存部１４を検索し、通信元及び通信相手のアプリケーションが動作するコンピュータの物理位置識別子を抽出する。そして、通信手段判定部１２は、抽出した２つの物理位置識別子を比較して最適な通信手段を判定し、判定結果を通信手段選択部２５に返信する。
【００４８】
次いで、コンピュータ２０の通信手段選択部２５は、受信した判定結果をアプリケーションの論理識別子とともに、判定結果記憶部２６に記憶させる（ステップＳ１５）。
【００４９】
ステップＳ１２において判定結果があると判定した場合、又はステップＳ１５において受信した判定結果を判定結果記憶部２６に記憶させた場合、コンピュータ２０の通信手段選択部２５は、判定結果に基づいて通信手段の選択を行う（ステップＳ１６）。具体的には、通信手段選択部２５は、ステップＳ１６において、判定結果が「メッセージ通信」であるか否かを判定する。
【００５０】
ステップＳ１６において、判定結果が「メッセージ通信」を表す値であると判定した場合（ステップＳ１６のＹ）、コンピュータ２０は、第１の通信部を用いてコンピュータ３０にデータを送信する（ステップＳ１７）。一方、判定結果が「メッセージ通信」を表す値でないと判定した場合（ステップＳ１６のＮ）、通信手段選択部２５は、判定結果が「共有メモリ通信」であるか否かを判定する（ステップＳ１８）。
【００５１】
ステップＳ１８において、判定結果が「共有メモリ通信」を表す値であると判定した場合（ステップＳ１８のＹ）、コンピュータ２０は、第２の通信部を用いてコンピュータ３０にデータを送信する（ステップＳ１９）。
【００５２】
また、判定結果が「メッセージ通信」でも「共有メモリ通信」でもない場合（ステップＳ１８のＮ）、通信手段選択部２５は、エラー情報を出力する。
【００５３】
次に、本実施形態の効果について説明する。
【００５４】
本実施形態では、第１の実施形態と同様に、アプリケーションの論理的な識別子とノード（コンピュータ）の物理的な位置情報の関係を保存する。そして、アプリケーションが通信する時に、通信に関わるアプリケーションの論理的な識別子から、通信に関わるアプリケーションが動作するノードの物理的な位置情報を特定し、これらノードの間で利用可能な最も高速な通信手段を選択する。これにより、分散システムのアプリケーション間の通信手段として、アプリケーションが動作するノードの位置関係に基づいて、複数の通信手段を選択的に利用可能な場合に、最も高速なものを選択できるという効果が得られる。
【００５５】
さらに、本実施形態では、通信手段選択部２５は、通信手段判定部１２が返信した判定結果を、判定手段記憶部２６に保存する。そして、通信手段選択部２５は、判定手段記憶部２６を参照し、通信手段を選択する。すでに同じ判定が行われている場合には、無駄な処理を重ねて行うことなく、その過去の判定結果を再利用して通信手段の選択を行う。これにより、他のノードと通信を行うたびに、通信手段選択部２５と通信手段判定部１２との間で行われる通信を減らすことができるという効果が得られる。
【００５６】
第１の実施形態及び第２の実施形態では、コンピュータ１０、コンピュータ２０及びコンピュータ３０がそれぞれ別々にネットワーク１に接続されていると説明したが、例えば、コンピュータ１０とコンピュータ２０とが、又は、コンピュータ１０とコンピュータ３０とが１つコンピュータとして実現されていてもよい。
【００５７】
また、第１の実施形態及び第２の実施形態でコンピュータと示したものは、物理的な筐体を持つものだけを示すのではなく、例えば、ハードウェアによるパーティションやＶＭを含んでも構わない。
【００５８】
さらに、第１の実施形態及び第２の実施形態では、第１の通信部と第２の通信部との２種類の通信部を持つ構成を提示したが、３種類以上の通信部を持つ場合も同様に提供可能である。この場合、通信手段選択部２２や通信手段選択部２５の動作が、第３の通信部などを選択するための条件分岐が増えることになる。
【実施例１】
【００５９】
次に、具体的な実施例を用いて本発明の動作を説明する。まず、本発明をＬｉｎｕｘ（登録商標）が搭載された複数のコンピュータで構成された分散システムに適用する例を示す。【００６０】
図５は、本発明による分散システムの具体的な実施例の構成を示す図である。図５において、マシン１００〜マシン１０３及びコントローラ１１０は、すべてＬｉｎｕｘが搭載されたコンピュータである。【００６１】
マシン１００とマシン１０１とは、１つの筐体に収められたコンピュータをハードウェアにおいて２つのパーティションに分割したものである。マシン１０２は、マシン１００及びマシン１０１と同じ部屋の中に設置されている。マシン１０３は、マシン１００、マシン１０１及びマシン１０２とは少し離れた場所、例えば同じビルの他の階に設置されているとする。また、マシン１００及びマシン１０１には、イーサネット、Ｉｎｆｉｎｉｂａｎｄ及びインターコネクトの３種類の通信ハードウェアが搭載されている。また、マシン１０２には、イーサネット及びＩｎｆｉｎｉｂａｎｄが搭載されている。また、マシン１０３には、イーサネットが搭載されている。３種類のハードウェアは、Ｌｉｎｕｘのデバイスとして実現されており、それぞれ、”ｅｔｈ０”、“ｉｎｆ０”、”ｉｃｏｎ０”というデバイス名がつけられている。【００６２】
また、コントローラ１１０は、マシン１００〜マシン１０３とＩＰ通信が可能な場所に設置されている。また、コントローラ１１０は、少なくともマシン１００のデフォルトゲートウェイとして設定されている。【００６３】
この分散システムでは、以下のルールに従って通信手段を選択することが可能である。【００６４】
同一の筐体内である場合には、イーサネットを用いたＩＰ通信やＩｎｆｉｎｉｂａｎｄを用いたＲＤＭＡ通信、インターコネクトを用いた共有メモリ通信を選択することができる。【００６５】
また、筐体は異なるが、同一の部屋内である場合には、イーサネットを用いたＩＰ通信やＩｎｆｉｎｉｂａｎｄを用いたＲＤＭＡ通信を選択することができる。【００６６】
また、筐体も部屋も異なる場合には、イーサネットを用いたＩＰ通信を選択することができる。【００６７】
なお、通信速度は、イーサネットを用いたＩＰ通信＜Ｉｎｆｉｎｉｂａｎｄを用いたＲＤＭＡ通信＜インターコネクトを用いた共有メモリ通信の順番であるとする。本実施例では、可能な限り高速な通信手段を選択する。【００６８】
この分散システムに対して、本発明は次のように適用できる。【００６９】
本実施例において、第１および第２の実施形態における、コンピュータ１０の処理配置保存部１１と処理配置管理部１３とは、コントローラ１１０上の分散シェルと配置情報ファイルとして実現される。また、通信手段判定部１２は、コントローラ１１０上のサーバプロセスとして実現される。ここで、分散シェルは、遠隔のコンピュータ上にアプリケーションを実行するための遠隔実行コマンド（ｒｓｈ、ｓｓｈなど）を利用する。さらに、分散シェルは、アプリケーションの遠隔起動に成功した場合、その筐体番号や部屋番号などを遠隔のコンピュータの設定ファイルなどから取得し、遠隔のコンピュータのＩＰアドレスと組にして保存する。【００７０】
一例として、マシン１００〜マシン１０３の上に、アプリケーションを起動したあとの配置情報ファイルの内容を図６に示す。ここで、コンピュータとＩＰアドレスとの対応は、マシン１００が１０.９９.９９.１００、マシン１０１が１０.９９.９９.１０１、マシン１０２が１０.９９.９９.１０２、マシン１０３が１０.９９.９９.１０３であるとする。【００７１】
また、通信指示部２１、通信手段選択部２２、第１の通信部２３及び第２の通信部２４は、いずれもマシン１００〜マシン１０３上のオペレーティングシステム（ＯＳ）及び通信用ハードウェアの一部機能として実現されている。【００７２】
マシン１００が、マシン１０１と通信する場合、マシン１００上のアプリケーションは、マシン１０１を宛先とするｓｅｎｄシステムコールを出力する。そして、マシン１００上のアプリケーションは、マシン１００のＯＳに宛先のＩＰアドレスとデータ本体とを出力する。この時点では、マシン１００には、マシン１０１に対するルーティング設定がないため、マシン１００は、最初のパケットをデフォルトゲートウェイであるコントローラ１１０に送信する。このパケットは、ＩＰ通信で送信されるので、送り元（マシン１００）のＩＰアドレスと送り先（マシン１０１）のＩＰアドレスとを含む。【００７３】
次いで、コントローラ１１０は、受信したパケットからマシン１００のＩＰアドレスとマシン１０１のＩＰアドレスとを抽出する。そして、コントローラ１１０は、抽出したＩＰアドレスをキーにして、それぞれのマシンの筐体番号と部屋番号とを検索し、これらの番号から前述のルールに従って、適切な通信手段を選択する。本実施例の場合、マシン１００のＩＰアドレス１０.９９.９９.１００から、部屋番号が１、筐体番号が１、マシン１０１のＩＰアドレス１０.９９.９９.１０１から、部屋番号が１、筐体番号が１であるとわかる。これは、「同一の筐体内」の場合にあてはまるので、コントローラ１１０は、もっとも通信速度が大きい「共有メモリ通信」を選択する。【００７４】
次いで、コントローラ１１０は、この判定結果を、マシン１００に伝えるために、リモートコマンドを実行することで、マシン１００のルーティング設定を変更する。具体的には、コントローラ１１０は、“ｒｓｈ  １０.９９.９９.１００  ｒｏｕｔｅ  ａｄｄ  １０.９９.９９.１０１  ｄｅｖ  ｎｗｋ０”というコマンドを実行する。このコマンドの後半の”ｒｏｕｔｅ  ａｄｄ  １０.９９.９９.１０１  ｄｅｖ  ｎｗｋ０”の部分は、「１０.９９.９９.１０１に送信するパケットはデバイス”ｎｗｋ０”を使って送信する」というルーティング情報を設定している。【００７５】
ルーティング情報が設定された後には、マシン１００は、マシン１０１に送信するパケットを、“ｎｗｋ０”すなわち、インターコネクトを用いた共有メモリ通信により送信するようになる。【００７６】
マシン１００からマシン１０２に通信が開始されるとき、マシン１００からマシン１０３に通信が開始されるときも、同様の処理が行われる。そして、最終的にマシン１００のルーティング情報が更新され、マシン１００は、それぞれ最も高速な通信ハードウェアを用いて通信を行うようになる。図７に、通信開始前及び通信開始後のマシン１００のルーティング情報（ｒｏｕｔｅコマンドの出力）を示す。【００７７】
以上のように、本実施例では、分散システムにおいて、アプリケーション間の通信手段として、アプリケーションが動作するノードの位置関係に基づいて、最も高速なものを選択することができる。【００７８】
本実施例では、ＯＳとしてＬｉｎｕｘを用いたが、Ｌｉｎｕｘ以外のＯＳであっても、ルーティング情報の設定機能があれば、本実施例と同様の実装が可能である。
【実施例２】
【００７９】
次に、第２の実施例を用いて本発明の動作を説明する。ここでは、「プログラマブルフロー・スイッチ」と呼ばれるネットワークスイッチと仮想マシンとを含む分散システムに本発明を適用する例を示す。【００８０】
「プログラマブルフロー・スイッチ」とは、実際にフローを処理するスイッチ部と、そのスイッチ部にどのようなフロー処理を行わせるかを指示する制御部（制御サーバー）とに分離したスイッチのことである。フロースイッチでは、スイッチ内でのパケットの流れ（フロー）を直接制御することができる。すなわち、フロースイッチは、パケットの送信元／送信先のＩＰアドレス、パケットの種類などに基づいて、そのパケットを何番のネットワークポートに出力するかを、フローテーブルと呼ばれる情報を用いて、制御する。「プログラマブルフロー・スイッチ」は、ネットワークスイッチを、フローテーブルの設定のインターフェースの部分で、スイッチ本体とコントローラとに分離したものである。プログラマブルフロー・スイッチは、２００８年１０月にＮＥＣから試作品が発表されている。【００８１】
図８に、プログラマブルフロー・スイッチと仮想マシンとを組み合わせた分散システムの構成の一例を示す。なお、図８に示す例では、プログラマブルフロー・スイッチを仮想マシンモニタ（ＶＭＭ）内の仮想スイッチ１１２として実装している。【００８２】
この例でも、コンピュータの構成は実施例１と同様である。すなわち、図７に示されるように、マシン１００及びマシン１０１は、１つの筐体に収められたコンピュータをハードウェアにおいて２つのパーティションに分割したものである。マシン１０２は、マシン１００及びマシン１０１と同じ部屋の中に設置されている。マシン１０３は、マシン１００、マシン１０１及びマシン１０２とは少し離れた場所、例えば同じビルの他の階に設置されているとする。また、マシン１００及びマシン１０１には、イーサネット、Ｉｎｆｉｎｉｂａｎｄ、インターコネクトの３種類の通信ハードウェアが搭載されている。また、マシン１０２には、イーサネット及びＩｎｆｉｎｉｂａｎｄが搭載されている。また、マシン１０３には、イーサネットが搭載されている。【００８３】
そして、本実施例では、さらに、各マシンの上にＶＭＭが搭載され、その上で仮想マシン（ＶＭ）が動作する。マシン１００上でＶＭ−Ａ、マシン１０１上でＶＭ−Ｂ、マシン１０２上でＶＭ−Ｃ、マシン１０３上でＶＭ−Ｄが動作しているものとする。【００８４】
さらに、各コンピュータのＶＭＭ上では、通信ハードウェア毎の管理ＶＭが動作する。すなわち、イーサネット通信用のＶＭ、Ｉｎｆｉｎｉｂａｎｄ用のＶＭ及びインターコネクト用のＶＭが動作する。これらのＶＭは、アプリケーションが動作する通常のＶＭに対して、１つの通信ハードウェアを複数のハードウェアがあるかのように仮想化する機能（Ｉ／Ｏ仮想化機能）を備えている。【００８５】
コントローラ１１１は、ＶＭ−Ａ、ＶＭ−Ｂ、ＶＭ−Ｃ及びＶＭ−ＤとＩＰ通信が可能な場所に設置されている。また、コントローラ１１１は、ＶＭ−Ａのデフォルトゲートウェイとして設定されている。【００８６】
本実施例において、第１および第２の実施形態における、コンピュータ１０の処理配置保存部１１と処理配置管理部１３とは、コントローラ１１１上のＶＭ管理コンソールとＶＭ配置情報ファイルとして実現される。また、通信手段判定部１２は、コントローラ１１１上のサーバプロセスとして実現される。ここで、ＶＭ管理コンソールは、ＶＭの起動、終了、移動させるためのＶＭ制御コマンドを利用する。さらに、ＶＭ管理コンソールは、ＶＭの起動に成功した場合、その筐体番号や部屋番号などを、ＶＭのＩＰアドレスと組にして保存する。【００８７】
また、通信指示部２１及び通信手段選択部２２は、仮想スイッチ１１２の一部機能として実現されている。第１の通信部２３及び第２の通信部２４は、通信ハードウェア用のＶＭ及び通信用ハードウェアの一部機能として実現される。【００８８】
ＶＭ−Ａが、ＶＭ−Ｂと通信する場合、ＶＭ−Ａ上のアプリケーションは、ＯＳを介して、ＶＭ−Ｂを宛先とするＩＰパケットを出力する。そして、ＶＭ−Ａ上のアプリケーションは、仮想スイッチ１１２にＩＰパケットを出力する。この時点では、仮想スイッチ１１２には、ＶＭ−ＡからＶＭ−Ｂへの通信に対するフローの設定がない。そのため、プログラマブル・フロースイッチは、その基本機能により、最初のパケットの転送を保留し、パケットの一部をコントローラ１１１に送信する。このパケットには、送り元（ＶＭ−Ａ）のＩＰアドレスと送り先（ＶＭ−Ｂ）のＩＰアドレスとが含まれる。【００８９】
コントローラ１１１は、受信したパケットからＶＭ−ＡのＩＰアドレスとＶＭ−ＢのＩＰアドレスとを抽出し、これらをキーにして、それぞれのＶＭが動作するマシンの筐体番号と部屋番号とを検索する。そして、コントローラ１１１は、これらの番号から実施例１と同様のルールに従って、適切な通信手段、すなわち、通信用ＶＭを選択する。本実施例の場合、コントローラ１１１は、「インターコネクト用ＶＭ」を選択する。【００９０】
次いで、コントローラ１１１は、この判定結果に基づいて、ＶＭ−ＡからＶＭ−Ｂへのパケットをインターコネクト通信用ＶＭに送信するため、フロー設定情報を仮想スイッチ１１２に返信する。次いで、仮想スイッチ１１２は、受信したフロー設定情報に基づいて、フローテーブルを設定する。【００９１】
フローテーブルが設定された後には、ＶＭ−Ａは、ＶＭ−Ｂに送信するパケットを、インターコネクト通信用ＶＭを経由して、インターコネクトを用いた共有メモリ通信により送信するようになる。【００９２】
以上のように、本実施例では、分散システムにおいて、アプリケーション間の通信手段として、アプリケーションが動作するノードの位置関係に基づいて、最も高速なものを選択することができる。【００９３】
以上のことから、本発明は、分散システムを構成するコンピュータ上に処理（プロセス、タスク、仮想マシン）を配置、又は、移動させるための処理配置管理手段と連携し、アプリケーション間の通信を最適化する通信手段選択方法および通信手段選択プログラム、これらを内包する分散システムに関するといえる。【００９４】
また、本発明は、以下のような手段を備えているといえる。【００９５】
本発明は、分散システムを構成するノードのうち、少なくとも１つの第１のノードが、処理配置保存部、通信手段判定部を有し、少なくとも１つの第２のノードが、通信指示部、通信手段選択部、２種以上の通信部を有することを特徴とする分散システムである。この分散システムにおいて、第１のノードの処理配置保存部は、処理配置管理部からアプリケーションやＶＭなどの処理実体が動作するノードの物理位置情報を入手し、処理配置保存部に保存する。一方、第２のノード上で実行されている処理実体が、第２のノードとは異なる第３のノード上の処理実体に対して通信をするために、通信指示部が呼び出された場合に、通信手段選択部が第１のノードの通信手段判定部に通信手段判定要求を送る。【００９６】
第１のノードの通信手段判定部は、通信手段判定要求を受け取ると、処理配置保存部に保存された情報に基いて、通信手段判定要求に含まれる通信元と通信先の処理実体の論理識別子を物理的なノードの位置を示す物理位置情報に変換し、さらに、通信手段判定部は、この変換された物理位置情報に基いて、最も高速な通信手段を選択し、通信手段判定結果を、第２ノードに返す。通信手段選択部は、通信手段判定結果を受け取り、そこで指定された通信手段を提供する通信部を呼び出して、通信を行う。【００９７】
さらに、第２ノードに通信手段判定結果を保存するための判定結果記憶部を有し、通信手段選択部が第１のノードの通信手段判定部に通信手段判定要求を送る前に、判定結果記憶部を参照し、対応する判定結果が見つかった場合は、その判定結果に基づいて通信手段を選択する。【００９８】
以上のことから、本発明は、以下のような効果を奏する。【００９９】
本発明が奏する効果は、分散システムのアプリケーション間の通信手段として、アプリケーションが動作するノードの位置関係に基づいて、複数の通信手段を選択的に利用可能な場合に、最も高速なものを選択できることである。その理由は、アプリケーションの論理的な識別子とノードの物理的な位置情報の関係を保存し、アプリケーションが通信を開始する時に、通信に関わるアプリケーションの論理的な識別子から、通信に関わるアプリケーションが動作するノードの物理的な位置情報を特定し、これらノードの間で利用可能な最も高速な通信手段を選択するように構成されているためである。【０１００】
次に、本発明による分散システムの最小構成について説明する。図９は、分散システムの最小の構成例を示すブロック図である。図９に示すように、分散システムは、最小の構成要素として、記憶手段１００、通信手段判定手段１１０及び通信手段選択手段１２０を含む。【０１０１】
図９に示す最小構成の分散システムでは、記憶手段１００は、複数の通信手段を含むノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶している。そして、通信手段判定手段１１０は、第１のノード上で動作するアプリケーションが第２のノード上で動作するアプリケーションと通信を行う際に、アプリケーションの識別情報に基づいて、記憶手段１００から第１のノード及び第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する。次いで、通信手段選択手段１２０は、通信手段判定手段１１０の判定結果に基づいて、通信手段を選択する。【０１０２】
従って、最小構成の分散システムによれば、ノードの物理的な位置情報に基づいて通信手段を選択することで、アプリケーション間の通信を最適化することができる。【０１０３】
なお、本実施形態では、以下の（１）〜（５）に示すような分散システムの特徴的構成が示されている。【０１０４】
（１）分散システムは、複数のノードを含む分散システムであって、各ノードは、複数の通信手段を含み、ノードの物理的な位置情報とノード上で動作するアプリケーションの識別情報とを対応付けて記憶する記憶手段（例えば、処理配置保存部１１及び処理配置管理部１３によって実現される）と、第１のノード（例えば、コンピュータ２０によって実現される）上で動作するアプリケーション（例えば、アプリケーション２９によって実現される）が第２のノード（例えば、コンピュータ３０によって実現される）上で動作するアプリケーション（例えば、アプリケーション３９によって実現される）と通信を行う際に、アプリケーションの識別情報に基づいて、記憶手段から第１のノード及び第２のノードの位置情報を抽出し、抽出した位置情報に基づいて、複数の通信手段から最適な通信手段を判定する通信手段判定手段（例えば、通信手段判定部１２によって実現される）と、通信手段判定手段の判定結果に基づいて、通信手段を選択する通信手段選択手段（例えば、通信手段選択部２２によって実現される）とを含むことを特徴とする。【０１０５】
（２）分散システムは、通信手段判定手段が判定したアプリケーション間の最適な通信手段を記憶する判定結果記憶手段（例えば、判定結果記憶部２６によって実現される）を含み、通信手段選択手段は、通信手段判定手段に判定要求を送信する前に、判定結果記憶手段を参照し、判定要求に対応する判定結果が記憶されている場合には、記憶されている判定結果に基づいて通信手段を選択するように構成されていてもよい。【０１０６】
（３）分散システムは、通信手段判定装置を備え、通信手段判定装置は、記憶手段と、通信手段判定手段とを含み、各ノードは、通信手段選択手段を含み、通信手段選択手段は、通信手段判定装置から受信した通信手段判定手段の判定結果に基づいて通信手段を選択するように構成されていてもよい。【０１０７】
（４）分散システムは、分散システムを構成するノードのうち、第１のノード（例えば、コンピュータ１０によって実現される）が、処理配置保存手段（例えば、処理配置保存部１１によって実現される）と、通信手段判定手段（例えば、通信手段判定部１２によって実現される）とを含み、第２のノード（例えば、コンピュータ２０によって実現される）が、通信指示手段（例えば、通信指示部２１によって実現される）と、通信手段選択手段（例えば、通信手段選択部２２によって実現される）と、２種以上の通信手段（例えば、第１の通信部や第２の通信部によって実現される）とを含み、第１のノードの処理配置保存手段は、処理実体（例えば、アプリケーション２９）が動作するノードの物理的な位置を示す物理位置情報を保存し、通信手段選択手段は、第２のノード上で実行されている処理実体が、第２のノードとは異なる第３のノード（例えば、コンピュータ３０によって実現される）上の処理実体（例えば、アプリケーション３９）に対して通信をするために、通信指示手段を呼び出した場合に、第１のノードの通信手段判定手段に最適な通信手段の判定を要求する通信手段判定要求を送信し、第１のノードの通信手段判定手段は、通信手段判定要求を受信すると、処理配置保存手段が保存する情報に基づいて、通信手段判定要求に含まれる通信元及び通信先の処理実体の論理識別子を物理位置情報に変換し、変換した物理位置情報に基づいて、最も高速な通信手段を選択し、選択した通信手段を通信手段判定結果として、第２のノードに返信し、通信手段選択部は、第１のノードの通信手段判定部から通信手段判定結果を受信すると、通信手段判定結果に示された通信手段を用いて、通信を行うように構成されていてもよい。【０１０８】
（５）分散システムにおいて、第２ノードは、通信手段判定結果を保存するための判定結果記憶手段（例えば、判定結果記憶部２６によって実現される）を備え、通信手段選択手段は、第１のノードの通信手段判定手段に通信手段判定要求を送信する前に、判定結果記憶手段を参照し、通信手段判定要求に対応する判定結果が記憶されている場合には、記憶されている判定結果に基づいて通信手段を選択するように構成されていてもよい。【０１０９】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１１０】
この出願は、２００９年１０月１５日に出願された日本特許出願２００９−２３８６１１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１１】
本発明は、データセンタのＩＴ／ＮＷ統合管理製品等に適用できる。
【図１】
0005541292.tif 000002
【図２】
0005541292.tif 000003
【図３】
0005541292.tif 000004
【図４】
0005541292.tif 000005
【図５】
0005541292.tif 000006
【図６】
0005541292.tif 000007
【図７】
0005541292.tif 000008
【図８】
0005541292.tif 000009
【図９】
0005541292.tif 000010