(57)【特許請求の範囲】
【請求項１】
複数種類の通信レイヤが、当該通信レイヤの種類ごとに１つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、１つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムであって、
前記通信レイヤごとにブローカを備えており、
前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、
前記最下位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカに転送する最下位転送部と、を備え、
前記中間ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、１つ下位の前記中間ブローカまたは前記最下位ブローカに転送し、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカまたは前記最上位ブローカに転送する中間転送部、を備え、
前記最上位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる１つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キュー、を備える、
ことを特徴とする分散システム。
【請求項２】
前記ソフトウェアコンポーネントが、自身を配下とする前記最下位ブローカに、所望の宛先を特定したメッセージを送信する、
ことを特徴とする請求項１に記載の分散システム。
【請求項３】
前記ソフトウェアコンポーネントが、自身を配下とする前記最上位ブローカに、所望の宛先を特定したメッセージを送信する、
ことを特徴とする請求項１に記載の分散システム。
【請求項４】
前記ソフトウェアコンポーネントを管理する管理装置を備え、
前記ソフトウェアコンポーネントが送信するメッセージに、宛先となる前記ソフトウェアコンポーネントが受信するまでの応答遅延範囲が指定されており、
前記メッセージを受信したブローカは、前記応答遅延範囲を満たすことができるいずれの前記通信レイヤにも、宛先となる前記ソフトウェアコンポーネントが配置されていないと判断した場合、当該通信レイヤのいずれかに、宛先となる前記ソフトウェアコンポーネントを追加配置することを、前記管理装置に要求する、
ことを特徴とする請求項１から請求項３のいずれか１項に記載の分散システム。
【請求項５】
前記通信レイヤは、ＴｏＲ  ＳＷ（Top of Rack SWitch）、物理マシン、仮想マシンがこの順で配置される階層構造をとっており、
前記最下位ブローカは、前記仮想マシンに対応する仮想マシンブローカであり、
前記中間ブローカは、前記物理マシンに対応する物理マシンブローカであり、
前記最上位ブローカは、前記ＴｏＲ  ＳＷに対応するＴｏＲ  ＳＷブローカである、
ことを特徴とする請求項１から請求項４のいずれか１項に記載の分散システム。
【請求項６】
複数種類の通信レイヤが、当該通信レイヤの種類ごとに１つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、１つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムにおけるメッセージ転送方法であって、
前記通信レイヤごとにブローカを備えており、
前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、
前記最下位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューに格納するステップと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカに転送するステップと、を実行し、
前記中間ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、１つ下位の前記中間ブローカまたは前記最下位ブローカに転送するステップと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカまたは前記最上位ブローカに転送するステップと、を実行し、
前記最上位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる１つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キューに格納するステップと、を実行する、
ことを特徴とするメッセージ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散の技術に関する。
【背景技術】
【０００２】
システムのより効率的な開発および運用が求められるようになり、ソフトウェアは巨大で複雑なモノリシックなものから、小さくてシンプルな複数のソフトウェアコンポーネント（以下、単に、「コンポーネント」と呼ぶ場合がある）が連携して所定の処理を実現するものに設計変更されるようになってきた。このとき、他のコンポーネントに影響を及ぼすことなく、コンポーネントごとにアップデート、スケールアウト、マイグレーションを行うことができるように、各コンポーネントに対して疎結合性という要件が求められる。「コンポーネントの疎結合性」とは、コンポーネントが有する、他のコンポーネントとの情報のやり取りを担うインターフェイス部分と、所定のサービスの提供を担う内部実装部分とが分離されている（両部分が独立して機能する）ことをいう。
【０００３】
コンポーネントの疎結合性を実現する技術として、例えばＯｐｅｎＳｔａｃｋでは、ＲＥＳＴ  ＡＰＩ（Application Programming Interface）やＡＭＱＰ（Advanced Message Queuing Protocol）のようなメッセージング技術が利用されている（非特許文献１，２参照）。これらの技術では、複数種類のメッセージキュー（キュー）を有するメッセージキューサーバを用意して、コンポーネントを識別するＩＤ（IDentifier）やタグ（topicともいう）をメッセージに付与し、そのＩＤやタグの条件に一致するキューにメッセージを格納する。コンポーネントは負荷に応じて複数存在させることができ、コンポーネント自身が処理待ち状態になると、コンポーネント自身が紐づくキューからメッセージを刈り取り、処理を実行する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＡＭＱＰ  ［online］、［平成28年1月19日検索］、インターネット<ＵＲＬ: https://www.amqp.org/>
【非特許文献２】ＯｐｅｎＳｔａｃｋ  ［online］、［平成28年1月19日検索］、インターネット<ＵＲＬ: https://www.openstack.org/>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術では、キュー内のメッセージを刈り取りことができる複数のコンポーネントのうちのいずれがメッセージを刈り取り、処理を実行するかが不定である。よって、例えば、キューを経由してメッセージをやり取り可能な、送信コンポーネントと受信コンポーネントが近くに（例：同じ仮想マシン上に）存在していても、メッセージを刈り取って処理するのは、近くの受信コンポーネントではなく、最も遠い（例：送信コンポーネントを有するデータセンタと異なるデータセンタが有する）受信コンポーネントとなってしまう場合がある。この場合、一定の負荷分散効果はあるものの、ＮＷ（NetWork：ネットワーク）通信としては無駄であり、ＮＷ帯域削減や通信遅延などの通信性能上の不都合を招く。非特許文献１，２には、このような不都合を解消するための記載も示唆もない。
【０００６】
このような背景に鑑みて、本発明は、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることを課題とする。
【課題を解決するための手段】
【０００７】
前記した課題を解決するため、請求項１に記載の発明は、複数種類の通信レイヤが、当該通信レイヤの種類ごとに１つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、１つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムであって、前記通信レイヤごとにブローカを備えており、前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、前記最下位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカに転送する最下位転送部と、を備え、前記中間ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、１つ下位の前記中間ブローカまたは前記最下位ブローカに転送し、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカまたは前記最上位ブローカに転送する中間転送部、を備え、前記最上位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる１つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キュー、を備える、ことを特徴とする。
【０００８】
また、請求項６に記載の発明は、複数種類の通信レイヤが、当該通信レイヤの種類ごとに１つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、１つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムにおけるメッセージ転送方法であって、前記通信レイヤごとにブローカを備えており、前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、前記最下位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューに格納するステップと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカに転送するステップと、を実行し、前記中間ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、１つ下位の前記中間ブローカまたは前記最下位ブローカに転送するステップと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の前記中間ブローカまたは前記最上位ブローカに転送するステップと、を実行し、前記最上位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる１つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キューに格納するステップと、を実行する、ことを特徴とする。
【０００９】
請求項１，６に記載の発明によれば、連携するソフトウェアコンポーネント同士でやり取りされるメッセージを転送するブローカに階層構造を持たせている。階層の異なるブローカ間でのメッセージの転送を制御することで、負荷分散に適したメッセージの転送経路と、ＮＷ帯域削減や通信遅延などの通信性能の向上に適したメッセージの転送経路との両方を確保することができる。
したがって、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【００１０】
また、請求項２に記載の発明は、請求項１に記載の発明であって、前記ソフトウェアコンポーネントが、自身を配下とする前記最下位ブローカに、所望の宛先を特定したメッセージを送信する、ことを特徴とする。
【００１１】
請求項２に記載の発明によれば、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする最下位ブローカにメッセージを送信し、ブローカの階層の下位から順にメッセージを転送する。各ブローカは、宛先となるソフトウェアコンポーネントが配下に存在すれば、そのソフトウェアコンポーネントに向けてメッセージを転送する。これにより、通信性能の向上に適したメッセージの転送経路にメッセージを辿らせることができ、宛先となるソフトウェアコンポーネントのうち、送信元のソフトウェアコンポーネントに最も近いソフトウェアコンポーネントに、メッセージを確実に転送することができる。
したがって、メッセージの通信性能を向上させることができる。
【００１２】
また、請求項３に記載の発明は、請求項１に記載の発明であって、前記ソフトウェアコンポーネントが、自身を配下とする前記最上位ブローカに、所望の宛先を特定したメッセージを送信する、ことを特徴とする。
【００１３】
請求項３に記載の発明によれば、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする最上位ブローカにメッセージを送信し、１つ下位の中間ブローカにメッセージを刈り取らせる。これにより、負荷分散に適したメッセージの転送経路にメッセージを辿らせることができ、メッセージの負荷分散を確実に実現することができる。
【００１４】
また、請求項４に記載の発明は、請求項１から請求項３のいずれか１項に記載の発明であって、前記ソフトウェアコンポーネントを管理する管理装置を備え、前記ソフトウェアコンポーネントが送信するメッセージに、宛先となる前記ソフトウェアコンポーネントが受信するまでの応答遅延範囲が指定されており、前記メッセージを受信したブローカは、前記応答遅延範囲を満たすことができるいずれの前記通信レイヤにも、宛先となる前記ソフトウェアコンポーネントが配置されていないと判断した場合、当該通信レイヤのいずれかに、宛先となる前記ソフトウェアコンポーネントを追加配置することを、前記管理装置に要求する、ことを特徴とする。
【００１５】
請求項４に記載の発明によれば、メッセージに応答遅延範囲を指定することで、必要に応じて、応答遅延範囲を満たすようにソフトウェアコンポーネントを追加的に払い出すことを可能にする。これにより、応答遅延を所定量以下に抑えたメッセージの転送を確実に実現することができる。
【００１６】
また、請求項５に記載の発明は、請求項１から請求項４のいずれか１項に記載の発明であって、前記通信レイヤは、ＴｏＲ  ＳＷ（Top of Rack SWitch）、物理マシン、仮想マシンがこの順で配置される階層構造をとっており、前記最下位ブローカは、前記仮想マシンに対応する仮想マシンブローカであり、前記中間ブローカは、前記物理マシンに対応する物理マシンブローカであり、前記最上位ブローカは、前記ＴｏＲ  ＳＷに対応するＴｏＲ  ＳＷブローカである、ことを特徴とする。
【００１７】
請求項５に記載の発明によれば、ＴｏＲ  ＳＷ、物理マシン、仮想マシンからなる通信レイヤの階層構造に対し、仮想マシンブローカ、物理マシンブローカ、ＴｏＲ  ＳＷブローカからなるブローカの階層構造を形成することで、メッセージング技術を利用した最適な分散システムを構築することができる。
【発明の効果】
【００１８】
本発明によれば、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態の分散システムの例の全体構成図である。
【図２】商品検索サービスシステムの例の全体構成図である。
【図３】負荷分散を重視たときのメッセージの転送を示す図である。
【図４】ＮＷ帯域削減や応答遅延低減を重視たときのメッセージの転送を示す図である。
【図５】応答遅延範囲を指定したときのメッセージの転送を示す図である。
【発明を実施するための形態】
【００２０】
本発明の実施形態について、図面を参照しながら詳細に説明する。
【００２１】
≪構成例≫
図１に示すように、本実施形態の分散システムは、端末などからの処理要求に対して、複数種類のソフトウェアコンポーネント（種類ごとに番号を付してある）が連携し、処理結果を端末に返すことで、所定のサービスを提供するものである。分散システムは、下位層から順に、ＴｏＲ  ＳＷ（Top of Rack SWitch）、物理マシン、仮想マシンを配置して備えている。
【００２２】
ＴｏＲ  ＳＷは、ラック上部に位置し、ラック内の物理マシンを直接収容するスイッチである。ＴｏＲ  ＳＷは、複数配置される。図１では、ＴｏＲ  ＳＷ１だけ示している。
物理マシンは、仮想化ソフトウェアが組み込まれた計算機である。物理マシンは、１つのＴｏＲ  ＳＷに１つまたは複数配置される。図１では、３つの物理マシン１〜３が示されている。
仮想マシンは、仮想化ソフトウェアによって生成された仮想計算機である。仮想マシンは、１つの物理マシンに１つまたは複数配置される。図１では、仮想マシン１〜３が示されている。
ソフトウェアコンポーネントは、仮想マシンに配置される。図１では、１番から３番のソフトウェアコンポーネントが示されている（３番のソフトウェアコンポーネントは破線表示になっている理由は後記する）。各ソフトウェアコンポーネントは疎結合性を具備している。
【００２３】
図１のＴｏＲ  ＳＷ１、物理マシン１〜３、仮想マシン１〜３はそれぞれ、階層構造の構成要素である通信レイヤとして機能し、コンポーネント同士の通信を実現する。通信レイヤは、ＴｏＲ  ＳＷ、物理マシン、仮想マシンに限られず、例えば、データセンタ（ＤＣ（Data Center）、拠点）も通信レイヤになり得る。データセンタは、複数配置され、１つのデータセンタに、１つまたは複数のＴｏＲ  ＳＷが配置される。
【００２４】
分散システムは、通信レイヤごとに、対応のブローカを備えている。ブローカは、連携するコンポーネント間でのメッセージのやり取りするためのメッセージキューサーバである。ブローカは、コンポーネントに関して、通信レイヤによって形成される階層構造とは対称的な階層構造をとる。ブローカは、下位層から順に、仮想マシンブローカ（最下位ブローカ）、物理マシンブローカ（中間ブローカ）、ＴｏＲ  ＳＷブローカ（最上位ブローカ）に分類される。
【００２５】
［仮想マシンブローカ］
図１では、３つの仮想マシンブローカ１Ａ〜１Ｃが、仮想マシン１〜３に対応して示されている。仮想マシンブローカ１Ａ〜１Ｃはいずれも同じ機能を有するため、以下、仮想マシンブローカ１Ａについて説明する。
仮想マシンブローカ１Ａは、キュー１２ａ〜１２ｃ（最下位キュー）と、転送部１１（最下位転送部）とを備えている。
【００２６】
キュー１２ａ〜１２ｃは、仮想マシンブローカ１Ａ自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付けるメッセージキューである。「仮想マシンブローカ１Ａ自身の配下にあるソフトウェアコンポーネント」とは、仮想マシンブローカ１Ａに対応する仮想マシン１に配置されているコンポーネントをいう。図１に示すように、１番〜３番のコンポーネントが仮想マシン１に配置されている場合、仮想マシンブローカ１Ａは、３つのキュー１２ａ〜１２ｃを備える。仮想マシンブローカ１Ａが備えるキューの数は、配下のコンポーネントの種類の数だけ存在し、分散システムの運用に応じて適宜増減することができる。仮想マシンブローカ１Ａは、ブローカの階層構造の最下位に配置される。
【００２７】
コンポーネントは、送信しようとするメッセージに、宛先となるコンポーネントを識別するタグを付与することができる。例えば、キュー１２ａが、１番のコンポーネントを識別するタグが付与されたメッセージを格納するキューとして機能する場合、あるコンポーネントから送信され、１番のコンポーネントを識別するタグが付与されたメッセージは、各種ブローカ間を経由し（詳細は後記）、仮想マシンブローカ１Ａに転送され、キュー１２ａに格納される。仮想マシン１に配置されている１番のコンポーネントは、処理待ち状態になるとキュー１２ａに格納されているメッセージを刈り取り、所定の処理を行う。
【００２８】
なお、キュー１２ｂ，１２ｃはそれぞれ、２番，３番のコンポーネントを識別するタグが付与されたメッセージをそれぞれ格納するキューとして機能することができる。また、コンポーネントの各々は、自身を配下とする仮想マシンブローカにメッセージを送信する。例えば、仮想マシン１に配置されている１番のコンポーネントは、仮想マシン１に対応する仮想マシンブローカ１Ａにメッセージを送信する。
【００２９】
転送部１１は、仮想マシンブローカ１Ａ自身の配下とならないソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする１つ上位の中間ブローカに転送する機能部である。例えば、図１によれば、１番のコンポーネントから受信したメッセージに、仮想マシンブローカ１Ａの配下となる１番〜３番のコンポーネントを識別するタグ以外のタグが付与されていれば、転送部１１は、仮想マシンブローカ１Ａを配下とする１つ上位の物理マシンブローカ２Ａに当該メッセージを転送する。
また、転送部１１は、１番〜３番のコンポーネントや物理マシンブローカ２Ａから受信したメッセージのタグの条件に合致するキュー１２ａ〜１２ｃに、当該メッセージを格納する。
【００３０】
［物理マシンブローカ］
図１では、３つの物理マシンブローカ２Ａ〜２Ｃが、物理マシン１〜３に対応して示されている。物理マシンブローカ２Ａ〜２Ｃはいずれも同じ機能を有するため、以下、物理マシンブローカ２Ａについて説明する。
物理マシンブローカ２Ａは、転送部２１（中間転送部）を備えている。
【００３１】
転送部２１は、物理マシンブローカ２Ａ自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる最下位ブローカ（図１では、仮想マシンブローカ１Ａ）に転送する。「物理マシンブローカ２Ａ自身の配下となるソフトウェアコンポーネント」とは、物理マシンブローカ２Ａに対応する物理マシン１に配置されている仮想マシン１に配置されているコンポーネントをいう。例えば、図１によれば、ＴｏＲ  ＳＷブローカ３Ａから刈り取ったメッセージに、物理マシンブローカ２Ａの配下となる１番〜３番のコンポーネントを識別するタグが付与されていれば、転送部２１は、物理マシンブローカ２Ａの配下となる最下位の仮想マシンブローカ１Ａに当該メッセージを転送する。
【００３２】
また、転送部２１は、物理マシンブローカ２Ａ自身の配下とならないソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする最上位ブローカ（図１では、ＴｏＲ  ＳＷブローカ３Ａ）に転送する。例えば、図１によれば、仮想マシンブローカ１Ａから受信したメッセージに、物理マシンブローカ２Ａの配下となる１番〜３番のコンポーネントを識別するタグ以外のタグが付与されていれば、転送部２１は、物理マシンブローカ２Ａを配下とする最上位のＴｏＲ  ＳＷブローカ３Ａに当該メッセージを転送する。
【００３３】
［ＴｏＲ  ＳＷブローカ］
図１では、１つのＴｏＲ  ＳＷブローカ３Ａが、ＴｏＲ  ＳＷ１に対応して示されている。
ＴｏＲ  ＳＷブローカ３Ａは、キュー３２ａ〜３２ｃ（最上位キュー）と、転送部３１（最上位転送部）とを備えている。
【００３４】
キュー３２ａ〜３２ｃは、ＴｏＲ  ＳＷブローカ３Ａ自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる１つ下位の中間ブローカ（図１では、物理マシンブローカ２Ａ〜２Ｃ）からのメッセージの刈り取りを受け付ける。「ＴｏＲ  ＳＷブローカ３Ａ自身の配下となるソフトウェアコンポーネント」とは、ＴｏＲ  ＳＷブローカ３Ａに対応するＴｏＲ  ＳＷ１に配置されている物理マシン１〜３に配置されている仮想マシン１〜３に配置されているコンポーネントをいう。図１に示すように、１番〜３番のコンポーネントが仮想マシン１〜３の少なくとも１つに配置されている場合、ＴｏＲ  ＳＷブローカ３Ａは、３つのキュー３２ａ〜３２ｃを備える。ＴｏＲ  ＳＷブローカ３Ａが備えるキューの数は、配下のコンポーネントの種類の数だけ存在し、分散システムの運用に応じて適宜増減することができる。ＴｏＲ  ＳＷブローカ３Ａは、ブローカの階層構造の最上位に配置される。なお、キュー３２ａ〜３２ｃはそれぞれ、１番〜３番のコンポーネントを識別するタグが付与されたメッセージをそれぞれ格納するキューとして機能することができる。
【００３５】
転送部３１は、物理マシンブローカ２Ａ〜２Ｃから受信したメッセージのタグの条件に合致するキュー３２ａ〜３２ｃに、当該メッセージを格納する。
【００３６】
図１の２番，３番のコンポーネントのように、分散システムは、同じコンポーネントを異なる仮想マシンに配置することができる。例えば、仮想マシン１に配置されている１番のコンポーネントが、３番のコンポーネントのタグを付与したメッセージを送信する場合を考える。このとき、このメッセージが、仮想マシンブローカ１Ａに受信され、仮想マシン１に配置されている（１番のコンポーネントに最も近い）３番のコンポーネントに刈り取られるようにすると、通信に要する時間を大幅に短縮することができる。また、本実施形態ではメッセージキューを採用しているため、分散システムの稼働中に、仮想マシン１に配置されている３番のコンポーネントが削除されていても（破線表示）、このメッセージが、仮想マシンブローカ１Ａ→物理マシンブローカ２Ａ→ＴｏＲ  ＳＷブローカ３Ａ→物理マシンブローカ２Ｂ→仮想マシンブローカ１Ｂという経路で転送され、仮想マシン２に配置されている（１番のコンポーネントに次に近い）３番のコンポーネントに刈り取られるようにすることができ、コンポーネント同士の連携を実現させることができる。
【００３７】
一般的に、メッセージの通信は、より上位層のブローカを経由するほど、実際に経由するブローカの数が多くなり時間がかかる。メッセージのやり取りを行うソフトウェアコンポーネント同士は、当該メッセージが経由するブローカの数が少ないほど近くに配置され、多いほど遠くに配置されているといえる。換言すれば、メッセージをやり取りするコンポーネント同士は、同じ仮想マシン上に配置されているときが最も近く、（異なる仮想マシン上に配置されているが）同じ物理マシン上に配置されているときがその次に近く、（異なる物理マシン上に配置されているが）同じＴｏＲ  ＳＷ上に配置されているときがその次に近い、といえる。
【００３８】
もし、中間ブローカ（物理マシンブローカなど）について、この中間ブローカ自身の配下となるコンポーネントを宛先とするメッセージを転送可能な最下位ブローカ（仮想マシンブローカ）が複数存在する場合、中間ブローカの転送部（図１の転送部２１に相当）は、これらの複数存在する最下位ブローカのいずれかにランダムにメッセージを転送することができる。このような場合は、例えば、１つの物理マシンに複数の仮想マシンが配置されている場合に該当する。宛先となるコンポーネントがこれらの仮想マシンのすべてに配置されていれば、この物理マシンに対応する物理マシンブローカの転送部は、これらの仮想マシンに対応する仮想マシンブローカのいずれかにランダムにメッセージを転送する。
【００３９】
≪処理例≫
次に、本実施形態の分散システムが実行できるさまざまな処理について、具体例を用いて説明する。具体例としては、商品検索サービスシステムを採り上げる。商品検索サービスシステムは、複数の言語に対応可能なテキストを用いた商品検索を実現する分散システムである。
【００４０】
図２に示すように、商品検索サービスシステムは、Ｗｅｂサーバ４１と、言語変換サーバ４２とを備える。Ｗｅｂサーバ４１は、利用者の端末Ｔがテキストの入力を行うことができるインターフェイスをオンライン上に提供するサーバである。言語変換サーバ４２は、端末Ｔから入力されたテキストの言語を所望の言語に変換するサーバである。本例では、言語として、日本語、英語、中国語を扱うが、これらに限定されない。
【００４１】
Ｗｅｂサーバ４１は、検索結果表示機能ｓｃ１と、検索要求受付機能ｓｃ２と、言語判定機能ｓｃ３とを備える。
検索結果表示機能ｓｃ１は、検索結果を、言語変換サーバ４２にて変換された言語で端末Ｔに表示させる。
検索要求受付機能ｓｃ２は、端末Ｔからの検索キーとなるテキストを受け付ける。
言語判定機能ｓｃ３は、検索キーとなるテキストに使用されている言語を判定する。
【００４２】
言語変換サーバ４２は、英和変換機能ｓｃ４と、中和変換機能ｓｃ５とを備える。
英和変換機能ｓｃ４は、日本語のテキストを英語に変換したり、英語のテキストを日本語に変換したりする。
中和変換機能ｓｃ５は、日本語のテキストを中国語に変換したり、中国語のテキストを日本語に変換したりする。
【００４３】
検索結果表示機能ｓｃ１、検索要求受付機能ｓｃ２、言語判定機能ｓｃ３、英和変換機能ｓｃ４、および、中和変換機能ｓｃ５は、ソフトウェアコンポーネントであり、独立した実行単位で、複数の物理マシンや仮想マシンなどに配置されている。検索結果表示機能ｓｃ１、検索要求受付機能ｓｃ２、言語判定機能ｓｃ３、英和変換機能ｓｃ４、および、中和変換機能ｓｃ５が連携することで、商品検索が実現される。
【００４４】
具体的には、まず、端末Ｔからの検索キーの入力により、検索結果表示機能ｓｃ１が、日本語、英語、中国語のいずれかの言語で記されたテキストを受信する（ステップＡ１）。次に、検索要求受付機能ｓｃ２、言語判定機能ｓｃ３、英和変換機能ｓｃ４、および、中和変換機能ｓｃ５の間で連携し合い、入力された検索キーの言語が判定され、所定の言語に変換される（ステップＡ２）。最後に、言語判定機能ｓｃ３、英和変換機能ｓｃ４、および、中和変換機能ｓｃ５による処理結果が検索結果表示機能ｓｃ１に渡される（ステップＡ３）。検索結果表示機能ｓｃ１は、言語変換された検索結果を端末Ｔに表示させる。
【００４５】
なお、図２の商品検索サービスシステムは、管理装置５を備えることができる。管理装置５は、商品検索サービスシステムを分散システムとして機能させるコンソールである。管理装置５は、ｓｃ管理部５１を備える。ｓｃ管理部５１は、検索結果表示機能ｓｃ１、検索要求受付機能ｓｃ２、言語判定機能ｓｃ３、英和変換機能ｓｃ４、および、中和変換機能ｓｃ５を監視して制御する。
【００４６】
ｓｃ管理部５１は、動作中のコンポーネントの障害や負荷状態の通知を、Ｗｅｂサーバ４１や言語変換サーバ４２から受けて、新たなコンポーネントを追加したり、既存のコンポーネントを削除したりすることができる。新たなコンポーネントを追加する場合、ｓｃ管理部５１は、コンポーネントデータベース５２にアクセスして、コンポーネント生成に必要なファイルを取得することができる。
【００４７】
［負荷分散を重視する場合］
商品検索サービスシステムは、従来の分散システムによる負荷分散と同等の負荷分散を実現することができる。図３に示すように、商品検索サービスシステムは、ＴｏＲ  ＳＷ１，２と、物理マシン１，２と、仮想マシン１〜３とを備えている。ＴｏＲ  ＳＷ１，２と、物理マシン１，２と、仮想マシン１〜３からなる階層構造は、Ｗｅｂサーバ４１および言語変換サーバ４２の組み合わせに等しい。
【００４８】
物理マシン１は、ＴｏＲ  ＳＷ１に配置されている。物理マシン２は、ＴｏＲ  ＳＷ２に配置されている。
仮想マシン１は、物理マシン１に配置されている。仮想マシン２は、物理マシン２に配置されている。仮想マシン３は、物理マシン２に配置されている。
検索要求受付機能ｓｃ２は、仮想マシン１に配置されている。言語判定機能ｓｃ３および英和変換機能ｓｃ４−１（英和変換機能ｓｃ４と同等）は、仮想マシン２に配置されている。英和変換機能ｓｃ４−２（英和変換機能ｓｃ４と同等）および中和変換機能ｓｃ５は、仮想マシン３に配置されている。
【００４９】
仮想マシン１に対応する仮想マシンブローカ１Ｄは、検索要求受付キューｑ２を備えている。検索要求受付機能ｓｃ２は、検索要求受付キューｑ２に格納されているメッセージを刈り取ることができる。
仮想マシン２に対応する仮想マシンブローカ１Ｅは、言語判定キューｑ３および英和変換キューｑ４−１を備えている。言語判定機能ｓｃ３は、言語判定キューｑ３に格納されているメッセージを刈り取ることができる。英和変換機能ｓｃ４−１は、英和変換キューｑ４−１に格納されているメッセージを刈り取ることができる。
仮想マシン３に対応する仮想マシンブローカ１Ｆは、英和変換キューｑ４−２および中和変換キューｑ５を備えている。英和変換機能ｓｃ４−２は、英和変換キューｑ４−２に格納されているメッセージを刈り取ることができる。中和変換機能ｓｃ５は、中和変換キューｑ５に格納されているメッセージを刈り取ることができる。
【００５０】
ＴｏＲ  ＳＷ１，２に対応するＴｏＲ  ＳＷブローカ３Ｂは、検索要求受付キューｑ１２、言語判定キューｑ１３、英和変換キューｑ１４、中和変換キューｑ１５、および、検索結果表示キューｑ１１を備えている。
物理マシン１に対応する物理マシンブローカ２Ｄは、配下にある検索要求受付機能ｓｃ２、言語判定機能ｓｃ３および英和変換機能ｓｃ４−１の存在のため、検索要求受付キューｑ１２に格納されているメッセージ、言語判定キューｑ１３に格納されているメッセージ、および、英和変換キューｑ１４に格納されているメッセージを刈り取ることができる。
物理マシン２に対応する物理マシンブローカ２Ｅは、配下にある英和変換キューｑ４−２および中和変換キューｑ５の存在のため、英和変換キューｑ４−２に格納されているメッセージ、および、中和変換キューｑ５に格納されているメッセージを刈り取ることができる。
検索結果表示キューｑ１１は、配下に検索結果表示機能ｓｃ１（図２）を有する物理マシンブローカ（図示せず）からのメッセージの刈り取りを受け付ける。
【００５１】
言語判定機能ｓｃ３が検索要求受付機能ｓｃ２と連携するとき、端末Ｔからの検索キーのメッセージは、「言語判定機能」のタグが付与された態様で、検索要求受付機能ｓｃ２→仮想マシンブローカ１Ｄ→物理マシンブローカ２Ｄ→仮想マシンブローカ１Ｅを経由して言語判定キューｑ３に格納される。そして、言語判定機能ｓｃ３は、言語判定キューｑ３に格納されているメッセージを刈り取り、言語判定を行う。言語判定結果が英語であった場合、言語判定機能ｓｃ３は、送信しようとするメッセージに「英和変換機能」のタグを付与して、このメッセージを英和変換機能ｓｃ４−１，ｓｃ４−２のいずれかに送る。
【００５２】
ここで、商品検索サービスシステムが、分散システムが従来から目的とする負荷分散を重視する場合、言語判定機能ｓｃ３は、対象のメッセージを、言語判定機能ｓｃ３を配下とする最上位のブローカであるＴｏＲ  ＳＷブローカ３Ｂに送信する（ステップＢ１）。つまり、言語判定機能ｓｃ３は、自身を配下とする仮想マシンブローカ１Ｅには送信しない。ＴｏＲ  ＳＷブローカ３Ｂに送信されたメッセージは、英和変換キューｑ１４に格納される。
【００５３】
その後、英和変換機能ｓｃ４−１を配下とする物理マシンブローカ２Ｄ（ＴｏＲ  ＳＷブローカ３Ｂの１つ下位のブローカ）、および、英和変換機能ｓｃ４−２を配下とする物理マシンブローカ２Ｅ（ＴｏＲ  ＳＷブローカ３Ｂの１つ下位のブローカ）のいずれかは、処理待ち状態になり次第、英和変換キューｑ１４からメッセージを刈り取る（ステップＢ２）。結果的に、メッセージは、英和変換キューｑ４−１に格納された後、英和変換機能ｓｃ４−１に刈り取られて言語変換されるか、英和変換キューｑ４−２に格納された後、英和変換機能ｓｃ４−２に刈り取られて言語変換されるか、のいずれかの手順を辿る。ただし、いずれの手順を辿ったとしても、言語変換された同じ検索結果のメッセージが検索結果表示キューｑ１１に格納され、検索結果表示機能ｓｃ１（図２）に送信され、端末Ｔに表示されるように処理される。
【００５４】
上記のように、最上位のブローカにメッセージが優先的に送信されるようにしておくことで、そのメッセージの宛先となるコンポーネントを不定にすることができ、負荷分散を実現することができる。
【００５５】
［ＮＷ帯域削減や応答遅延低減を重視する場合］
商品検索サービスシステムは、従来の分散システムでは困難となる、ＮＷ帯域を意図的に削減したり応答遅延を意図的に低減させたりすることができる。図４に示す商品検索サービスシステムの構成は、図３のものと同じである。
【００５６】
言語判定機能ｓｃ３が検索要求受付機能ｓｃ２と連携し、言語判定を行う。ここで、商品検索サービスシステムが、ＮＷ帯域削減や応答遅延低減を重視する場合、言語判定機能ｓｃ３は、言語判定結果が英語であったときには、送信しようとするメッセージに「英和変換機能」のタグを付与して、このメッセージを、言語判定機能ｓｃ３に近いブローカに送信する（ステップＣ１）。つまり、言語判定機能ｓｃ３は、言語判定機能ｓｃ３自身を配下とする最下位の仮想マシンブローカ１Ｅに送信する。
【００５７】
仮想マシンブローカ１Ｅは、配下に英和変換機能ｓｃ４−１が存在するため、言語判定機能ｓｃ３から受信したメッセージを英和変換キューｑ４−１に格納する。言語判定機能ｓｃ３と同じ仮想マシン（仮想マシン２）上にいる英和変換機能ｓｃ４−１は、処理待ち状態になり次第、英和変換キューｑ４−１からメッセージを刈り取る（ステップＣ２）。その後、言語変換された検索結果のメッセージが検索結果表示機能ｓｃ１（図２）に送信され、端末Ｔに表示されるように処理される。
【００５８】
また、言語判定機能ｓｃ３は、言語判定結果が中国語であったときには、送信しようとするメッセージに「中和変換機能」のタグを付与して、このメッセージを、言語判定機能ｓｃ３に近いブローカに送信する（ステップＤ１）。仮想マシンブローカ１Ｅは、配下に中和変換機能ｓｃ５と同等のコンポーネントが存在しないため、メッセージを上位のブローカ、つまり、物理マシンブローカ２Ｄに転送する。
【００５９】
物理マシンブローカ２Ｄも、配下に中和変換機能ｓｃ５と同等のコンポーネントが存在しないため、メッセージを上位のブローカ、つまり、ＴｏＲ  ＳＷブローカ３Ｂに転送する（ステップＤ２）。ＴｏＲ  ＳＷブローカ３Ｂに送信されたメッセージは、中和変換キューｑ１５に格納される。なお、仮に、物理マシンブローカ２Ｄの配下に中和変換機能ｓｃ５と同等のコンポーネントが存在する場合、物理マシンブローカ２Ｄは、そのコンポーネントにメッセージを転送する。
【００６０】
メッセージが中和変換キューｑ１５に格納された後、中和変換機能ｓｃ５を配下とする物理マシンブローカ２Ｅ（ＴｏＲ  ＳＷブローカ３Ｂの１つ下位のブローカ）は、処理待ち状態になり次第、中和変換キューｑ１５からメッセージを刈り取る（ステップＤ３）。結果的に、メッセージは、中和変換キューｑ５に格納された後、中和変換機能ｓｃ５に刈り取られて言語変換される。言語変換された検索結果のメッセージは、検索結果表示キューｑ１１に格納され、検索結果表示機能ｓｃ１（図２）に送信され、端末Ｔに表示されるように処理される。
【００６１】
上記のように、最下位のブローカにメッセージが優先的に送信されるようにしておくことで、そのメッセージの宛先となるコンポーネントを、メッセージを送信するコンポーネントに最も近いコンポーネントにすることができ、ＮＷ帯域削減や応答遅延低減を実現することができる。
【００６２】
［応答遅延範囲を指定した場合］
商品検索サービスシステムは、ソフトウェアコンポーネントが送信するメッセージに、宛先となるソフトウェアコンポーネントが受信するまでの応答遅延範囲を指定することができる。応答遅延範囲は、メッセージの送信から受信までに要する時間の許容量を表す。図５に示す商品検索サービスシステムの構成は、図３，図４のものに、さらに、管理装置５を備えたものと同じである。
【００６３】
例えば、中国語の翻訳を高速に行いたい場合について説明する。この場合、検索要求受付機能ｓｃ２と連携している言語判定機能ｓｃ３は、言語判定結果が中国語であったときには、送信しようとするメッセージに「中和変換機能」のタグを付与するとともに、例えば、「送信元と同じ仮想マシン上のコンポーネントを宛先とする」という応答遅延範囲を指定することができる。言語判定機能ｓｃ３は、この応答遅延範囲を含むメッセージを、言語判定機能ｓｃ３に近いブローカに送信する（ステップＥ１）。つまり、言語判定機能ｓｃ３は、言語判定機能ｓｃ３自身を配下とする最下位の仮想マシンブローカ１Ｅにメッセージを送信する。
【００６４】
言語判定機能ｓｃ３がメッセージを送信する時点では、仮想マシン２には中和変換機能ｓｃ５と同等のコンポーネントが配置されていないとする。仮想マシンブローカ１Ｅは、言語判定機能ｓｃ３から受信したメッセージに含まれる応答遅延範囲を読み出し、応答遅延範囲を満たすことができるいずれの通信レイヤ（本例では、仮想マシン２のみ）にも、宛先となるソフトウェアコンポーネント（本例では、中和変換機能ｓｃ５と同等のコンポーネント）が配置されていないと判断する。
【００６５】
そこで、仮想マシンブローカ１Ｅは、仮想マシン２に、中和変換機能ｓｃ５と同等のコンポーネントを追加配置（デプロイ）することを、管理装置５に要求する（ステップＥ２）。管理装置５のｓｃ管理部５１は、中和変換機能ｓｃ５と同等のコンポーネントとなる中和変換機能ｓｃ６を生成し、仮想マシン２に払い出す（デプロイ）する（ステップＥ３）。また、ｓｃ管理部５１は、商品検索サービスシステムの各ブローカに対し、この中和変換機能ｓｃ６の払い出しのことを通知する。仮想マシンブローカ１Ｅは、中和変換機能ｓｃ６が刈り取るメッセージを格納する中和変換キューｑ６を生成する。
【００６６】
結果的に、言語判定機能ｓｃ３からのメッセージは、中和変換キューｑ６に格納された後、中和変換機能ｓｃ６に刈り取られて言語変換される。言語変換された検索結果のメッセージは、検索結果表示キューｑ１１に格納され、検索結果表示機能ｓｃ１（図２）に送信され、端末Ｔに表示されるように処理される。
【００６７】
上記のように、コンポーネントの追加配置を行うことで、メッセージに付与された応答遅延範囲を確実に満たすことができる。
なお、応答遅延範囲は、例えば、許容される応答遅延時間からメッセージが通過可能なブローカの数を、メッセージの転送回数の上限値として算出することができる。転送されるメッセージには、当該メッセージが実際に通過したブローカの数をカウントする機能を具備しておき、メッセージを受信した各ブローカは、カウントした数が前記上限値を超えたか否かを判断することで、応答遅延範囲を満たすか否かの判断が実現される。カウントした数が上限値を超えていた場合、ブローカから管理装置５へのデプロイの要求がなされる。
【００６８】
（まとめ）
本実施形態によれば、連携するソフトウェアコンポーネント同士でやり取りされるメッセージを転送するブローカに階層構造を持たせている。階層の異なるブローカ間でのメッセージの転送を制御することで、負荷分散に適したメッセージの転送経路と、ＮＷ帯域削減や通信遅延などの通信性能の向上に適したメッセージの転送経路との両方を確保することができる。
したがって、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【００６９】
また、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする仮想マシンブローカにメッセージを送信し、ブローカの階層の下位から順にメッセージを転送する。各ブローカは、宛先となるソフトウェアコンポーネントが配下に存在すれば、そのソフトウェアコンポーネントに向けてメッセージを転送する。これにより、通信性能の向上に適したメッセージの転送経路にメッセージを辿らせることができ、宛先となるソフトウェアコンポーネントのうち、送信元のソフトウェアコンポーネントに最も近いソフトウェアコンポーネントに、メッセージを確実に転送することができる。
したがって、メッセージの通信性能を向上させることができる。
【００７０】
また、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とするＴｏＲ  ＳＷブローカにメッセージを送信し、１つ下位の物理マシンブローカにメッセージを刈り取らせる。これにより、負荷分散に適したメッセージの転送経路にメッセージを辿らせることができ、メッセージの負荷分散を確実に実現することができる。
【００７１】
また、メッセージに応答遅延範囲を指定することで、必要に応じて、応答遅延範囲を満たすようにソフトウェアコンポーネントを追加的に払い出すことを可能にする。これにより、応答遅延を所定量以下に抑えたメッセージの転送を確実に実現することができる。
【００７２】
また、ＴｏＲ  ＳＷ、物理マシン、仮想マシンからなる通信レイヤの階層構造に対し、仮想マシンブローカ、物理マシンブローカ、ＴｏＲ  ＳＷブローカからなるブローカの階層構造を形成することで、メッセージング技術を利用した最適な分散システムを構築することができる。
【００７３】
≪その他≫
（１）本実施形態の分散システムは、通信レイヤの階層構造が３層であり、ブローカの階層構造も３層であったが、通信レイヤの階層構造を４層以上とし、ブローカの階層構造も４層以上としてもよい。この場合、中間ブローカは２種類以上存在することになり、中間ブローカの種類ごとに階層の上下関係が定められた階層構造が形成される。このような階層構造では、コンポーネントと最下位ブローカとの間のメッセージの転送、最下位ブローカと最下位ブローカの１つ上位の中間ブローカとの間のメッセージの転送、中間ブローカと当該中間ブローカの１つ上位の中間ブローカとの間のメッセージの転送、最上位ブローカと最上位ブローカの１つ下位の中間ブローカとの間のメッセージの転送が行われる。
【００７４】
特に、通信レイヤの階層構造が４層である場合、ＤＣ、ＴｏＲ  ＳＷ、物理マシン、仮想マシンがこの順で配置される通信レイヤの階層構造とすることができる。この場合、仮想マシンブローカが最下位ブローカになり、物理マシンブローカが下位の中間ブローカになり、ＴｏＲ  ＳＷブローカが上位の中間ブローカになり、ＤＣに対応するＤＣブローカが最上位ブローカになる。
【００７５】
（２）また、本実施形態の分散システムが、通信レイヤの階層構造を２層とし、ブローカの階層構造も２層としてもよい。この場合、中間ブローカは存在しないことになり、最下位ブローカと最上位ブローカとで定められた階層構造が形成される。このような階層構造では、コンポーネントと最下位ブローカとの間のメッセージの転送、最下位ブローカと最上位ブローカとの間のメッセージの転送が行われる。
【００７６】
（３）本実施形態の中間ブローカ（図１の物理マシンブローカ２Ａ〜２Ｃ、図３〜図５の物理マシンブローカ２Ｄ，２Ｅなど）がメッセージを格納するキューを具備してもよい。この場合、中間ブローカのキューに格納されたメッセージは、処理待ち状態になった最下位のブローカ、または、１つ下位の中間ブローカによって刈り取られる。
【００７７】
（４）図３〜図５に示す分散システム（商品検索サービスシステム）において、最下位の通信レイヤである２つのＴｏＲ  ＳＷ１，２に対して、最上位ブローカは、１つのＴｏＲ  ＳＷブローカ３Ｂを用意した。しかし、２つのＴｏＲ  ＳＷ１，２に対応する２つのＴｏＲ  ＳＷブローカを用意してもよい。また、ＴｏＲ  ＳＷの数と同数のＴｏＲ  ＳＷブローカを用意してもよい。つまり、最上位ブローカが複数存在してもよい。
【００７８】
このとき、最上位ブローカの各々は、自身の配下にあるソフトウェアコンポーネントにメッセージを転送するためのキューを備える。自身の配下にないコンポーネントを受信した最上位ブローカは、そのコンポーネントを配下とする別の最上位ブローカにメッセージを転送するようにしてもよい。また、通信レイヤには対応していないものの、複数の最上位ブローカの１つ上位のブローカを新たに用意し、その新たなブローカを最上位ブローカとして機能させてもよい。この場合、複数の元最上位ブローカは、新たな最上位ブローカのキューに格納されているメッセージを刈り取ることができる。
【００７９】
（５）本実施形態では、最上位ブローカの１つ下位にあるブローカは、最上位ブローカのキューからランダムにメッセージを刈り取るようにした。しかし、例えば、最上位ブローカの１つ下位にあるブローカは、そのブローカの配下となるコンポーネントの負荷（稼働状況）を収集し、負荷の小さなコンポーネントを配下とするブローカが優先的に、最上位ブローカのキューからメッセージを刈り取るようにしてもよい。これにより、負荷分散をさらに効率よく実現することができる。
【００８０】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００８１】
１Ａ〜１Ｆ  仮想マシンブローカ（最下位ブローカ）
２Ａ〜２Ｅ  物理マシンブローカ（中間ブローカ）
３Ａ，３Ｂ  ＴｏＲ  ＳＷブローカ（最上位ブローカ）
１１        転送部（最下位転送部）
１２ａ〜１２ｃ  キュー（最下位キュー）
２１        転送部（中間転送部）
３１        転送部（最上位キュー）
３２ａ〜３２ｃ  キュー（最上位キュー）
４１        Ｗｅｂサーバ
４２        言語変換サーバ
５          管理装置
５１        ｓｃ管理部
ｓｃ１      検索結果表示機能（ソフトウェアコンポーネント）
ｓｃ２      検索要求受付機能（ソフトウェアコンポーネント）
ｓｃ３      言語判定機能（ソフトウェアコンポーネント）
ｓｃ４，ｓｃ４−１，ｓｃ４−２  英和変換機能（ソフトウェアコンポーネント）
ｓｃ５      中和変換機能（ソフトウェアコンポーネント）
ｑ２        検索要求受付キュー（最下位キュー）
ｑ３        言語判定キュー（最下位キュー）
ｑ４−１，ｑ４−２  英和変換キュー（最下位キュー）
ｑ５，ｑ６  中和変換キュー（最下位キュー）
ｑ１１      検索結果表示キュー（最上位キュー）
ｑ１２      検索要求受付キュー（最上位キュー）
ｑ１３      言語判定キュー（最上位キュー）
ｑ１４      英和変換キュー（最上位キュー）
ｑ１５      中和変換キュー（最上位キュー）
【図１】
0006412516.tif 000002
【図２】
0006412516.tif 000003
【図３】
0006412516.tif 000004
【図４】
0006412516.tif 000005
【図５】
0006412516.tif 000006