(57)【要約】【課題】階層化したブローカを利用したコンポーネント間のメッセージ量を削減した分散処理システムを提供する。【解決手段】分散処理システムＳは、複数のコンポーネントを動作させる分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のブローカ１〜３を分散して備え、コンポーネントを、最下位層のブローカ１との間で直接メッセージを送受信可能に配置し、コンポーネントの中で、他の複数のコンポーネントとメッセージの送受信を行う集中コンポーネントＣ５を、他の複数のコンポーネントＣ１〜Ｃ４を葉ノード、各ブローカ１〜３をノードとするツリー構造において、共通する親ノードのうちで最下層の親ノードに対応するブローカ３との間で直接メッセージを送受信可能に配置した。【選択図】図１
2018036947.tif 000002
【特許請求の範囲】
【請求項１】
管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムであって、
前記管理装置は、複数のソフトウェアコンポーネントとの間で共通にメッセージを送受信するソフトウェアコンポーネントである集中コンポーネントを、前記複数のソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置するコンポーネント登録手段を備えることを特徴とする分散処理システム。
【請求項２】
管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムであって、
前記管理装置は、
前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出手段と、
前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更手段と、
を備えることを特徴とする分散処理システム。
【請求項３】
前記管理装置は、前記メッセージを経由する経路長が設定経路長以上である場合に、前記メッセージを受信するソフトウェアコンポーネントを前記メッセージの送信元からの設定経路長未満のメッセージキューサーバとの間で直接メッセージを送受信可能に配置するコンポーネント集約手段をさらに備えることを特徴とする請求項２に記載の分散処理システム。
【請求項４】
管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムにおける分散処理方法であって、
前記管理装置は、
前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出ステップと、
前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更ステップと、
を含むことを特徴とする分散処理方法。
【請求項５】
管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムにおける前記管理装置のコンピュータを、
前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出手段、
前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更手段、
として機能させるための分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコンポーネントを分散処理する技術に関する。
【背景技術】
【０００２】
近年、より効率的なシステム開発およびシステム運用が求められるようになり、ソフトウェアは巨大で複雑なモノシリックなものから、小さくてシンプルな複数のソフトウェアコンポーネント（以下、コンポーネントという）が連携して所定の処理を実現するものに設計変更されるようになってきた。このとき、他のコンポーネントに影響を及ぼすことなく、コンポーネントごとにアップデート、スケールアウト、マイグレーションを行うことができるように、各コンポーネントに対して疎結合性という要件が求められる。「コンポーネントの疎結合性」とは、コンポーネントが有する、他のコンポーネントとの情報のやり取りを担うインターフェイス部分と、所定のサービスの提供を担う内部実装部分とが分離されている（両部分が独立して機能する）ことをいう。
【０００３】
例えば、図１０に示すように、分散処理システムＳは、端末Ｔからの処理要求に対して、仮想マシンＶＭ内の各機能ソフトウェアで分散して処理を行い、処理結果を端末Ｔに返す。このとき、コンポーネント（各機能ソフトウェア）は、それぞれ所定のサービスを行い、コンポーネント間のメッセージ通信により連携を行っている。
【０００４】
このようなコンポーネントの疎結合性を実現する技術として、例えば、ＯｐｅｎＳｔａｃｋでは、ＲＥＳＴ  ＡＰＩ（Application Programming Interface）やＡＭＱＰ（Advanced Message Queuing Protocol）のようなメッセージング技術が利用されている。これらの技術では、複数種類のメッセージキューを有するメッセージキューサーバを用意して、コンポーネントを識別するＩＤ（IDentifier）やタグ（topicともいう）をメッセージに付与し、そのＩＤやタグの条件に一致するキューにメッセージを格納する。コンポーネントは負荷に応じて複数存在させることができ、コンポーネント自身が処理待ち状態（空状態）になると、コンポーネント自身が紐づくキューからメッセージを刈り取り、処理を実行する。
【０００５】
従来、このような、コンポーネント間の通信の疎結合性とともに、コンポーネント間の遅延を低減する手法として、メッセージキューサーバ（ブローカ）を階層化する手法が開示されている（非特許文献１）。
この従来手法は、図１１に示すように、分散処理システムＳＤとして、仮想マシンＶＭ間のメッセージ通信を行う仮想マシンブローカ１、物理マシンＰＭ間のメッセージ通信を行う物理マシンブローカ２等、ブローカを階層化する。これによって、例えば、仮想マシンＶＭ１内のコンポーネントＣ１がコンポーネントＣ３とメッセージ通信を行う場合、最も近い仮想マシンＶＭ１内のコンポーネントＣ３と通信するように、仮想マシンブローカ１Ａがメッセージのキュー制御を行う。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】藤岡，小林，北野，白神、“分散ソフトウェアコンポーネント間の通信高速化に関する一検討”、電子情報通信学会総合大会講演論文集、２０１６年通信（２）、Ｂ−６−２２、一般社団法人電子情報通信学会、２０１６年３月１日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の非特許文献１の手法では、複数のコンポーネントと連携するコンポーネント（集中コンポーネント）に紐付いているブローカは、大量のメッセージを処理しなければならず、負荷が集中してしまうという問題がある。
【０００８】
ここで、集中コンポーネントには、例えば、図１２（ａ）に示すように、コンポーネントＣ１，Ｃ２，Ｃ４を順次制御するフロー制御のコンポーネントＣ３（集中コンポーネントＣＣ）がある。また、集中コンポーネントには、例えば、図１２（ｂ）に示すように、処理Ｐ１，Ｐ２等で共通に参照されるデータを保持するコンポーネントＣ３（集中コンポーネントＣＣ）がある。
このような集中コンポーネントＣＣは、例えば、図１２（ｃ）に示すように配置された分散処理システムにおいて、集中コンポーネントＣＣに紐付くブローカ（物理マシンブローカ２Ａ、仮想マシンブローカ１Ｂ）間でメッセージが大量に流れることになり負荷が集中してしまう。
【０００９】
本発明は、このような問題に鑑みてなされたもので、ブローカを階層化したメッセージキューを利用したソフトウェアコンポーネント間の通信において、集中コンポーネントに紐付くブローカが処理するメッセージ量を削減した分散処理システム、分散処理方法および分散処理プログラムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するため、請求項１に記載の発明は、管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムであって、前記管理装置は、複数のソフトウェアコンポーネントとの間で共通にメッセージを送受信するソフトウェアコンポーネントである集中コンポーネントを、前記複数のソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置するコンポーネント登録手段を備えることを特徴とする。
【００１１】
また、前記課題を解決するため、請求項２に記載の発明は、管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムであって、前記管理装置は、前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出手段と、前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更手段と、を備えることを特徴とする。
【００１２】
また、前記課題を解決するため、請求項４に記載の発明は、管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムにおける分散処理方法であって、前記管理装置は、前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出ステップと、前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更ステップと、を含むことを特徴とする。
【００１３】
また、前記課題を解決するため、請求項５に記載の発明は、管理装置と、複数のソフトウェアコンポーネントを動作させる物理的または仮想的に分散されたマシンとを備え、前記分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバを分散して備え、前記複数のメッセージキューサーバを介して前記ソフトウェアコンポーネント間のメッセージを送受信して動作する分散処理システムにおける前記管理装置のコンピュータを、前記複数のソフトウェアコンポーネントの中で、メッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを、集中コンポーネントとして検出する集中コンポーネント検出手段、前記集中コンポーネントを、当該集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いソフトウェアコンポーネントを葉ノード、各メッセージキューサーバをノードとするツリー構造において、共通の親ノードのうちで最下層の親ノードに対応するメッセージキューサーバとの間で直接メッセージを送受信可能に配置する集中コンポーネント配置変更手段、として機能させる。
【００１４】
請求項１，２，４，５に記載の発明によれば、連携するソフトウェアコンポーネント同士で送受信されるメッセージを転送するメッセージキューサーバに階層構造を持たせ、集中コンポーネントを、当該集中コンポーネントを利用するソフトウェアコンポーネントの上位層で共通するメッセージキューサーバに配置する。
これによって、本発明は、通常のソフトウェアコンポーネントから集中コンポーネントまでのメッセージキューサーバの全体経路を短くすることができ、メッセージキューサーバが処理するメッセージ量を削減することができる。
【００１５】
また、請求項３に記載の発明は、請求項２に記載の発明であって、前記管理装置は、前記メッセージを経由する経路長が設定経路長以上である場合に、前記メッセージを受信するソフトウェアコンポーネントを前記メッセージの送信元からの設定経路長未満のメッセージキューサーバとの間で直接メッセージを送受信可能に配置するコンポーネント集約手段をさらに備えることを特徴とする。
請求項２に記載の発明によれば、ソフトウェアコンポーネント間のメッセージの経路を短くすることができ、メッセージ量を削減することができる。
【発明の効果】
【００１６】
本発明によれば、メッセージキューを利用したソフトウェアコンポーネント間の通信において、集中コンポーネントを、当該集中コンポーネントと通信するソフトウェアコンポーネント間の上位層で共通するメッセージキューサーバの直下に配置することで、集中コンポーネントに紐付くメッセージキューサーバが処理するメッセージ量を削減することができる。また、本発明は、メッセージ量の削減に伴い、処理の遅延を防止することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１実施形態に係る分散処理システムの構成を示すブロック構成図である。
【図２】集中コンポーネントの配置例を説明するための説明図である。
【図３】本発明の第１実施形態に係る分散処理システムの動作を説明するための説明図である。
【図４】本発明の第２実施形態に係る分散処理システムの構成を示すブロック構成図である。
【図５】本発明の第２実施形態に係る分散処理システムの動作を示すフローチャートである。
【図６】本発明の第２実施形態に係る分散処理システムの処理の一例を説明するための説明図である。
【図７】本発明の第３実施形態に係る分散処理システムの構成を示すブロック構成図である。
【図８】本発明の第３実施形態に係る分散処理システムの動作を示すフローチャートである。
【図９】本発明の第３実施形態に係る分散処理システムの処理の一例を説明するための説明図である。
【図１０】分散処理システムの概要を説明するための説明図である。
【図１１】従来の分散処理システムの概要を説明するための説明図である。
【図１２】集中コンポーネントの概要を説明するための説明図で、（ａ）はフロー制御を行う集中コンポーネントの例、（ｂ）は共通参照されるデータを保持する集中コンポーネントの例、（ｃ）は集中コンポーネントによって発生する従来の問題を説明する図である。
【発明を実施するための形態】
【００１８】
本発明の実施形態について図面を参照して説明する。
≪第１実施形態≫
〔分散処理システムの構成〕
まず、図１を参照して、本発明の第１実施形態に係る分散処理システムＳの構成について説明する。
【００１９】
分散処理システムＳは、複数のソフトウェアコンポーネント（以下、コンポーネントという）を動作させる物理的または仮想的に分散されたマシン（物理マシン、仮想マシン等）とを備え、分散されたマシン上に、複数の階層を持つツリー構造で構成された複数のメッセージキューサーバ（ブローカ）を分散して備え、複数のメッセージキューサーバを介してコンポーネント間のメッセージを送受信して動作するものである。
図１に示すように、分散処理システムＳは、端末Ｔ（図１０）等からの処理要求に対して、複数種類のコンポーネントＣ（Ｃ１，Ｃ２，Ｃ３…）が連携し、処理結果を端末Ｔ等に返すことで、所定のサービスを提供する。ここでは、分散処理システムＳは、下位層から順に、スイッチＳＷ（ＳＷ１）、物理マシンＰＭ（ＰＭ１，ＰＭ２）を備え、物理マシンＰＭ上に仮想マシンＶＭ（ＶＭ１，ＶＭ２，ＶＭ３）を動作するように配置して構成している。また、分散処理システムＳは管理装置４を備える。
【００２０】
スイッチＳＷ（ＳＷ１）は、物理マシン間でデータをスイッチングするものである。このスイッチＳＷは、例えば、ラック内の物理マシンを直接収容するスイッチ（ＴｏＲ ＳＷ〔Top of Rack SWitch〕）である。このスイッチＳＷには、１または複数の物理マシンＰＭが接続される。図１では、スイッチＳＷ１に物理マシンＰＭ１，ＰＭ２を接続した例を示している。
【００２１】
物理マシンＰＭ（ＰＭ１，ＰＭ２）は、仮想化ソフトウェアが組み込まれた計算機である。この物理マシンＰＭは、スイッチＳＷに１または複数接続される。また、物理マシンＰＭには、１または複数の仮想マシンＶＭが配置される。図１では、物理マシンＰＭ１に仮想マシンＶＭ１，ＶＭ２を配置し、物理マシンＰＭ２に仮想マシンＶＭ３を配置した例を示している。
【００２２】
仮想マシンＶＭ（ＶＭ１〜ＶＭ３）は、仮想化ソフトウェアによって生成された仮想計算機である。この仮想マシンＶＭは、１つの物理マシンＰＭに１または複数配置される。
それぞれの仮想マシンＶＭには、分散配置されたソフトウェア（コンポーネント）が配置され、それぞれのコンポーネントが動作することで１つの処理を実行する。
この仮想マシンＶＭには、仮想マシンＶＭ、物理マシンＰＭおよびスイッチＳＷに対応する通信レイヤごとにメッセージキューサーバであるブローカを配置する。ただし、ブローカはツリー構造で配置され、仮想マシンＶＭすべてに、すべての通信レイヤのブローカが存在するのではない。
【００２３】
ここでは、分散処理システムＳは、仮想マシンＶＭ、物理マシンＰＭおよびスイッチＳＷに対応して、最下位層ブローカである仮想マシンブローカ１（１Ａ，１Ｂ，１Ｃ）と、中間層ブローカである物理マシンブローカ２（２Ａ，２Ｃ）と、最上位層ブローカであるスイッチブローカ３（３Ａ）とを備える。
各ブローカ（１〜３）は、それぞれの仮想マシンＶＭに通信レイヤごとに配置され、当該通信レイヤにおけるメッセージをキューにより集約・管理する。
【００２４】
仮想マシンブローカ（メッセージキューサーバ）１は、仮想マシンＶＭごとに配置され、仮想マシンＶＭ上で仮想マシンブローカ１の配下として動作するコンポーネントのメッセージを格納、転送するものである。ここで、仮想マシンブローカ１の配下のコンポーネントとは、仮想マシンブローカ１に直接メッセージを配信し、仮想マシンブローカ１から直接メッセージを刈り取るコンポーネントをいう。
仮想マシンブローカ１Ａ〜１Ｃは同一の機能を有するため、以下、仮想マシンブローカ１Ａを例として構成の説明を行う。
【００２５】
仮想マシンブローカ１Ａは、転送手段１１と、キュー１２，１２…と、を備える。
転送手段１１は、仮想マシンブローカ１Ａの配下のコンポーネントから仮想マシンブローカ１Ａの配下ではないコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位階層のブローカ（物理マシンブローカ２）に転送する。例えば、転送手段１１は、コンポーネントＣ１からコンポーネントＣ３へのメッセージを物理マシンブローカ２に転送する。
【００２６】
また、転送手段１１は、上位階層のブローカ（物理マシンブローカ２）のキュー２２，２２…に格納されている仮想マシンブローカ１Ａの配下のコンポーネント宛てのメッセージをキュー２２から刈り取り、当該コンポーネントに対応するキュー１２に格納する。また、転送手段１１は、仮想マシンブローカ１Ａの配下のコンポーネントから、同じ仮想マシンブローカ１Ａの配下の他のコンポーネント宛てのメッセージを、宛先となるコンポーネントに対応するキュー１２に格納する。
【００２７】
キュー１２，１２…は、仮想マシンブローカ１Ａの配下となるコンポーネントを宛先とするメッセージを格納し、当該コンポーネントからのメッセージの刈り取りを受け付けるコンポーネントごとのメッセージキューである。
【００２８】
物理マシンブローカ（メッセージキューサーバ）２は、物理マシンＰＭごとに配置され、仮想マシンＶＭ上で物理マシンブローカ２の配下として動作するコンポーネントのメッセージを格納、転送するものである。ここで、物理マシンブローカ２の配下のコンポーネントとは、物理マシンブローカ２に直接メッセージを配信し、物理マシンブローカ２から直接メッセージを刈り取るコンポーネント、および、物理マシンブローカ２を親階層とする子階層のブローカ（仮想マシンブローカ１）の配下のコンポーネントをいう。
物理マシンブローカ２Ａ，２Ｃは、同一の機能を有するため、以下、物理マシンブローカ２Ａを例として構成の説明を行う。
【００２９】
物理マシンブローカ２Ａは、転送手段２１と、キュー２２，２２…と、を備える。
転送手段２１は、物理マシンブローカ２Ａの配下のコンポーネントから物理マシンブローカ２Ａの配下ではないコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位階層のブローカ（スイッチブローカ３）に転送する。
【００３０】
また、転送手段２１は、上位階層のブローカ（スイッチブローカ３）のキュー３２，３２…に格納されている物理マシンブローカ２Ａの配下のコンポーネント宛てのメッセージを当該キューから刈り取り、当該コンポーネントに対応するキュー２２に格納する。また、転送手段２１は、物理マシンブローカ２Ａの配下のコンポーネントから、同じ物理マシンブローカ２Ａの配下の他のコンポーネント宛てのメッセージを、宛先となるコンポーネントに対応するキュー２２に格納する。
【００３１】
キュー２２，２２…は、物理マシンブローカ２Ａの配下となるコンポーネントを宛先とするメッセージを格納し、当該コンポーネントからのメッセージの刈り取りを受け付けるコンポーネントごとのメッセージキューである。
【００３２】
スイッチブローカ（メッセージキューサーバ）３は、スイッチＳＷに対して１つ配置され、仮想マシンＶＭ上でスイッチブローカ３の配下として動作するコンポーネントのメッセージを格納、転送するものである。ここで、スイッチブローカ３の配下のコンポーネントとは、スイッチブローカ３に直接メッセージを配信し、スイッチブローカ３から直接メッセージを刈り取るコンポーネント、および、スイッチブローカ３を親階層とする子階層のブローカ（仮想マシンブローカ１，物理マシンブローカ２）の配下のコンポーネントをいう。
【００３３】
スイッチブローカ３は、転送手段３１と、キュー３２，３２…と、を備える。
転送手段３１は、スイッチブローカ３の配下のコンポーネントから、同じスイッチブローカ３の配下の他のコンポーネント宛てのメッセージを、宛先となるコンポーネントに対応するキュー３２に格納する。
【００３４】
キュー３２，３２…は、スイッチブローカ３の配下となるコンポーネントを宛先とするメッセージを格納し、当該コンポーネントからのメッセージの刈り取りを受け付けるコンポーネントごとのメッセージキューである。
【００３５】
コンポーネント（ソフトウェアコンポーネント）Ｃ１〜Ｃ５は、他のコンポーネントとの間でメッセージを送受信することで、所定の処理を行うソフトウェアである。
コンポーネントＣ１〜Ｃ５は、送信しようとするメッセージに、宛先となるコンポーネントを識別するタグを付与する。例えば、キュー１２ａが、コンポーネントＣ１を識別するタグが付与されたメッセージを格納するキューとして機能する場合、あるコンポーネントから送信され、コンポーネントＣ１を識別するタグが付与されたメッセージは、各種ブローカ間を経由し、仮想マシンブローカ１Ａに転送され、キュー１２ａに格納される。仮想マシンＶＭ１に配置されているコンポーネントＣ１は、処理待ち状態になるとキュー１２ａに格納されているメッセージを刈り取り、所定の処理を行う。
【００３６】
管理装置４は、分散処理システムＳで動作するコンポーネントＣの配置を管理するコンポーネント管理サーバである。この管理装置４は、ネットワークまたは専用線を介してスイッチＳＷ１と接続され、図示を省略した通信制御部を介して通信を行う。
ここで、管理装置４は、コンポーネント登録手段４１を備える。
【００３７】
コンポーネント登録手段４１は、コンポーネントＣを分散処理システムＳ上に登録するものである。このコンポーネント登録手段４１は、管理者の指示により、コンポーネントＣを指定されたブローカの直下に配置するように登録する。
例えば、コンポーネント登録手段４１は、管理者によって指定されたコンポーネントＣを、図示を省略したコンポーネントサーバから取得し、指定のブローカの直下に配置する。
【００３８】
なお、コンポーネント登録手段４１は、基本的に、コンポーネントＣを、仮想マシンブローカ１Ａ，１Ｂ，１Ｃのいずれかの直下に配置する。
ただし、図１２に示したような、複数のコンポーネントを順次制御するようなフロー制御のコンポーネント（図１２（ａ））、コンポーネント間で連携して処理を行う際に共通に参照されるデータを保持するコンポーネント（図１２（ｂ））等の集中コンポーネントについては、コンポーネント登録手段４１は、管理者の指示により、上位のブローカの直下に配置する。この場合、管理者は、予めソフトウェアの設計情報等から、どのコンポーネントが集中コンポーネントであるかを既知の情報として把握しているものとする。
【００３９】
例えば、図２に示すように、コンポーネントＣが階層化されたブローカを経由してメッセージを配信して動作する場合、コンポーネントＣ１〜Ｃ４を制御、あるいは、コンポーネントＣ１〜Ｃ４で共通に参照されるデータを保持するコンポーネントＣ５については、関連する最上位層のブローカの直下に配置する。
【００４０】
図２の例では、コンポーネントＣ１〜Ｃ４を葉ノード、各ブローカ（１〜３）をノードとするツリー構造において、共通するノードの最下層の親ノード（ここでは、スイッチブローカ３Ａ）の直下にコンポーネントＣ５を集中コンポーネントとして配置する。
また、例えば、コンポーネントＣ５がコンポーネントＣ１〜Ｃ３に対応した集中コンポーネントであれば、コンポーネントＣ１〜Ｃ３を葉ノード、各ブローカ（１〜３）をノードとするツリー構造において、共通する親ノードの最下層の親ノード（ここでは、物理マシンブローカ２Ａ）の直下にコンポーネントＣ５を配置する。
この管理装置４は、コンピュータを、管理装置４を構成するコンポーネント登録手段として機能させるための分散処理プログラムで動作させることができる。
【００４１】
このように、分散処理システムＳは、集中コンポーネントを他のコンポーネントで共通するブローカの最下層のブローカの直下に配置することで、集中コンポーネントに対するメッセージを経由するブローカを減らすことができ、負荷を軽減することができる。
【００４２】
〔分散処理システムの動作〕
次に、図３を参照（構成については適宜図１参照）して、本発明の第１実施形態に係る分散処理システムＳの動作について説明する。
なお、ここでは、管理装置４のコンポーネント登録手段４１によって、分散処理システムＳに予めコンポーネントＣが登録され、特にコンポーネントＣ５については、集中コンポーネントとして、スイッチブローカ３Ａの直下に登録されているものとする。
また、ここでは、分散処理システムＳの動作として、コンポーネントＣ１，Ｃ５，Ｃ４が連携して一連の処理を実行する動作の例について説明する。
例えば、コンポーネントＣ１を、文字入力機能を実現するソフトウェア、コンポーネントＣ５を、かな漢字変換機能を実現するソフトウェア、コンポーネントＣ４を、変換結果出力機能を実現するソフトウェアとする。この場合、分散処理システムＳは、端末から入力される文字列をかな漢字変換して出力する処理を実行するものとなる。
【００４３】
まず、コンポーネントＣ１は、自身の機能を実現する動作を実行する（ステップＳ１）。例えば、コンポーネントＣ１は、端末から、キー入力により文字列を入力する。
そして、コンポーネントＣ１は、実行結果に、次処理を実行するコンポーネントＣ５，Ｃ４をそれぞれ識別するＩＤを付加したメッセージを生成し、仮想マシンブローカ１Ａに送信する（ステップＳ２）。例えば、コンポーネントＣ１は、入力文字列にＩＤを付加してメッセージを生成する。
【００４４】
次に、仮想マシンブローカ１Ａは、ここでは、受信したメッセージに付加されている次処理のコンポーネント（Ｃ５）のＩＤに対応するキューが存在しないため、転送手段１１によって、メッセージを上位の物理マシンブローカ２Ａに送信する（ステップＳ３）。
また、物理マシンブローカ２Ａは、ここでは、受信したメッセージに付加されている次処理のコンポーネント（Ｃ５）のＩＤに対応するキューが存在しないため、転送手段２１によって、メッセージを上位のスイッチブローカ３Ａに送信する（ステップＳ４）。
【００４５】
その後、スイッチブローカ３Ａは、メッセージに付与された次処理を実行する先頭のコンポーネントＣ５のＩＤに対応するキュー３２にメッセージを格納する（ステップＳ５）。
ここで、コンポーネントＣ５は、自身の動作が空き状態に遷移次第、自身のＩＤと一致するキュー３２から、メッセージを刈り取る（ステップＳ６）。
そして、コンポーネントＣ５は、コンポーネントＣ１の実行結果を入力とし、自身の機能を実現する動作を実行する（ステップＳ７）。例えば、コンポーネントＣ５は、入力文字列をかな漢字変換する。
【００４６】
そして、コンポーネントＣ５は、実行結果に、次処理を実行するコンポーネントＣ４を識別するＩＤを付加したメッセージを生成し、スイッチブローカ３Ａに送信する（ステップＳ８）。例えば、コンポーネントＣ５は、かな漢字変換結果にＩＤを付加してメッセージを生成する。
その後、スイッチブローカ３Ａは、メッセージに付与された次処理を実行するコンポーネントＣ４のＩＤに対応するキュー３２にメッセージを格納する（ステップＳ９）。
【００４７】
ここで、物理マシンブローカ２Ｃは、自身の動作が空き状態に遷移次第、自身の配下のコンポーネントのＩＤと一致するキュー３２から、メッセージを刈り取る（ステップＳ１０）。
そして、物理マシンブローカ２Ｃは、メッセージに付与された次処理を実行するコンポーネントＣ４のＩＤに対応するキュー２２にメッセージを格納する（ステップＳ１１）。
【００４８】
ここで、仮想マシンブローカ１Ｃは、自身の動作が空き状態に遷移次第、自身の配下のコンポーネントのＩＤと一致するキュー２２から、メッセージを刈り取る（ステップＳ１２）。
そして、仮想マシンブローカ１Ｃは、メッセージに付与された次処理を実行するコンポーネントＣ４のＩＤに対応するキュー１２にメッセージを格納する（ステップＳ１３）。
【００４９】
ここで、コンポーネントＣ４は、自身の動作が空き状態に遷移次第、自身のＩＤと一致するキュー１２から、メッセージを刈り取る（ステップＳ１４）。
そして、コンポーネントＣ４は、コンポーネントＣ５の実行結果を入力とし、自身の機能を実現する動作を実行する（ステップＳ１５）。例えば、コンポーネントＣ４は、かな漢字変換結果を端末に出力する。
【００５０】
なお、仮想マシンＶＭ間の通信は、仮想マシンＶＭごとに備えた図示を省略した仮想通信制御部を介して行われ、物理マシンＰＭ間の通信は、物理マシンＰＭごとに備えた図示を省略した通信制御部を介して行われる。
このように、分散処理システムＳは、ブローカを階層化したメッセージキューを利用してコンポーネント間の通信を行う際に、集中コンポーネントを上位階層に配置することで、ブローカ間のメッセージを削減することができる。
【００５１】
≪第２実施形態≫
〔分散処理システムの構成〕
次に、図４を参照して、本発明の第２実施形態に係る分散処理システムＳＢの構成について説明する。
図１の分散処理システムＳは、予め既知の集中コンポーネントを上位階層に配置するものであった。図４の分散処理システムＳＢは、コンポーネントの中から集中コンポーネントを検出し、最適な位置に再配置する機能を有する。
【００５２】
分散処理システムＳＢは、図４に示すように、分散処理システムＳの管理装置４に構成を付加し管理装置４Ｂとして構成している。なお、コンポーネントＣは、自身が送受信するメッセージ数を送信元と送信先に区分して累計し、定期的に管理装置４に送信するものとする。
管理装置４Ｂ以外の構成については、図１で説明した分散処理システムＳと同じ構成であるため、説明を省略する。
【００５３】
管理装置４Ｂは、分散処理システムＳＢで動作するコンポーネントＣの配置を管理するコンポーネント管理サーバである。この管理装置４Ｂは、ネットワークまたは専用線を介してスイッチＳＷ１と接続され、図示を省略した通信制御部を介して通信を行う。
ここで、管理装置４Ｂは、コンポーネント登録手段４１と、集中コンポーネント検出手段４２と、集中コンポーネント配置変更手段４３と、リソース管理手段４４と、を備える。コンポーネント登録手段４１は、図１で説明した分散処理システムＳと同じ構成であるため、説明を省略する。
【００５４】
集中コンポーネント検出手段４２は、コンポーネントＣの中で、メッセージの送受信が集中している集中コンポーネントを検出するものである。
この集中コンポーネント検出手段４２は、コンポーネントＣから定期的にメッセージ数を取得し、メッセージ数が予め定めた閾値よりも多い場合、コンポーネントＣを集中コンポーネントと判定する。また、集中コンポーネント検出手段４２は、取得したメッセージ数のシステム全体のメッセージ総数に対する割合が予め定めた閾値よりも多い場合に、コンポーネントＣを集中コンポーネントと判定してもよい。
【００５５】
この集中コンポーネント検出手段４２は、検出した集中コンポーネントとともに、当該集中コンポーネントにメッセージを送信したコンポーネント（送信元コンポーネント）およびメッセージ数、当該集中コンポーネントからメッセージを送信したコンポーネント（送信先コンポーネント）およびメッセージ数を、集中コンポーネント配置変更手段４３に通知する。
【００５６】
集中コンポーネント配置変更手段４３は、集中コンポーネント検出手段４２で検出された集中コンポーネントの配置先を変更するものである。
この集中コンポーネント配置変更手段４３は、集中コンポーネントとの間で送受信するメッセージ数が予め定めた閾値よりも多いコンポーネントを特定する。そして、集中コンポーネント配置変更手段４３は、特定したコンポーネントを葉ノード、各ブローカ（仮想マシンブローカ１，物理マシンブローカ２，スイッチブローカ３）をノードとするツリー構造において、共通の親ノードの中で最下層のノードを、集中コンポーネントの配置先と決定する。
【００５７】
そして、集中コンポーネント配置変更手段４３は、リソース管理手段４４で管理されている配置先の仮想マシンＶＭにリソースの空きがある場合に、集中コンポーネントを決定した配置先に変更する。
なお、管理装置４Ｂは、予め初期のコンポーネントの配置構成情報を保持し、集中コンポーネント配置変更手段４３によって、集中コンポーネントの再配置後、配置構成情報を更新する。
【００５８】
リソース管理手段４４は、仮想マシンＶＭ上で動作するコンポーネントＣのリソース（ＣＰＵ〔コア数等〕、メモリ、ストレージ等）を管理するものである。
このリソース管理手段４４は、コンポーネントＣから、リソースの要求や解放を通知されることで、システム全体のリソースの割り当てを管理する。
ここでは、リソース管理手段４４は、集中コンポーネント配置変更手段４３から集中コンポーネントが使用する既知のリソースの空きが、配置先に存在するか否かを問合せに対して、空き状態を回答する。
【００５９】
以上のように管理装置４Ｂを構成することで、管理装置４Ｂは、分散処理システムＳＢにおいて、メッセージが集中する集中コンポーネントを、そのメッセージが経由する上位のブローカの直下に配置することができる。
この管理装置４Ｂは、コンピュータを、管理装置４Ｂを構成する各手段として機能させるための分散処理プログラムで動作させることができる。
【００６０】
〔分散処理システムの動作〕
次に、本発明の第２実施形態に係る分散処理システムＳＢの動作について説明する。なお、分散処理システムＳＢの各コンポーネントＣの一連の処理については、図３で説明した分散処理システムＳと同じである。ここでは、主に、集中コンポーネントを再配置する動作について説明する。
図５を参照（構成については適宜図４参照）して、分散処理システムＳＢのコンポーネントの再配置動作について説明する。
【００６１】
まず、管理装置４Ｂは、集中コンポーネント検出手段４２によって、コンポーネントＣが送信元と送信先に区分して累計したメッセージ数（メッセージ送受信量）を定期的に収集する（ステップＳ２０）。
そして、集中コンポーネント検出手段４２は、メッセージ数が予め定めた閾値よりも多いか否かにより、コンポーネントＣが集中コンポーネントであるか否かを判定する（ステップＳ２１）。ここで、コンポーネントＣが集中コンポーネントでなければ（ステップＳ２１でＮｏ）、管理装置４Ｂは、再配置動作を終了する。
【００６２】
一方、コンポーネントＣが集中コンポーネントの場合（ステップＳ２１でＹｅｓ）、管理装置４Ｂは、集中コンポーネント配置変更手段４３によって、集中コンポーネントの配置先を決定する（ステップＳ２２）。このとき、集中コンポーネント配置変更手段４３は、集中コンポーネントとの間で送受信するメッセージ数が多いコンポーネントを葉ノード、各ブローカ（仮想マシンブローカ１，物理マシンブローカ２，スイッチブローカ３）をノードとするツリー構造において、共通の親ノードの中で最下層のノードを、集中コンポーネントの配置先と決定する。
【００６３】
そして、集中コンポーネント配置変更手段４３は、ステップＳ２２で決定した集中コンポーネントの配置先が現在の配置先と同じであるか否かを判定する（ステップＳ２３）。ここで、ステップＳ２２で決定した集中コンポーネントの配置先が現在の配置先と同じであれば（ステップＳ２３でＹｅｓ）、管理装置４Ｂは、再配置動作を終了する。
一方、集中コンポーネントの配置先が現在の配置先と異なる場合（ステップＳ２３でＮｏ）、管理装置４Ｂは、リソース管理手段４４によって、集中コンポーネントの配置先の仮想マシンＶＭにリソースの空きがあるか否かを判定する（ステップＳ２４）。ここで、リソースに空きがなければ（ステップＳ２４でＮｏ）、管理装置４Ｂは、再配置動作を終了する。
【００６４】
一方、集中コンポーネントの配置先の仮想マシンＶＭにリソースの空きがある場合（ステップＳ２４でＹｅｓ）、管理装置４Ｂは、集中コンポーネント配置変更手段４３によって、集中コンポーネントをステップＳ２２で決定した配置先に変更する（ステップＳ２５）。
【００６５】
以上の動作によって、分散処理システムＳＢにおいて、集中コンポーネントが再配置される例を、図６を参照（適宜図４参照）して説明する。
図６に示すように、当初、コンポーネントＣ１が仮想マシンブローカ１Ａの直下、コンポーネントＣ２，Ｃ３が仮想マシンブローカ１Ｂの直下、コンポーネントＣ４，Ｃ５が仮想マシンブローカ１Ｃの直下にそれぞれ配置されて分散処理されているものとする。
このとき、コンポーネントＣ５が、コンポーネントＣ１〜Ｃ４との間でメッセージが大量に流れる場合、管理装置４Ｂは、集中コンポーネント検出手段４２によって、コンポーネントＣ５が集中コンポーネントであると検出する。
【００６６】
そして、管理装置４Ｂは、集中コンポーネント配置変更手段４３によって、コンポーネントＣ１〜Ｃ４を葉ノード、各ブローカ（仮想マシンブローカ１，物理マシンブローカ２，スイッチブローカ３）をノードとするツリー構造において、共通の親ノードの中で最下層のノード、すなわち、図６の例では、スイッチブローカ３Ａを、集中コンポーネントであるコンポーネントＣ５の配置先と決定し、再配置する。
これによって、分散処理システムＳＢにおいて、集中コンポーネントが送受信するメッセージの経路（経由するブローカ）が分散され、極端にメッセージ経路の長い経路を削除することで、不要なブローカ間のメッセージを削減することができる。
【００６７】
≪第３実施形態≫
〔分散処理システムの構成〕
次に、図７を参照して、本発明の第３実施形態に係る分散処理システムＳＣの構成について説明する。
分散処理システムＳＣは、分散処理システムＳＢ（図４）に対して、コンポーネント間のメッセージが流れるブローカの数を制限する機能を付加したものである。
【００６８】
図７に示すように、分散処理システムＳＣは、分散処理システムＳＢの管理装置４Ｂを、機能を付加した管理装置４Ｃに替えて構成している。
管理装置４Ｃ以外の構成については、図４で説明した分散処理システムＳＢと同じ構成であるため、説明を省略する。
なお、コンポーネントＣは、図４で説明したように、自身が送受信するメッセージ数を送信元と送信先に区分して累計する機能に加え、送信元から受信したメッセージが経由したブローカ数（経路長）を付加して、定期的に管理装置４Ｃに送信する機能を有するものとする。この経路長は、例えば、ＴＴＬ（Time to live）等のカウンタデータを用いることができる。すなわち、送信元のコンポーネントＣがメッセージにカウンタデータの初期値を設定し、メッセージを経由するブローカがカウンタデータをインクリメントまたはデクリメントして、最終的にメッセージを受信するコンポーネントＣが初期値からの変化量を、経路長として特定すればよい。
【００６９】
管理装置４Ｃは、分散処理システムＳＣで動作するコンポーネントＣの配置を管理するコンポーネント管理サーバである。この管理装置４Ｃは、ネットワークまたは専用線を介してスイッチＳＷ１と接続され、図示を省略した通信制御部を介して通信を行う。
ここで、管理装置４Ｃは、コンポーネント登録手段４１と、集中コンポーネント検出手段４２と、集中コンポーネント配置変更手段４３と、リソース管理手段４４と、コンポーネント集約手段４５と、を備える。コンポーネント集約手段４５以外の構成は、管理装置４Ｂ（図４）と同じ構成であるため、説明を省略する。
【００７０】
コンポーネント集約手段４５は、コンポーネント間のメッセージが経由する経路長が、設定された経路長以下となるように、コンポーネントを集約するものである。ここでは、経路長は、コンポーネント間のメッセージが経由するブローカ数とする。
このコンポーネント集約手段４５は、コンポーネントＣから定期的に送信元のコンポーネントからのメッセージの経路長を取得する。そして、コンポーネント集約手段４５は、設定された経路長よりも長い経路でメッセージを受信するコンポーネントＣについて、送信元のコンポーネントとの経路長が、設定された経路長以下となる配置先を決定する。
例えば、コンポーネント集約手段４５は、送信元のコンポーネントに近い順、すなわち、送信元のコンポーネントと同じ仮想マシンＶＭ、同じ物理マシンＰＭの順に、設定された経路長内で、送信先のコンポーネントが配置可能な配置先を決定する。
【００７１】
このとき、コンポーネントが配置可能か否かは、配置先にリソースが空いているか否かによる。すなわち、コンポーネント集約手段４５は、リソース管理手段４４で管理されている配置先のリソースの空きを判定して、設定された経路長内で、送信先のコンポーネントの新たな設置先を決定し、再配置を実行する。
なお、管理装置４Ｃは、予め初期のコンポーネントの配置構成情報を保持し、コンポーネント集約手段４５によって、コンポーネントの再配置後、配置構成情報を更新する。
【００７２】
以上のように管理装置４Ｃを構成することで、管理装置４Ｃは、分散処理システムＳＣにおいて、メッセージの経路長を設定された経路長以下にすることができ、メッセージの遅延を抑えることができる。
ただし、コンポーネント集約手段４５は、送信元のコンポーネントとの経路長が、設定された経路長よりも長い場合でも、当該コンポーネントへの単位時間当たりのメッセージ数が、予め定めたメッセージ数に満たない場合、負荷が少ないものとして、再配置を行わないこととしてもよい。
この管理装置４Ｃは、コンピュータを、管理装置４Ｃを構成する各手段として機能させるための分散処理プログラムで動作させることができる。
【００７３】
〔分散処理システムの動作〕
次に、本発明の第３実施形態に係る分散処理システムＳＣの動作について説明する。なお、分散処理システムＳＣの各コンポーネントＣの一連の処理については、図３で説明した分散処理システムＳと同じであり、集中コンポーネントを再配置する処理は、図４で説明した分散処理システムＳＢと同じである。ここでは、主に、メッセージの経路長を短くしてコンポーネントを再配置する動作について説明する。
図８を参照（構成については適宜図７参照）して、分散処理システムＳＣのコンポーネントの再配置動作について説明する。
【００７４】
まず、管理装置４Ｃは、コンポーネント集約手段４５によって、コンポーネントＣごとに、送信元から受信したメッセージの経路長を定期的に収集する（ステップＳ３０）。
【００７５】
そして、コンポーネント集約手段４５は、収集したコンポーネントＣの経路長が設定経路長よりも長いか否かを判定する（ステップＳ３１）。ここで、収集したコンポーネントＣの経路長が設定経路長以下の場合（ステップＳ３１でＮｏ）、管理装置４Ｃは、再配置動作を終了する。
一方、収集したコンポーネントＣの経路長が設定経路長よりも長い場合（ステップＳ３１でＹｅｓ）、コンポーネント集約手段４５は、経路長以下でリソースに空きがあるコンポーネントの配置先を探索する（ステップＳ３２）。
【００７６】
そして、コンポーネント集約手段４５は、コンポーネントの配置先を探索できたか否かを判定する（ステップＳ３３）。ここで、配置先が探索できなかった場合（ステップＳ３３でＮｏ）、管理装置４Ｃは、再配置動作を終了する。ただし、このとき、コンポーネント集約手段４５は、探索先のリソースが空くか否かを常時監視し、空き次第、探索先を配置先として決定することとしてもよい。
そして、配置先が探索できた場合（ステップＳ３３でＹｅｓ）、コンポーネント集約手段４５は、コンポーネントを決定した配置先に変更する（ステップＳ３４）。
【００７７】
以上の動作によって、分散処理システムＳＣにおいて、コンポーネントが再配置される例を、図９を参照（適宜図７参照）して説明する。
図９では、当初、コンポーネントＣ１が仮想マシンブローカ１Ａの直下、コンポーネントＣ２，Ｃ３が仮想マシンブローカ１Ｂの直下、コンポーネントＣ４が仮想マシンブローカ１Ｃの直下、コンポーネント（集中コンポーネント）Ｃ５がスイッチブローカ３Ａの直下にそれぞれ配置されて分散処理されているものとする。そして、管理装置４Ｃは、例えば、メッセージの経路長を“３”以下に設定されたものとする。
【００７８】
ここで、管理装置４Ｃは、コンポーネント集約手段４５によって、コンポーネントＣ４において、コンポーネントＣ１からのメッセージの経路長が設定経路長よりも長いと判定する。
すると、管理装置４Ｃは、リソース管理手段４４によって、コンポーネントＣ１が配置されている仮想マシンＶＭ１に、コンポーネントＣ４を配置するためのリソースがあるか判定する。
【００７９】
そして、仮想マシンＶＭ１のリソースに空きがあれば、図９に示すように、管理装置４Ｃは、コンポーネント集約手段４５によって、コンポーネントＣ４を仮想マシンブローカ１の直下に配置し直す。
これによって、分散処理システムＳＣにおいて、メッセージの経路長が短縮され、不要なブローカ間のメッセージを削減することができる。
【００８０】
また、このとき、図９に示すように、当初、スイッチブローカ３の直下に集中コンポーネントＣ５が配置されていた場合、コンポーネントＣ４の再配置により、第２実施形態の分散処理システムＳＢで説明した手順で、集中コンポーネントＣ５を物理マシンブローカ２の直下に再配置することができる。
これによって、分散処理システムＳＣにおいて、さらに、不要なブローカ間のメッセージを削減することができる。
【００８１】
以上、本発明の実施形態に係る分散処理システムについて説明したが、本発明は、これらの実施形態に限定されるものではない。
例えば、ここでは、通信レイヤの階層を３層として説明したが、２層、あるいは、４層以上で構成してもよい。
また、ここでは、物理マシン上に仮想マシンを構成したが、仮想マシンをコンテナで構成してもよい。
【００８２】
また、ここでは、コンポーネントＣは、自身が送受信するメッセージ数を送信元と送信先に区分して累計し、定期的に管理装置に送信したり、送信元から受信したメッセージが経由したブローカ数（経路長）を管理装置に送信したりする機能を有するものとした。
しかし、これらの機能は、ブローカ（例えば、最下位層の仮想マシンブローカ１）で行うこととしてもよい。
【００８３】
また、ここでは、管理装置４Ｃのコンポーネント集約手段４５は、コンポーネントＣの経路長が設定経路長よりも長いか否かにより、コンポーネントを集約するか否かを判定した。
しかし、コンポーネント集約手段４５は、複数のコンポーネントからの経路長の平均値または最大値が設定経路長よりも長いか否かにより、集約判定を行ってもよい。
【００８４】
また、ここでは、管理装置４Ｃのコンポーネント集約手段４５は、メッセージが経由するブローカ数を経路長とした。
しかし、コンポーネント集約手段４５は、ブローカ間でメッセージを転送する際に、ブローカの種別に応じた遅延を考慮して重み付けを付けて経路長を算出してもよい。例えば、物理マシンブローカ２を経由する場合、同一の物理マシンＰＭ間での転送であるため重みを“１”、スイッチブローカ３を経由する場合、スイッチＳＷを介して異なる物理マシンＰＭ間で転送を行うため重みを“３”とし、その重みを加算して経路長とすればよい。
これによって、管理装置４Ｃは、メッセージの転送に時間がかかる経路を他の経路に変更して、転送時間を短くすることができる。
【符号の説明】
【００８５】
Ｓ，ＳＢ，ＳＣ  分散処理システム
ＳＷ    スイッチ
ＰＭ    物理マシン
ＶＭ    仮想マシン
Ｃ      コンポーネント
１      仮想マシンブローカ（メッセージキューサーバ）
１１    転送手段
１２    キュー
２      物理マシンブローカ（メッセージキューサーバ）
２１    転送手段
２２    キュー
３      スイッチブローカ（メッセージキューサーバ）
３１    転送手段
３２    キュー
４，４Ｂ，４Ｃ  管理装置
４１    コンポーネント登録手段
４２    集中コンポーネント検出手段
４３    集中コンポーネント配置変更手段
４４    リソース管理手段
４５    コンポーネント集約手段
【図１】
2018036947.tif 000003
【図２】
2018036947.tif 000004
【図３】
2018036947.tif 000005
【図４】
2018036947.tif 000006
【図５】
2018036947.tif 000007
【図６】
2018036947.tif 000008
【図７】
2018036947.tif 000009
【図８】
2018036947.tif 000010
【図９】
2018036947.tif 000011
【図１０】
2018036947.tif 000012
【図１１】
2018036947.tif 000013
【図１２】
2018036947.tif 000014