特許第6412516号(P6412516)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6412516分散システム、および、メッセージ転送方法
<>
  • 特許6412516-分散システム、および、メッセージ転送方法 図000002
  • 特許6412516-分散システム、および、メッセージ転送方法 図000003
  • 特許6412516-分散システム、および、メッセージ転送方法 図000004
  • 特許6412516-分散システム、および、メッセージ転送方法 図000005
  • 特許6412516-分散システム、および、メッセージ転送方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6412516
(24)【登録日】2018年10月5日
(45)【発行日】2018年10月24日
(54)【発明の名称】分散システム、および、メッセージ転送方法
(51)【国際特許分類】
   G06F 9/54 20060101AFI20181015BHJP
   H04L 12/869 20130101ALI20181015BHJP
   H04L 12/70 20130101ALI20181015BHJP
   G06F 13/00 20060101ALI20181015BHJP
   G06F 9/455 20060101ALI20181015BHJP
   G06F 9/50 20060101ALI20181015BHJP
【FI】
   G06F9/54 B
   H04L12/869
   H04L12/70 D
   G06F13/00 353Q
   G06F9/455 150
   G06F9/50 150Z
【請求項の数】6
【全頁数】18
(21)【出願番号】特願2016-26516(P2016-26516)
(22)【出願日】2016年2月16日
(65)【公開番号】特開2017-146685(P2017-146685A)
(43)【公開日】2017年8月24日
【審査請求日】2017年12月21日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】特許業務法人磯野国際特許商標事務所
(72)【発明者】
【氏名】藤岡 幸
(72)【発明者】
【氏名】白神 彰則
【審査官】 小林 哲雄
(56)【参考文献】
【文献】 特開2015−045906(JP,A)
【文献】 特開2009−157768(JP,A)
【文献】 特開2011−221581(JP,A)
【文献】 米国特許出願公開第2009/0172092(US,A1)
【文献】 小林弘明、藤岡幸、北野雄大、近藤悟,分散環境におけるソフトウェアコンポーネントの配置最適化,電子情報通信学会技術研究報告書,電子情報通信学会,2015年 5月14日,Vol.115 No.41,pp.15-20,ISSN 0913-5685
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46−9/54
G06F 9/455
G06F 13/00
H04L 12/70
H04L 12/869
(57)【特許請求の範囲】
【請求項1】
複数種類の通信レイヤが、当該通信レイヤの種類ごとに1つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、1つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムであって、
前記通信レイヤごとにブローカを備えており、
前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、
前記最下位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカに転送する最下位転送部と、を備え、
前記中間ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、1つ下位の前記中間ブローカまたは前記最下位ブローカに転送し、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカまたは前記最上位ブローカに転送する中間転送部、を備え、
前記最上位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる1つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キュー、を備える、
ことを特徴とする分散システム。
【請求項2】
前記ソフトウェアコンポーネントが、自身を配下とする前記最下位ブローカに、所望の宛先を特定したメッセージを送信する、
ことを特徴とする請求項1に記載の分散システム。
【請求項3】
前記ソフトウェアコンポーネントが、自身を配下とする前記最上位ブローカに、所望の宛先を特定したメッセージを送信する、
ことを特徴とする請求項1に記載の分散システム。
【請求項4】
前記ソフトウェアコンポーネントを管理する管理装置を備え、
前記ソフトウェアコンポーネントが送信するメッセージに、宛先となる前記ソフトウェアコンポーネントが受信するまでの応答遅延範囲が指定されており、
前記メッセージを受信したブローカは、前記応答遅延範囲を満たすことができるいずれの前記通信レイヤにも、宛先となる前記ソフトウェアコンポーネントが配置されていないと判断した場合、当該通信レイヤのいずれかに、宛先となる前記ソフトウェアコンポーネントを追加配置することを、前記管理装置に要求する、
ことを特徴とする請求項1から請求項3のいずれか1項に記載の分散システム。
【請求項5】
前記通信レイヤは、ToR SW(Top of Rack SWitch)、物理マシン、仮想マシンがこの順で配置される階層構造をとっており、
前記最下位ブローカは、前記仮想マシンに対応する仮想マシンブローカであり、
前記中間ブローカは、前記物理マシンに対応する物理マシンブローカであり、
前記最上位ブローカは、前記ToR SWに対応するToR SWブローカである、
ことを特徴とする請求項1から請求項4のいずれか1項に記載の分散システム。
【請求項6】
複数種類の通信レイヤが、当該通信レイヤの種類ごとに1つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、1つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムにおけるメッセージ転送方法であって、
前記通信レイヤごとにブローカを備えており、
前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、
前記最下位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューに格納するステップと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカに転送するステップと、を実行し、
前記中間ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、1つ下位の前記中間ブローカまたは前記最下位ブローカに転送するステップと、
自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカまたは前記最上位ブローカに転送するステップと、を実行し、
前記最上位ブローカは、
自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる1つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キューに格納するステップと、を実行する、
ことを特徴とするメッセージ転送方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、負荷分散の技術に関する。
【背景技術】
【0002】
システムのより効率的な開発および運用が求められるようになり、ソフトウェアは巨大で複雑なモノリシックなものから、小さくてシンプルな複数のソフトウェアコンポーネント(以下、単に、「コンポーネント」と呼ぶ場合がある)が連携して所定の処理を実現するものに設計変更されるようになってきた。このとき、他のコンポーネントに影響を及ぼすことなく、コンポーネントごとにアップデート、スケールアウト、マイグレーションを行うことができるように、各コンポーネントに対して疎結合性という要件が求められる。「コンポーネントの疎結合性」とは、コンポーネントが有する、他のコンポーネントとの情報のやり取りを担うインターフェイス部分と、所定のサービスの提供を担う内部実装部分とが分離されている(両部分が独立して機能する)ことをいう。
【0003】
コンポーネントの疎結合性を実現する技術として、例えばOpenStackでは、REST API(Application Programming Interface)やAMQP(Advanced Message Queuing Protocol)のようなメッセージング技術が利用されている(非特許文献1,2参照)。これらの技術では、複数種類のメッセージキュー(キュー)を有するメッセージキューサーバを用意して、コンポーネントを識別するID(IDentifier)やタグ(topicともいう)をメッセージに付与し、そのIDやタグの条件に一致するキューにメッセージを格納する。コンポーネントは負荷に応じて複数存在させることができ、コンポーネント自身が処理待ち状態になると、コンポーネント自身が紐づくキューからメッセージを刈り取り、処理を実行する。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】AMQP [online]、[平成28年1月19日検索]、インターネット<URL: https://www.amqp.org/>
【非特許文献2】OpenStack [online]、[平成28年1月19日検索]、インターネット<URL: https://www.openstack.org/>
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来技術では、キュー内のメッセージを刈り取りことができる複数のコンポーネントのうちのいずれがメッセージを刈り取り、処理を実行するかが不定である。よって、例えば、キューを経由してメッセージをやり取り可能な、送信コンポーネントと受信コンポーネントが近くに(例:同じ仮想マシン上に)存在していても、メッセージを刈り取って処理するのは、近くの受信コンポーネントではなく、最も遠い(例:送信コンポーネントを有するデータセンタと異なるデータセンタが有する)受信コンポーネントとなってしまう場合がある。この場合、一定の負荷分散効果はあるものの、NW(NetWork:ネットワーク)通信としては無駄であり、NW帯域削減や通信遅延などの通信性能上の不都合を招く。非特許文献1,2には、このような不都合を解消するための記載も示唆もない。
【0006】
このような背景に鑑みて、本発明は、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることを課題とする。
【課題を解決するための手段】
【0007】
前記した課題を解決するため、請求項1に記載の発明は、複数種類の通信レイヤが、当該通信レイヤの種類ごとに1つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、1つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムであって、前記通信レイヤごとにブローカを備えており、前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、前記最下位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカに転送する最下位転送部と、を備え、前記中間ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、1つ下位の前記中間ブローカまたは前記最下位ブローカに転送し、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカまたは前記最上位ブローカに転送する中間転送部、を備え、前記最上位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる1つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キュー、を備える、ことを特徴とする。
【0008】
また、請求項6に記載の発明は、複数種類の通信レイヤが、当該通信レイヤの種類ごとに1つまたは複数存在しており、当該通信レイヤを種類別に異なる階層に配置して階層構造をとっており、1つまたは複数の最上位の前記通信レイヤのいずれかに複数種類のソフトウェアコンポーネントが配置されている分散システムにおけるメッセージ転送方法であって、前記通信レイヤごとにブローカを備えており、前記ブローカは、最下位ブローカと、最上位ブローカと、中間ブローカとからなり、前記最下位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付ける最下位キューに格納するステップと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカに転送するステップと、を実行し、前記中間ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる、1つ下位の前記中間ブローカまたは前記最下位ブローカに転送するステップと、自身の配下とならない前記ソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の前記中間ブローカまたは前記最上位ブローカに転送するステップと、を実行し、前記最上位ブローカは、自身の配下となる前記ソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる1つ下位の前記中間ブローカからのメッセージの刈り取りを受け付ける最上位キューに格納するステップと、を実行する、ことを特徴とする。
【0009】
請求項1,6に記載の発明によれば、連携するソフトウェアコンポーネント同士でやり取りされるメッセージを転送するブローカに階層構造を持たせている。階層の異なるブローカ間でのメッセージの転送を制御することで、負荷分散に適したメッセージの転送経路と、NW帯域削減や通信遅延などの通信性能の向上に適したメッセージの転送経路との両方を確保することができる。
したがって、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【0010】
また、請求項2に記載の発明は、請求項1に記載の発明であって、前記ソフトウェアコンポーネントが、自身を配下とする前記最下位ブローカに、所望の宛先を特定したメッセージを送信する、ことを特徴とする。
【0011】
請求項2に記載の発明によれば、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする最下位ブローカにメッセージを送信し、ブローカの階層の下位から順にメッセージを転送する。各ブローカは、宛先となるソフトウェアコンポーネントが配下に存在すれば、そのソフトウェアコンポーネントに向けてメッセージを転送する。これにより、通信性能の向上に適したメッセージの転送経路にメッセージを辿らせることができ、宛先となるソフトウェアコンポーネントのうち、送信元のソフトウェアコンポーネントに最も近いソフトウェアコンポーネントに、メッセージを確実に転送することができる。
したがって、メッセージの通信性能を向上させることができる。
【0012】
また、請求項3に記載の発明は、請求項1に記載の発明であって、前記ソフトウェアコンポーネントが、自身を配下とする前記最上位ブローカに、所望の宛先を特定したメッセージを送信する、ことを特徴とする。
【0013】
請求項3に記載の発明によれば、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする最上位ブローカにメッセージを送信し、1つ下位の中間ブローカにメッセージを刈り取らせる。これにより、負荷分散に適したメッセージの転送経路にメッセージを辿らせることができ、メッセージの負荷分散を確実に実現することができる。
【0014】
また、請求項4に記載の発明は、請求項1から請求項3のいずれか1項に記載の発明であって、前記ソフトウェアコンポーネントを管理する管理装置を備え、前記ソフトウェアコンポーネントが送信するメッセージに、宛先となる前記ソフトウェアコンポーネントが受信するまでの応答遅延範囲が指定されており、前記メッセージを受信したブローカは、前記応答遅延範囲を満たすことができるいずれの前記通信レイヤにも、宛先となる前記ソフトウェアコンポーネントが配置されていないと判断した場合、当該通信レイヤのいずれかに、宛先となる前記ソフトウェアコンポーネントを追加配置することを、前記管理装置に要求する、ことを特徴とする。
【0015】
請求項4に記載の発明によれば、メッセージに応答遅延範囲を指定することで、必要に応じて、応答遅延範囲を満たすようにソフトウェアコンポーネントを追加的に払い出すことを可能にする。これにより、応答遅延を所定量以下に抑えたメッセージの転送を確実に実現することができる。
【0016】
また、請求項5に記載の発明は、請求項1から請求項4のいずれか1項に記載の発明であって、前記通信レイヤは、ToR SW(Top of Rack SWitch)、物理マシン、仮想マシンがこの順で配置される階層構造をとっており、前記最下位ブローカは、前記仮想マシンに対応する仮想マシンブローカであり、前記中間ブローカは、前記物理マシンに対応する物理マシンブローカであり、前記最上位ブローカは、前記ToR SWに対応するToR SWブローカである、ことを特徴とする。
【0017】
請求項5に記載の発明によれば、ToR SW、物理マシン、仮想マシンからなる通信レイヤの階層構造に対し、仮想マシンブローカ、物理マシンブローカ、ToR SWブローカからなるブローカの階層構造を形成することで、メッセージング技術を利用した最適な分散システムを構築することができる。
【発明の効果】
【0018】
本発明によれば、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【図面の簡単な説明】
【0019】
図1】本実施形態の分散システムの例の全体構成図である。
図2】商品検索サービスシステムの例の全体構成図である。
図3】負荷分散を重視たときのメッセージの転送を示す図である。
図4】NW帯域削減や応答遅延低減を重視たときのメッセージの転送を示す図である。
図5】応答遅延範囲を指定したときのメッセージの転送を示す図である。
【発明を実施するための形態】
【0020】
本発明の実施形態について、図面を参照しながら詳細に説明する。
【0021】
≪構成例≫
図1に示すように、本実施形態の分散システムは、端末などからの処理要求に対して、複数種類のソフトウェアコンポーネント(種類ごとに番号を付してある)が連携し、処理結果を端末に返すことで、所定のサービスを提供するものである。分散システムは、下位層から順に、ToR SW(Top of Rack SWitch)、物理マシン、仮想マシンを配置して備えている。
【0022】
ToR SWは、ラック上部に位置し、ラック内の物理マシンを直接収容するスイッチである。ToR SWは、複数配置される。図1では、ToR SW1だけ示している。
物理マシンは、仮想化ソフトウェアが組み込まれた計算機である。物理マシンは、1つのToR SWに1つまたは複数配置される。図1では、3つの物理マシン1〜3が示されている。
仮想マシンは、仮想化ソフトウェアによって生成された仮想計算機である。仮想マシンは、1つの物理マシンに1つまたは複数配置される。図1では、仮想マシン1〜3が示されている。
ソフトウェアコンポーネントは、仮想マシンに配置される。図1では、1番から3番のソフトウェアコンポーネントが示されている(3番のソフトウェアコンポーネントは破線表示になっている理由は後記する)。各ソフトウェアコンポーネントは疎結合性を具備している。
【0023】
図1のToR SW1、物理マシン1〜3、仮想マシン1〜3はそれぞれ、階層構造の構成要素である通信レイヤとして機能し、コンポーネント同士の通信を実現する。通信レイヤは、ToR SW、物理マシン、仮想マシンに限られず、例えば、データセンタ(DC(Data Center)、拠点)も通信レイヤになり得る。データセンタは、複数配置され、1つのデータセンタに、1つまたは複数のToR SWが配置される。
【0024】
分散システムは、通信レイヤごとに、対応のブローカを備えている。ブローカは、連携するコンポーネント間でのメッセージのやり取りするためのメッセージキューサーバである。ブローカは、コンポーネントに関して、通信レイヤによって形成される階層構造とは対称的な階層構造をとる。ブローカは、下位層から順に、仮想マシンブローカ(最下位ブローカ)、物理マシンブローカ(中間ブローカ)、ToR SWブローカ(最上位ブローカ)に分類される。
【0025】
[仮想マシンブローカ]
図1では、3つの仮想マシンブローカ1A〜1Cが、仮想マシン1〜3に対応して示されている。仮想マシンブローカ1A〜1Cはいずれも同じ機能を有するため、以下、仮想マシンブローカ1Aについて説明する。
仮想マシンブローカ1Aは、キュー12a〜12c(最下位キュー)と、転送部11(最下位転送部)とを備えている。
【0026】
キュー12a〜12cは、仮想マシンブローカ1A自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを格納し、当該ソフトウェアコンポーネントからのメッセージの刈り取りを受け付けるメッセージキューである。「仮想マシンブローカ1A自身の配下にあるソフトウェアコンポーネント」とは、仮想マシンブローカ1Aに対応する仮想マシン1に配置されているコンポーネントをいう。図1に示すように、1番〜3番のコンポーネントが仮想マシン1に配置されている場合、仮想マシンブローカ1Aは、3つのキュー12a〜12cを備える。仮想マシンブローカ1Aが備えるキューの数は、配下のコンポーネントの種類の数だけ存在し、分散システムの運用に応じて適宜増減することができる。仮想マシンブローカ1Aは、ブローカの階層構造の最下位に配置される。
【0027】
コンポーネントは、送信しようとするメッセージに、宛先となるコンポーネントを識別するタグを付与することができる。例えば、キュー12aが、1番のコンポーネントを識別するタグが付与されたメッセージを格納するキューとして機能する場合、あるコンポーネントから送信され、1番のコンポーネントを識別するタグが付与されたメッセージは、各種ブローカ間を経由し(詳細は後記)、仮想マシンブローカ1Aに転送され、キュー12aに格納される。仮想マシン1に配置されている1番のコンポーネントは、処理待ち状態になるとキュー12aに格納されているメッセージを刈り取り、所定の処理を行う。
【0028】
なお、キュー12b,12cはそれぞれ、2番,3番のコンポーネントを識別するタグが付与されたメッセージをそれぞれ格納するキューとして機能することができる。また、コンポーネントの各々は、自身を配下とする仮想マシンブローカにメッセージを送信する。例えば、仮想マシン1に配置されている1番のコンポーネントは、仮想マシン1に対応する仮想マシンブローカ1Aにメッセージを送信する。
【0029】
転送部11は、仮想マシンブローカ1A自身の配下とならないソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする1つ上位の中間ブローカに転送する機能部である。例えば、図1によれば、1番のコンポーネントから受信したメッセージに、仮想マシンブローカ1Aの配下となる1番〜3番のコンポーネントを識別するタグ以外のタグが付与されていれば、転送部11は、仮想マシンブローカ1Aを配下とする1つ上位の物理マシンブローカ2Aに当該メッセージを転送する。
また、転送部11は、1番〜3番のコンポーネントや物理マシンブローカ2Aから受信したメッセージのタグの条件に合致するキュー12a〜12cに、当該メッセージを格納する。
【0030】
[物理マシンブローカ]
図1では、3つの物理マシンブローカ2A〜2Cが、物理マシン1〜3に対応して示されている。物理マシンブローカ2A〜2Cはいずれも同じ機能を有するため、以下、物理マシンブローカ2Aについて説明する。
物理マシンブローカ2Aは、転送部21(中間転送部)を備えている。
【0031】
転送部21は、物理マシンブローカ2A自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを、自身の配下となる最下位ブローカ(図1では、仮想マシンブローカ1A)に転送する。「物理マシンブローカ2A自身の配下となるソフトウェアコンポーネント」とは、物理マシンブローカ2Aに対応する物理マシン1に配置されている仮想マシン1に配置されているコンポーネントをいう。例えば、図1によれば、ToR SWブローカ3Aから刈り取ったメッセージに、物理マシンブローカ2Aの配下となる1番〜3番のコンポーネントを識別するタグが付与されていれば、転送部21は、物理マシンブローカ2Aの配下となる最下位の仮想マシンブローカ1Aに当該メッセージを転送する。
【0032】
また、転送部21は、物理マシンブローカ2A自身の配下とならないソフトウェアコンポーネントを宛先とするメッセージを、自身を配下とする最上位ブローカ(図1では、ToR SWブローカ3A)に転送する。例えば、図1によれば、仮想マシンブローカ1Aから受信したメッセージに、物理マシンブローカ2Aの配下となる1番〜3番のコンポーネントを識別するタグ以外のタグが付与されていれば、転送部21は、物理マシンブローカ2Aを配下とする最上位のToR SWブローカ3Aに当該メッセージを転送する。
【0033】
[ToR SWブローカ]
図1では、1つのToR SWブローカ3Aが、ToR SW1に対応して示されている。
ToR SWブローカ3Aは、キュー32a〜32c(最上位キュー)と、転送部31(最上位転送部)とを備えている。
【0034】
キュー32a〜32cは、ToR SWブローカ3A自身の配下となるソフトウェアコンポーネントを宛先とするメッセージを格納し、自身の配下となる1つ下位の中間ブローカ(図1では、物理マシンブローカ2A〜2C)からのメッセージの刈り取りを受け付ける。「ToR SWブローカ3A自身の配下となるソフトウェアコンポーネント」とは、ToR SWブローカ3Aに対応するToR SW1に配置されている物理マシン1〜3に配置されている仮想マシン1〜3に配置されているコンポーネントをいう。図1に示すように、1番〜3番のコンポーネントが仮想マシン1〜3の少なくとも1つに配置されている場合、ToR SWブローカ3Aは、3つのキュー32a〜32cを備える。ToR SWブローカ3Aが備えるキューの数は、配下のコンポーネントの種類の数だけ存在し、分散システムの運用に応じて適宜増減することができる。ToR SWブローカ3Aは、ブローカの階層構造の最上位に配置される。なお、キュー32a〜32cはそれぞれ、1番〜3番のコンポーネントを識別するタグが付与されたメッセージをそれぞれ格納するキューとして機能することができる。
【0035】
転送部31は、物理マシンブローカ2A〜2Cから受信したメッセージのタグの条件に合致するキュー32a〜32cに、当該メッセージを格納する。
【0036】
図1の2番,3番のコンポーネントのように、分散システムは、同じコンポーネントを異なる仮想マシンに配置することができる。例えば、仮想マシン1に配置されている1番のコンポーネントが、3番のコンポーネントのタグを付与したメッセージを送信する場合を考える。このとき、このメッセージが、仮想マシンブローカ1Aに受信され、仮想マシン1に配置されている(1番のコンポーネントに最も近い)3番のコンポーネントに刈り取られるようにすると、通信に要する時間を大幅に短縮することができる。また、本実施形態ではメッセージキューを採用しているため、分散システムの稼働中に、仮想マシン1に配置されている3番のコンポーネントが削除されていても(破線表示)、このメッセージが、仮想マシンブローカ1A→物理マシンブローカ2A→ToR SWブローカ3A→物理マシンブローカ2B→仮想マシンブローカ1Bという経路で転送され、仮想マシン2に配置されている(1番のコンポーネントに次に近い)3番のコンポーネントに刈り取られるようにすることができ、コンポーネント同士の連携を実現させることができる。
【0037】
一般的に、メッセージの通信は、より上位層のブローカを経由するほど、実際に経由するブローカの数が多くなり時間がかかる。メッセージのやり取りを行うソフトウェアコンポーネント同士は、当該メッセージが経由するブローカの数が少ないほど近くに配置され、多いほど遠くに配置されているといえる。換言すれば、メッセージをやり取りするコンポーネント同士は、同じ仮想マシン上に配置されているときが最も近く、(異なる仮想マシン上に配置されているが)同じ物理マシン上に配置されているときがその次に近く、(異なる物理マシン上に配置されているが)同じToR SW上に配置されているときがその次に近い、といえる。
【0038】
もし、中間ブローカ(物理マシンブローカなど)について、この中間ブローカ自身の配下となるコンポーネントを宛先とするメッセージを転送可能な最下位ブローカ(仮想マシンブローカ)が複数存在する場合、中間ブローカの転送部(図1の転送部21に相当)は、これらの複数存在する最下位ブローカのいずれかにランダムにメッセージを転送することができる。このような場合は、例えば、1つの物理マシンに複数の仮想マシンが配置されている場合に該当する。宛先となるコンポーネントがこれらの仮想マシンのすべてに配置されていれば、この物理マシンに対応する物理マシンブローカの転送部は、これらの仮想マシンに対応する仮想マシンブローカのいずれかにランダムにメッセージを転送する。
【0039】
≪処理例≫
次に、本実施形態の分散システムが実行できるさまざまな処理について、具体例を用いて説明する。具体例としては、商品検索サービスシステムを採り上げる。商品検索サービスシステムは、複数の言語に対応可能なテキストを用いた商品検索を実現する分散システムである。
【0040】
図2に示すように、商品検索サービスシステムは、Webサーバ41と、言語変換サーバ42とを備える。Webサーバ41は、利用者の端末Tがテキストの入力を行うことができるインターフェイスをオンライン上に提供するサーバである。言語変換サーバ42は、端末Tから入力されたテキストの言語を所望の言語に変換するサーバである。本例では、言語として、日本語、英語、中国語を扱うが、これらに限定されない。
【0041】
Webサーバ41は、検索結果表示機能sc1と、検索要求受付機能sc2と、言語判定機能sc3とを備える。
検索結果表示機能sc1は、検索結果を、言語変換サーバ42にて変換された言語で端末Tに表示させる。
検索要求受付機能sc2は、端末Tからの検索キーとなるテキストを受け付ける。
言語判定機能sc3は、検索キーとなるテキストに使用されている言語を判定する。
【0042】
言語変換サーバ42は、英和変換機能sc4と、中和変換機能sc5とを備える。
英和変換機能sc4は、日本語のテキストを英語に変換したり、英語のテキストを日本語に変換したりする。
中和変換機能sc5は、日本語のテキストを中国語に変換したり、中国語のテキストを日本語に変換したりする。
【0043】
検索結果表示機能sc1、検索要求受付機能sc2、言語判定機能sc3、英和変換機能sc4、および、中和変換機能sc5は、ソフトウェアコンポーネントであり、独立した実行単位で、複数の物理マシンや仮想マシンなどに配置されている。検索結果表示機能sc1、検索要求受付機能sc2、言語判定機能sc3、英和変換機能sc4、および、中和変換機能sc5が連携することで、商品検索が実現される。
【0044】
具体的には、まず、端末Tからの検索キーの入力により、検索結果表示機能sc1が、日本語、英語、中国語のいずれかの言語で記されたテキストを受信する(ステップA1)。次に、検索要求受付機能sc2、言語判定機能sc3、英和変換機能sc4、および、中和変換機能sc5の間で連携し合い、入力された検索キーの言語が判定され、所定の言語に変換される(ステップA2)。最後に、言語判定機能sc3、英和変換機能sc4、および、中和変換機能sc5による処理結果が検索結果表示機能sc1に渡される(ステップA3)。検索結果表示機能sc1は、言語変換された検索結果を端末Tに表示させる。
【0045】
なお、図2の商品検索サービスシステムは、管理装置5を備えることができる。管理装置5は、商品検索サービスシステムを分散システムとして機能させるコンソールである。管理装置5は、sc管理部51を備える。sc管理部51は、検索結果表示機能sc1、検索要求受付機能sc2、言語判定機能sc3、英和変換機能sc4、および、中和変換機能sc5を監視して制御する。
【0046】
sc管理部51は、動作中のコンポーネントの障害や負荷状態の通知を、Webサーバ41や言語変換サーバ42から受けて、新たなコンポーネントを追加したり、既存のコンポーネントを削除したりすることができる。新たなコンポーネントを追加する場合、sc管理部51は、コンポーネントデータベース52にアクセスして、コンポーネント生成に必要なファイルを取得することができる。
【0047】
[負荷分散を重視する場合]
商品検索サービスシステムは、従来の分散システムによる負荷分散と同等の負荷分散を実現することができる。図3に示すように、商品検索サービスシステムは、ToR SW1,2と、物理マシン1,2と、仮想マシン1〜3とを備えている。ToR SW1,2と、物理マシン1,2と、仮想マシン1〜3からなる階層構造は、Webサーバ41および言語変換サーバ42の組み合わせに等しい。
【0048】
物理マシン1は、ToR SW1に配置されている。物理マシン2は、ToR SW2に配置されている。
仮想マシン1は、物理マシン1に配置されている。仮想マシン2は、物理マシン2に配置されている。仮想マシン3は、物理マシン2に配置されている。
検索要求受付機能sc2は、仮想マシン1に配置されている。言語判定機能sc3および英和変換機能sc4−1(英和変換機能sc4と同等)は、仮想マシン2に配置されている。英和変換機能sc4−2(英和変換機能sc4と同等)および中和変換機能sc5は、仮想マシン3に配置されている。
【0049】
仮想マシン1に対応する仮想マシンブローカ1Dは、検索要求受付キューq2を備えている。検索要求受付機能sc2は、検索要求受付キューq2に格納されているメッセージを刈り取ることができる。
仮想マシン2に対応する仮想マシンブローカ1Eは、言語判定キューq3および英和変換キューq4−1を備えている。言語判定機能sc3は、言語判定キューq3に格納されているメッセージを刈り取ることができる。英和変換機能sc4−1は、英和変換キューq4−1に格納されているメッセージを刈り取ることができる。
仮想マシン3に対応する仮想マシンブローカ1Fは、英和変換キューq4−2および中和変換キューq5を備えている。英和変換機能sc4−2は、英和変換キューq4−2に格納されているメッセージを刈り取ることができる。中和変換機能sc5は、中和変換キューq5に格納されているメッセージを刈り取ることができる。
【0050】
ToR SW1,2に対応するToR SWブローカ3Bは、検索要求受付キューq12、言語判定キューq13、英和変換キューq14、中和変換キューq15、および、検索結果表示キューq11を備えている。
物理マシン1に対応する物理マシンブローカ2Dは、配下にある検索要求受付機能sc2、言語判定機能sc3および英和変換機能sc4−1の存在のため、検索要求受付キューq12に格納されているメッセージ、言語判定キューq13に格納されているメッセージ、および、英和変換キューq14に格納されているメッセージを刈り取ることができる。
物理マシン2に対応する物理マシンブローカ2Eは、配下にある英和変換キューq4−2および中和変換キューq5の存在のため、英和変換キューq4−2に格納されているメッセージ、および、中和変換キューq5に格納されているメッセージを刈り取ることができる。
検索結果表示キューq11は、配下に検索結果表示機能sc1(図2)を有する物理マシンブローカ(図示せず)からのメッセージの刈り取りを受け付ける。
【0051】
言語判定機能sc3が検索要求受付機能sc2と連携するとき、端末Tからの検索キーのメッセージは、「言語判定機能」のタグが付与された態様で、検索要求受付機能sc2→仮想マシンブローカ1D→物理マシンブローカ2D→仮想マシンブローカ1Eを経由して言語判定キューq3に格納される。そして、言語判定機能sc3は、言語判定キューq3に格納されているメッセージを刈り取り、言語判定を行う。言語判定結果が英語であった場合、言語判定機能sc3は、送信しようとするメッセージに「英和変換機能」のタグを付与して、このメッセージを英和変換機能sc4−1,sc4−2のいずれかに送る。
【0052】
ここで、商品検索サービスシステムが、分散システムが従来から目的とする負荷分散を重視する場合、言語判定機能sc3は、対象のメッセージを、言語判定機能sc3を配下とする最上位のブローカであるToR SWブローカ3Bに送信する(ステップB1)。つまり、言語判定機能sc3は、自身を配下とする仮想マシンブローカ1Eには送信しない。ToR SWブローカ3Bに送信されたメッセージは、英和変換キューq14に格納される。
【0053】
その後、英和変換機能sc4−1を配下とする物理マシンブローカ2D(ToR SWブローカ3Bの1つ下位のブローカ)、および、英和変換機能sc4−2を配下とする物理マシンブローカ2E(ToR SWブローカ3Bの1つ下位のブローカ)のいずれかは、処理待ち状態になり次第、英和変換キューq14からメッセージを刈り取る(ステップB2)。結果的に、メッセージは、英和変換キューq4−1に格納された後、英和変換機能sc4−1に刈り取られて言語変換されるか、英和変換キューq4−2に格納された後、英和変換機能sc4−2に刈り取られて言語変換されるか、のいずれかの手順を辿る。ただし、いずれの手順を辿ったとしても、言語変換された同じ検索結果のメッセージが検索結果表示キューq11に格納され、検索結果表示機能sc1(図2)に送信され、端末Tに表示されるように処理される。
【0054】
上記のように、最上位のブローカにメッセージが優先的に送信されるようにしておくことで、そのメッセージの宛先となるコンポーネントを不定にすることができ、負荷分散を実現することができる。
【0055】
[NW帯域削減や応答遅延低減を重視する場合]
商品検索サービスシステムは、従来の分散システムでは困難となる、NW帯域を意図的に削減したり応答遅延を意図的に低減させたりすることができる。図4に示す商品検索サービスシステムの構成は、図3のものと同じである。
【0056】
言語判定機能sc3が検索要求受付機能sc2と連携し、言語判定を行う。ここで、商品検索サービスシステムが、NW帯域削減や応答遅延低減を重視する場合、言語判定機能sc3は、言語判定結果が英語であったときには、送信しようとするメッセージに「英和変換機能」のタグを付与して、このメッセージを、言語判定機能sc3に近いブローカに送信する(ステップC1)。つまり、言語判定機能sc3は、言語判定機能sc3自身を配下とする最下位の仮想マシンブローカ1Eに送信する。
【0057】
仮想マシンブローカ1Eは、配下に英和変換機能sc4−1が存在するため、言語判定機能sc3から受信したメッセージを英和変換キューq4−1に格納する。言語判定機能sc3と同じ仮想マシン(仮想マシン2)上にいる英和変換機能sc4−1は、処理待ち状態になり次第、英和変換キューq4−1からメッセージを刈り取る(ステップC2)。その後、言語変換された検索結果のメッセージが検索結果表示機能sc1(図2)に送信され、端末Tに表示されるように処理される。
【0058】
また、言語判定機能sc3は、言語判定結果が中国語であったときには、送信しようとするメッセージに「中和変換機能」のタグを付与して、このメッセージを、言語判定機能sc3に近いブローカに送信する(ステップD1)。仮想マシンブローカ1Eは、配下に中和変換機能sc5と同等のコンポーネントが存在しないため、メッセージを上位のブローカ、つまり、物理マシンブローカ2Dに転送する。
【0059】
物理マシンブローカ2Dも、配下に中和変換機能sc5と同等のコンポーネントが存在しないため、メッセージを上位のブローカ、つまり、ToR SWブローカ3Bに転送する(ステップD2)。ToR SWブローカ3Bに送信されたメッセージは、中和変換キューq15に格納される。なお、仮に、物理マシンブローカ2Dの配下に中和変換機能sc5と同等のコンポーネントが存在する場合、物理マシンブローカ2Dは、そのコンポーネントにメッセージを転送する。
【0060】
メッセージが中和変換キューq15に格納された後、中和変換機能sc5を配下とする物理マシンブローカ2E(ToR SWブローカ3Bの1つ下位のブローカ)は、処理待ち状態になり次第、中和変換キューq15からメッセージを刈り取る(ステップD3)。結果的に、メッセージは、中和変換キューq5に格納された後、中和変換機能sc5に刈り取られて言語変換される。言語変換された検索結果のメッセージは、検索結果表示キューq11に格納され、検索結果表示機能sc1(図2)に送信され、端末Tに表示されるように処理される。
【0061】
上記のように、最下位のブローカにメッセージが優先的に送信されるようにしておくことで、そのメッセージの宛先となるコンポーネントを、メッセージを送信するコンポーネントに最も近いコンポーネントにすることができ、NW帯域削減や応答遅延低減を実現することができる。
【0062】
[応答遅延範囲を指定した場合]
商品検索サービスシステムは、ソフトウェアコンポーネントが送信するメッセージに、宛先となるソフトウェアコンポーネントが受信するまでの応答遅延範囲を指定することができる。応答遅延範囲は、メッセージの送信から受信までに要する時間の許容量を表す。図5に示す商品検索サービスシステムの構成は、図3図4のものに、さらに、管理装置5を備えたものと同じである。
【0063】
例えば、中国語の翻訳を高速に行いたい場合について説明する。この場合、検索要求受付機能sc2と連携している言語判定機能sc3は、言語判定結果が中国語であったときには、送信しようとするメッセージに「中和変換機能」のタグを付与するとともに、例えば、「送信元と同じ仮想マシン上のコンポーネントを宛先とする」という応答遅延範囲を指定することができる。言語判定機能sc3は、この応答遅延範囲を含むメッセージを、言語判定機能sc3に近いブローカに送信する(ステップE1)。つまり、言語判定機能sc3は、言語判定機能sc3自身を配下とする最下位の仮想マシンブローカ1Eにメッセージを送信する。
【0064】
言語判定機能sc3がメッセージを送信する時点では、仮想マシン2には中和変換機能sc5と同等のコンポーネントが配置されていないとする。仮想マシンブローカ1Eは、言語判定機能sc3から受信したメッセージに含まれる応答遅延範囲を読み出し、応答遅延範囲を満たすことができるいずれの通信レイヤ(本例では、仮想マシン2のみ)にも、宛先となるソフトウェアコンポーネント(本例では、中和変換機能sc5と同等のコンポーネント)が配置されていないと判断する。
【0065】
そこで、仮想マシンブローカ1Eは、仮想マシン2に、中和変換機能sc5と同等のコンポーネントを追加配置(デプロイ)することを、管理装置5に要求する(ステップE2)。管理装置5のsc管理部51は、中和変換機能sc5と同等のコンポーネントとなる中和変換機能sc6を生成し、仮想マシン2に払い出す(デプロイ)する(ステップE3)。また、sc管理部51は、商品検索サービスシステムの各ブローカに対し、この中和変換機能sc6の払い出しのことを通知する。仮想マシンブローカ1Eは、中和変換機能sc6が刈り取るメッセージを格納する中和変換キューq6を生成する。
【0066】
結果的に、言語判定機能sc3からのメッセージは、中和変換キューq6に格納された後、中和変換機能sc6に刈り取られて言語変換される。言語変換された検索結果のメッセージは、検索結果表示キューq11に格納され、検索結果表示機能sc1(図2)に送信され、端末Tに表示されるように処理される。
【0067】
上記のように、コンポーネントの追加配置を行うことで、メッセージに付与された応答遅延範囲を確実に満たすことができる。
なお、応答遅延範囲は、例えば、許容される応答遅延時間からメッセージが通過可能なブローカの数を、メッセージの転送回数の上限値として算出することができる。転送されるメッセージには、当該メッセージが実際に通過したブローカの数をカウントする機能を具備しておき、メッセージを受信した各ブローカは、カウントした数が前記上限値を超えたか否かを判断することで、応答遅延範囲を満たすか否かの判断が実現される。カウントした数が上限値を超えていた場合、ブローカから管理装置5へのデプロイの要求がなされる。
【0068】
(まとめ)
本実施形態によれば、連携するソフトウェアコンポーネント同士でやり取りされるメッセージを転送するブローカに階層構造を持たせている。階層の異なるブローカ間でのメッセージの転送を制御することで、負荷分散に適したメッセージの転送経路と、NW帯域削減や通信遅延などの通信性能の向上に適したメッセージの転送経路との両方を確保することができる。
したがって、メッセージキューを利用したソフトウェアコンポーネント間の通信において、負荷分散の性能を向上させるとともに通信性能も向上させることができる。
【0069】
また、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とする仮想マシンブローカにメッセージを送信し、ブローカの階層の下位から順にメッセージを転送する。各ブローカは、宛先となるソフトウェアコンポーネントが配下に存在すれば、そのソフトウェアコンポーネントに向けてメッセージを転送する。これにより、通信性能の向上に適したメッセージの転送経路にメッセージを辿らせることができ、宛先となるソフトウェアコンポーネントのうち、送信元のソフトウェアコンポーネントに最も近いソフトウェアコンポーネントに、メッセージを確実に転送することができる。
したがって、メッセージの通信性能を向上させることができる。
【0070】
また、メッセージを送信しようとするソフトウェアコンポーネントが、自身を配下とするToR SWブローカにメッセージを送信し、1つ下位の物理マシンブローカにメッセージを刈り取らせる。これにより、負荷分散に適したメッセージの転送経路にメッセージを辿らせることができ、メッセージの負荷分散を確実に実現することができる。
【0071】
また、メッセージに応答遅延範囲を指定することで、必要に応じて、応答遅延範囲を満たすようにソフトウェアコンポーネントを追加的に払い出すことを可能にする。これにより、応答遅延を所定量以下に抑えたメッセージの転送を確実に実現することができる。
【0072】
また、ToR SW、物理マシン、仮想マシンからなる通信レイヤの階層構造に対し、仮想マシンブローカ、物理マシンブローカ、ToR SWブローカからなるブローカの階層構造を形成することで、メッセージング技術を利用した最適な分散システムを構築することができる。
【0073】
≪その他≫
(1)本実施形態の分散システムは、通信レイヤの階層構造が3層であり、ブローカの階層構造も3層であったが、通信レイヤの階層構造を4層以上とし、ブローカの階層構造も4層以上としてもよい。この場合、中間ブローカは2種類以上存在することになり、中間ブローカの種類ごとに階層の上下関係が定められた階層構造が形成される。このような階層構造では、コンポーネントと最下位ブローカとの間のメッセージの転送、最下位ブローカと最下位ブローカの1つ上位の中間ブローカとの間のメッセージの転送、中間ブローカと当該中間ブローカの1つ上位の中間ブローカとの間のメッセージの転送、最上位ブローカと最上位ブローカの1つ下位の中間ブローカとの間のメッセージの転送が行われる。
【0074】
特に、通信レイヤの階層構造が4層である場合、DC、ToR SW、物理マシン、仮想マシンがこの順で配置される通信レイヤの階層構造とすることができる。この場合、仮想マシンブローカが最下位ブローカになり、物理マシンブローカが下位の中間ブローカになり、ToR SWブローカが上位の中間ブローカになり、DCに対応するDCブローカが最上位ブローカになる。
【0075】
(2)また、本実施形態の分散システムが、通信レイヤの階層構造を2層とし、ブローカの階層構造も2層としてもよい。この場合、中間ブローカは存在しないことになり、最下位ブローカと最上位ブローカとで定められた階層構造が形成される。このような階層構造では、コンポーネントと最下位ブローカとの間のメッセージの転送、最下位ブローカと最上位ブローカとの間のメッセージの転送が行われる。
【0076】
(3)本実施形態の中間ブローカ(図1の物理マシンブローカ2A〜2C、図3図5の物理マシンブローカ2D,2Eなど)がメッセージを格納するキューを具備してもよい。この場合、中間ブローカのキューに格納されたメッセージは、処理待ち状態になった最下位のブローカ、または、1つ下位の中間ブローカによって刈り取られる。
【0077】
(4)図3図5に示す分散システム(商品検索サービスシステム)において、最下位の通信レイヤである2つのToR SW1,2に対して、最上位ブローカは、1つのToR SWブローカ3Bを用意した。しかし、2つのToR SW1,2に対応する2つのToR SWブローカを用意してもよい。また、ToR SWの数と同数のToR SWブローカを用意してもよい。つまり、最上位ブローカが複数存在してもよい。
【0078】
このとき、最上位ブローカの各々は、自身の配下にあるソフトウェアコンポーネントにメッセージを転送するためのキューを備える。自身の配下にないコンポーネントを受信した最上位ブローカは、そのコンポーネントを配下とする別の最上位ブローカにメッセージを転送するようにしてもよい。また、通信レイヤには対応していないものの、複数の最上位ブローカの1つ上位のブローカを新たに用意し、その新たなブローカを最上位ブローカとして機能させてもよい。この場合、複数の元最上位ブローカは、新たな最上位ブローカのキューに格納されているメッセージを刈り取ることができる。
【0079】
(5)本実施形態では、最上位ブローカの1つ下位にあるブローカは、最上位ブローカのキューからランダムにメッセージを刈り取るようにした。しかし、例えば、最上位ブローカの1つ下位にあるブローカは、そのブローカの配下となるコンポーネントの負荷(稼働状況)を収集し、負荷の小さなコンポーネントを配下とするブローカが優先的に、最上位ブローカのキューからメッセージを刈り取るようにしてもよい。これにより、負荷分散をさらに効率よく実現することができる。
【0080】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【0081】
1A〜1F 仮想マシンブローカ(最下位ブローカ)
2A〜2E 物理マシンブローカ(中間ブローカ)
3A,3B ToR SWブローカ(最上位ブローカ)
11 転送部(最下位転送部)
12a〜12c キュー(最下位キュー)
21 転送部(中間転送部)
31 転送部(最上位キュー)
32a〜32c キュー(最上位キュー)
41 Webサーバ
42 言語変換サーバ
5 管理装置
51 sc管理部
sc1 検索結果表示機能(ソフトウェアコンポーネント)
sc2 検索要求受付機能(ソフトウェアコンポーネント)
sc3 言語判定機能(ソフトウェアコンポーネント)
sc4,sc4−1,sc4−2 英和変換機能(ソフトウェアコンポーネント)
sc5 中和変換機能(ソフトウェアコンポーネント)
q2 検索要求受付キュー(最下位キュー)
q3 言語判定キュー(最下位キュー)
q4−1,q4−2 英和変換キュー(最下位キュー)
q5,q6 中和変換キュー(最下位キュー)
q11 検索結果表示キュー(最上位キュー)
q12 検索要求受付キュー(最上位キュー)
q13 言語判定キュー(最上位キュー)
q14 英和変換キュー(最上位キュー)
q15 中和変換キュー(最上位キュー)
図1
図2
図3
図4
図5