(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-10
(45)【発行日】2023-01-18
(54)【発明の名称】情報処理装置、配送プログラムおよび分散処理システム
(51)【国際特許分類】
H04L 67/55 20220101AFI20230111BHJP
H04L 43/02 20220101ALI20230111BHJP
【FI】
H04L67/55
H04L43/02
(21)【出願番号】P 2019090495
(22)【出願日】2019-05-13
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(72)【発明者】
【氏名】長田 菜美
(72)【発明者】
【氏名】上野 仁
(72)【発明者】
【氏名】榎並 孝司
(72)【発明者】
【氏名】山崎 公敬
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2017-224032(JP,A)
【文献】米国特許出願公開第2018/0167476(US,A1)
【文献】特開2018-148560(JP,A)
【文献】川口 遼 Ryo Kawaguchi,MQTTにおける地理的分散Brokerシステムの開発,電子情報通信学会2018年通信ソサイエティ大会講演論文集2 PROCEEDINGS OF THE 2018 IEICE COMMUNICATIONS SOCIETY CONFERENCE,日本,2018年08月28日
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/50
H04L 43/02
H04Q 9/00
(57)【特許請求の範囲】
【請求項1】
外部拠点に配備されているプロキシからサブスクライブを受信した場合、自拠点内に配備されているブローカと、該ブローカで受けているパブリッシュのトピックとを対応づけるブローカ管理情報において、前記サブスクライブで配送が要求されるトピックに対応づけられているブローカに、前記サブスクライブを転送する転送部、
を含む、情報処理装置。
【請求項2】
前記自拠点内に配備されているサブスクライバから第2のサブスクライブを受信した場合、前記第2のサブスクライブで配送が要求されるトピックの情報を用いて、前記第2のサブスクライブの配送先を示す情報を取得する取得部、
を更に含み、
前記転送部は、前記取得部で取得した前記配送先を示す情報に他の拠点が含まれている場合、前記他の拠点に配備されているプロキシを代表する代表プロキシに前記第2のサブスクライブを転送する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記転送部は、前記取得部で特定した前記配送先に前記自拠点が含まれている場合、前記自拠点に配備されているブローカのうちで、前記取得部で取得した前記配送先のブローカに前記第2のサブスクライブを転送する、
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
外部拠点に配備されているプロキシからサブスクライブを受信した場合、拠点内に配備されているブローカと、該ブローカで受けているパブリッシュのトピックとを対応づけるブローカ管理情報において、前記サブスクライブで配送が要求されるトピックに対応づけられているブローカに、前記サブスクライブを転送する、
処理をコンピュータに実行させる配送プログラム。
【請求項5】
第1の拠点に配備されている第1のプロキシと、
前記第1の拠点とは異なる第2の拠点に配備されているプロキシを代表する第2のプロキシと、
を含む、分散処理システムであって、
前記第1のプロキシは、
サブスクライバからサブスクライブを受信した場合、前記サブスクライブで配送が要求されるトピックの情報を用いて、前記サブスクライブの配送先を示す情報を取得し、
前記配送先を示す情報に前記第2の拠点が含まれている場合、前記第2の拠点に配備されているプロキシを代表する前記第2のプロキシに前記サブスクライブを転送し、
前記第2のプロキシは、
前記第1のプロキシから前記サブスクライブを受信した場合、前記第2の拠点内に配備されているブローカと、前記ブローカで受けているパブリッシュのトピックとを対応づけるブローカ管理情報において、前記サブスクライブで配送が要求されるトピックに対応づけられているブローカに、前記サブスクライブを配送する、
ことを特徴とする、分散処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、配送プログラムおよび分散処理システムに関する。
【背景技術】
【0002】
パブリッシュ・サブスクライブモデルのデータ収集方法が知られている。このデータ収集方法では、サブスクライバが、ブローカを介してパブリッシャからのデータを取得する。パブリッシャは、データを提供する側であり、サブスクライバを意識することなく、ブローカにデータを送る。サブスクライバは、データを利用する側であり、パブリッシャを意識することなく、ブローカにデータを要求する。
【0003】
また、IoT(Internet of Things)の進展にともなって、エンドデバイスが生み出すデータ量が増加し、全てのデータの処理やデバイスの制御をクラウドで行うことが難しくなってきている。このため、エッジコンピューティングによる分散処理環境に注目が集まっている。エッジコンピューティングは、コンピュータネットワーク上で、利用者に近い場所に複数のエッジ装置を配置して、負荷の分散と通信の低遅延化を図る技術である。
【0004】
これに関し、パブリッシュ・サブスクライブモデルにおける負荷分散に関連する技術が知られている。(例えば、特許文献1および特許文献2)
【先行技術文献】
【特許文献】
【0005】
【文献】特開2017-224032号公報
【文献】特開2009-110165号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、エッジコンピューティングによる分散処理システムにおいて、パブリッシュ・サブスクライブモデルのデータ収集方法を用いる場合に、拠点間でサブスクライブの無駄な通信が発生することがある。
【0007】
1つの側面では、本発明は、拠点間でのサブスクライブの通信量を削減することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一つの態様の情報処理装置は、外部拠点に配備されているプロキシからサブスクライブを受信した場合、自拠点内に配備されているブローカと、ブローカで受けているパブリッシュのトピックとを対応づけるブローカ管理情報において、サブスクライブで配送が要求されるトピックに対応づけられているブローカに、サブスクライブを転送する転送部、を含む。
【発明の効果】
【0009】
拠点間でのサブスクライブの通信量を削減することができる。
【図面の簡単な説明】
【0010】
【
図1】例示的なパブリッシュ・サブスクライブモデルを示す図である。
【
図3】例示的な分散処理システムのシステム構成を示す説明図である。
【
図4】拠点管理部およびプロキシを配備した例示的な分散処理システムを示す図である。
【
図7】プロキシによるメッセージの宛先変更を例示する図である。
【
図8】例示的な分散処理システムにおけるパブリッシャの増加を示す図である。
【
図9】配備するプロキシとブローカとを増やした分散処理システムの構成を示す図である。
【
図10】実施形態に係るサーバの機能ブロック構成を例示する図である。
【
図11】実施形態に係るプロキシの機能ブロック構成を例示する図である。
【
図12】実施形態に係る拠点管理情報を例示する図である。
【
図13】実施形態に係るブローカ管理情報を例示する図である。
【
図14】実施形態に係る拠点管理部が実行する配送先通知処理の動作フローを例示する図である。
【
図15】実施形態に係るプロキシの制御部が実行するパブリッシュの配送処理の動作フローを例示する図である。
【
図16】実施形態に係る代表プロキシに送信されるメッセージを例示する図である。
【
図17】実施形態に係る代表プロキシとして動作するプロキシによるパブリッシュの配送処理の動作フローを例示する図である。
【
図18】実施形態に係るプロキシの制御部が実行するサブスクライブの配送処理の動作フローを例示する図である。
【
図19】実施形態に係る代表プロキシとして動作するプロキシの制御部が実行するサブスクライブの配送処理の動作フローを例示する図である。
【
図20】実施形態に係る代表プロキシを介したパブリッシュの配送の流れを例示する図である。
【
図21】実施形態に係る代表プロキシを介したサブスクライブの配送の流れを例示する図である。
【
図22】実施形態に係るサーバ、エッジ装置EG、ゲートウェイ装置GWなどを実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【0012】
上述のように、パブリッシュ・サブスクライブモデルのデータ収集方法が知られている。以下、
図1および
図2を参照して、例示的なパブリッシュ・サブスクライブモデルのデータ収集を説明する。
【0013】
(パブリッシュ・サブスクライブモデル)
図1は、例示的なパブリッシュ・サブスクライブモデルを示す図である。パブリッシュ・サブスクライブモデルのデータ収集方法では、パブリッシャ101がパブリッシュしたデータは、ブローカ102を介してサブスクライバ103に提供される。
【0014】
パブリッシャ101は、データを提供するものであるが、そのデータに関心のあるサブスクライバ103(例えば、アプリケーション)に関する情報は有していなくてもよく、ブローカ102のトピックを送信先としてデータを送信する。パブリッシャ101は、例えば、工場などに設置される生産機器、組立機器、センサ、カメラなどの機器である。パブリッシャ101は、これらの機器で収集されたデータをパブリケーションと呼ばれるメッセージ形式で生成し、これらのメッセージのトピックを定義して、ブローカ102に送信する。
【0015】
また、サブスクライバ103は、データを要求するものである。サブスクライバ103は、データの収集を行うパブリッシャ101に関する情報は有していなくてもよく、ブローカ102にトピックの情報の配信を申し込んで、配信を申し込んだトピックに登録されるメッセージの配信を受ける。サブスクライバ103は、例えば、パブリッシャ101で取集されたデータを用いて実行される処理(アプリケーション)である。
【0016】
続いて、ブローカ102の動作例について説明する。ブローカ102は、パブリッシャ101とサブスクライバ103との間でのデータのやり取りを仲介する。
【0017】
図2は、ブローカ102の動作例を示す説明図である。
図2において、各サブスクライバ103(#1~#4)は、ブローカ102に対して、トピックのデータを要求する登録を行う。また、各パブリッシャ101(#1~#3)は、トピックとデータとを含むメッセージ20をブローカ102宛に送信する。
【0018】
トピックは、データの特徴を表す情報であり、例えば、データのタイトル、種類、形式などを示す情報であってよい。
【0019】
ブローカ102は、どのサブスクライバ103が、どのトピックのデータの配信を申し込んだかを管理している。
図2の例では、ブローカ102は、トピックとサブスクライバIDとを対応付けて記憶する配信管理情報200を用いて、サブスクライバ103とトピックとの対応関係を管理する。サブスクライバIDは、サブスクライバ103を一意に識別する識別子である。例えば、ブローカ102は、サブスクライバ103からトピックのデータの配信の申し込みを受けると、そのサブスクライバ103のサブスクライバIDを、配信の申し込みのあったトピックと対応づけて配信管理情報200に登録する。
【0020】
そして、ブローカ102は、例えば、パブリッシャ:#1からのトピック1とデータとを含むメッセージ20を受け付けると、トピック1のメッセージ・キューにメッセージ20を入れる。そして、ブローカ102は、トピック1のメッセージ・キューに入れたメッセージ20を先に入れたものから順に、配信管理情報200を参照して、トピック1のデータを要求したサブスクライバ#1,#2宛に送る。
【0021】
なお、以下の説明では、サブスクライバ103が、あるトピックのデータを要求する登録を行うこと、あるいは、あるトピックのデータを要求するメッセージ自体を「サブスクライブ」と呼ぶことがある。また、パブリッシャ101が、トピックとデータとを含むメッセージを送信すること、あるいは、トピックとデータとを含むメッセージ自体を「パブリッシュ」と呼ぶことがある。
【0022】
このようなパブリッシュ・サブスクライブモデルのデータ収集方法は、例えば、データをどのように用いるかは決まっていないものの、次々とデータを収集していくようなシステムなどに利用されている。そして、例えば、
図3に示すような、エッジコンピューティングによる分散処理システム300において、パブリッシュ・サブスクライブモデルのデータ収集方法を用いることがある。
【0023】
図3は、例示的な分散処理システム300のシステム構成を示す説明図である。
図3において、分散処理システム300は、拠点B0~Bn(n:1以上の自然数)を含む。拠点B0~Bnは、一例ではネットワークごとに区分されていてよい。例えば、拠点は、インターネット、キャリア網などの広域網とファイアウォールおよびゲートウェイ装置GWを介して接続しているローカル網が設置される場所であってよく、拠点間の通信は外部の広域網を介して行われてよい。例えば、分散処理システム300において、拠点B0~Bnの拠点間は、ネットワーク310を介して相互に通信可能に接続される。ネットワーク310は、例えば、広域通信網(WAN:Wide Area Network)、インターネットである。
【0024】
拠点B0は、サーバ301を含む。サーバ301は、例えば、クラウドコンピューティングのサーバコンピュータである。以下の説明では、拠点B0を「クラウド」と表記する場合がある。
【0025】
また、拠点B0を除く拠点B1~Bnのうちの任意の拠点を「拠点Bi」と表記する場合がある(i=1,2,…,n)。拠点Biは、エッジ装置EGと、ゲートウェイ装置GWとを含む。拠点Biにおいて、エッジ装置EGと、ゲートウェイ装置GWとは、ネットワーク320を介して相互に通信可能に接続される。ネットワーク320は、例えば、構内通信網(LAN:Local Area Network)である。
【0026】
ゲートウェイ装置GWは、近距離無線通信または有線通信により、デバイスdvから送出されるデータを受信する情報処理装置である。近距離無線通信としては、無線LAN、Bluetooth(登録商標)などを利用した通信が挙げられる。また、ゲートウェイ装置GWは、デバイスdvから受信したデータを、他のコンピュータ(例えば、エッジ装置EG、サーバ301)に中継する機能を有する。ゲートウェイ装置GWは、例えば、無線LANやBluetooth(登録商標)などのアクセスポイントであってよく、また、サーバやパーソナルコンピュータ(PC)であってもよい。また、デバイスdvは、例えば、工場などに設置される生産機器、組立機器、センサ、カメラなどの機器である。
【0027】
エッジ装置EGは、各種処理を行う情報処理装置である。エッジ装置EGは、エッジコンピューティングにおけるエッジサーバであり、サーバ301(クラウド)に比べて、デバイスdvやユーザに近い位置に配置される。エッジ装置EGは、例えば、サーバ、PC、アクセスポイントなどである。
【0028】
なお、
図3の例では、拠点Bi内のエッジ装置EGおよびゲートウェイ装置GWを、それぞれ1台だけ示しているが、実施形態はこれに限定されるものではない。例えば、拠点Biは、2台以上のエッジ装置EGおよびゲートウェイ装置GWを含んでいてもよい。また、サーバ301は、複数のコンピュータにより実装されてもよい。
【0029】
そして、例えば、以上のような分散処理システム300において、デバイスdvは、パブリッシャ101として動作してよい。また、例えば、サーバ301、エッジ装置EG、およびゲートウェイ装置GWには、サブスクライバ103として動作する処理(例えば、アプリケーション)が配備されていてよい。また更に、サーバ301、エッジ装置EG、およびゲートウェイ装置GWには、ブローカ102として動作するアプリケーションが配備されていてもよい。
【0030】
ここで、例えば、以上のような分散処理システム300において、パブリッシュ・サブスクライブモデルのデータ収集方法を用いる場合に、クラウド上だけでなく、拠点側にもブローカ102を配置することが望ましいことがある。
【0031】
例えば、ある拠点Biに配置されているパブリッシャ101(例えば、デバイスdv)がパブリッシュするデータを利用するサブスクライバ103(例えば、処理(アプリケーション))を、クラウド上からその拠点Biに移動したとする。この場合にも、ブローカ102がクラウドにあると、データを一旦クラウドに送ることになり、拠点側にサブスクライバ103を移動した効果が得られなくなる恐れがある。そのため、クラウドからサブスクライバ103を移動した拠点側にもブローカ102を配置することが望ましい。
【0032】
一方で、パブリッシャ101となる各拠点内のデバイス(例えば、デバイスdv)は、メッセージ(パブリッシュ)の宛先を変更することが難しいことがある。例えば、パブリッシャ101となる各拠点内のデバイスdvは、分散処理システム300のサーバ301からの遠隔制御を受け付けないことがある。この場合、拠点側にブローカ102を移動した際に、デバイスdvのメッセージ(パブリッシュ)の宛先を、クラウドのブローカ102から拠点側のブローカ102に変更することが難しいことがある。
【0033】
このため、例えば、クラウドにメッセージの配送先を管理する拠点管理部401を配備し、また、拠点にプロキシ402を配備して、プロキシ402でメッセージの配送先を制御することが考えられる。
【0034】
図4は、拠点管理部401およびプロキシ402を配備した例示的な分散処理システム300を示す図である。なお、プロキシ402は、一例では、サーバ301、エッジ装置EG、およびゲートウェイ装置GWにおいて、アプリケーションとして配備されてよい。
【0035】
図4の例では、拠点B0(クラウド)上のサーバ301には、拠点管理部401、およびプロキシ402が配備されている。また、サーバ301には、ブローカ102と、サブスクライバ103としてトピックBのデータを用いて処理を実行する処理BおよびトピックCのデータを用いて処理を実行する処理Cとが配備されている。
【0036】
また、例えば、
図4では、拠点B1には、パブリッシャ101としてセンサAおよびセンサBと、ブローカ102と、サブスクライバ103としてトピックAのデータを用いて処理を実行する処理Aと、プロキシ402とが配備されている。拠点B2には、プロキシ402と、パブリッシャ101としてセンサCとが配備されている。
【0037】
続いて、
図4を参照して、プロキシ402を介したメッセージの配送の流れについて説明する。
【0038】
(パブリッシュのプロキシを介した配送例)
まず、パブリッシュのプロキシ402を介した配送例について説明する。例えば、パブリッシャ101は、プロキシ402に宛ててメッセージ(パブリッシュ)を送信するように設定されてよい。例えば、
図4の拠点B1では、パブリッシャ101であるセンサAは、センサで検出したデータとそのデータのトピックとを含むパブリッシュをプロキシ402に宛てて送信する(
図4の(1a))。
【0039】
プロキシ402は、例えば、データを受信すると、データの配送先となるブローカ102を、クラウドの拠点管理部401に問い合わせる(
図4の(2a))。
【0040】
図5は、プロキシ402がメッセージの配送先を問い合わせるために拠点管理部401に送信する配送先提供依頼500を例示する図である。配送先提供依頼500は、例えば、メッセージ種別と、拠点IDと、トピックとを含んでよい。メッセージ種別は、プロキシ402が配送先の問い合わせを行うメッセージの種別を示す情報である。例えば、パブリッシャ101から通知されたパブリッシュの配送先を拠点管理部401に問い合わせる場合、プロキシ402は、メッセージ種別にパブリッシュを示す情報を登録してよい。また、例えば、サブスクライバ103から通知されたサブスクライブの配送先を拠点管理部401に問い合わせる場合、プロキシ402は、メッセージ種別にサブスクライブを示す情報を登録してよい。拠点IDは、例えば、配送先提供依頼500の送信元のプロキシ402が配備されている拠点を一意に識別する識別子である。トピックは、例えば、メッセージ種別がパブリッシュである場合には、パブリッシャ101から通知されたデータのトピックを示す情報であってよい。パブリッシャ101から通知されたデータのトピックは、一例では、パブリッシャ101から通知されたデータとともに、パブリッシャ101から通知されてよい。また、トピックは、例えば、メッセージ種別がサブスクライブである場合には、サブスクライバ103から通知されたサブスクライブでデータの配送が要求されるトピックを示す情報であってよい。
【0041】
そして、
図4の(2a)において、拠点管理部401は、例えば、プロキシ402から配送先提供依頼500を受信すると、受信した配送先提供依頼500に含まれる情報と、拠点管理情報600とに基づいて、メッセージの配送先を特定する。
【0042】
図6は、例示的な拠点管理情報600を示す図である。拠点管理情報600は、例えば、各拠点に配備されているプロキシ402、ブローカ102、サブスクライバ103、およびパブリッシャ101などに関する情報を管理する情報であってよい。
図6では、拠点管理情報600には、例えば、拠点ID、プロキシアドレス、ブローカアドレス、サブスクライバ、およびトピックが対応づけられたエントリが登録されている。拠点管理情報600の拠点IDは、例えば、拠点を一意に識別する識別子である。拠点管理情報600のプロキシアドレスは、例えば、エントリの拠点IDで識別される拠点に配備されているプロキシ402のアドレスである。拠点管理情報600のブローカアドレスは、例えば、エントリの拠点IDで識別される拠点に配備されているブローカ102のアドレスである。なお、ブローカアドレス「-(null)」は、例えば、エントリの拠点IDで識別される拠点に、ブローカ102が配備されていないことを示してよい。拠点管理情報600のサブスクライバは、例えば、エントリの拠点IDで識別される拠点に配備されているサブスクライバ103を示す情報である。サブスクライバ「-」は、エントリの拠点IDで識別される拠点にサブスクライバ103が配備されていないことを示す。拠点管理情報600のトピックは、例えば、エントリの拠点IDで識別される拠点に配備されているブローカ102が、パブリッシャ101から受信しているパブリッシュのトピックを示す情報である。トピック「-」は、エントリの拠点IDで識別される拠点でブローカ102が受信しているパブリッシュがないことを示す。
【0043】
そして、拠点管理情報600を参照することで、拠点管理部401は、配送先提供依頼500で問い合わせを受けたメッセージの配送先を特定することができる。例えば、拠点管理部401は、メッセージ種別がパブリッシュである場合、配送先提供依頼500の送信元拠点と一致する拠点IDを有する拠点管理情報600のエントリのブローカアドレスを配送先として特定し、配送先提供依頼500の送信元のプロキシ402に通知する。そして、プロキシ402は、拠点管理部401からの応答で通知された配送先にメッセージ(パブリッシュ)の宛先を変更してメッセージを送信する(
図4の(3a))。
【0044】
図7は、プロキシ402によるメッセージの宛先変更を例示する図である。
図7(a)は、パブリッシュを例示している。センサなどのパブリッシャ101から出力されるパブリッシュは、例えば、プロキシアドレス、パブリッシャアドレス、トピック、およびデータを含んでよい。プロキシアドレスは、例えば、パブリッシュの宛先となるプロキシ402のアドレスである。パブリッシャアドレスは、パブリッシュの送信元のパブリッシャ101のアドレスである。トピックは、パブリッシュのデータのトピックである。データは、パブリッシュの送信元のパブリッシャ101で収集されたデータである。
【0045】
そして、プロキシ402は、拠点管理部401からの応答で通知された配送先にメッセージ(パブリッシュ)の宛先を変更してメッセージを配送してよい。
図7(b)は、宛先の変更後のパブリッシュを例示しており、プロキシアドレスが、拠点管理部401からの応答で通知された配送先のブローカアドレスに変更されている。
【0046】
以上のように、例えば、分散処理システム300においてブローカ102を別の拠点に移動した場合にも、パブリッシャ101が送信するパブリッシュの宛先を変更しなくても、パブリッシュをプロキシ402を介して適切なブローカ102に配送することができる。
【0047】
なお、拠点B2のように、ブローカ102が配備されていない場合には、拠点管理部401は、拠点B2のプロキシ402からの配送先提供依頼500に対して、クラウド(拠点B0)に配備されているブローカ102のブローカアドレスを通知してよい。この場合、拠点B2のプロキシ402は、クラウド(拠点B0)のブローカ102にパブリッシュを配送してよい(
図4の(4a))。
【0048】
(サブスクライブのプロキシを介した配送例)
続いて、サブスクライブのプロキシ402を介した配送例を説明する。サブスクライブの配送もプロキシ402で制御することができる。例えば、サブスクライバ103は、プロキシ402に宛ててメッセージ(サブスクライブ)を送信するように設定されていてよい。
図4の例では、拠点B0の処理Bのサブスクライバ103は、トピックBのデータを要求するサブスクライブをプロキシ402に宛てて送信する(
図4の(1b))。
【0049】
プロキシ402は、例えば、サブスクライブを受信すると、サブスクライブの配送先となるブローカ102を、クラウドの拠点管理部401に問い合わせる(
図4の(2b))。例えば、プロキシ402は、
図5で示した配送先提供依頼500を拠点管理部401に送信して、サブスクライブの配送先を問い合わせてよい。なお、サブスクライブの配送先の問い合わせでは、配送先提供依頼500のメッセージ種別には、サブスクライブを示す情報が登録されてよい。また、拠点IDは、例えば、配送先提供依頼500の送信元のプロキシ402が配備されている拠点を一意に識別する識別子である。配送先提供依頼500のトピックには、例えば、サブスクライブで配送が要求されるトピックが登録されてよい。
【0050】
拠点管理部401は、例えば、プロキシ402から配送先提供依頼500を受信すると、配送先提供依頼500のメッセージ種別が、パブリッシュか、またはサブスクライブかを特定する。そして、例えば、メッセージ種別がサブスクライブである場合、拠点管理部401は、配送先提供依頼500のトピックと一致するトピックを含む拠点管理情報600のエントリに含まれるブローカアドレスを配送先として特定する。そして、拠点管理部401は、特定した配送先のブローカアドレスを、配送先提供依頼500の送信元のプロキシ402に通知する。
【0051】
そして、プロキシ402は、拠点管理部401からの応答で通知された配送先にメッセージ(サブスクライブ)の宛先を変更してメッセージを送信する(
図4の(3b))。
【0052】
図7(c)は、サブスクライブを例示している。例えば、サブスクライバ103がデータを要求するために発行するサブスクライブは、プロキシアドレス、サブスクライバアドレス、サブスクライバID、およびトピックを含んでよい。プロキシアドレスは、例えば、サブスクライバ103からのサブスクライブの宛先となるプロキシ402のアドレスである。サブスクライバアドレスは、例えば、サブスクライブの送信元のサブスクライバ103のアドレスである。サブスクライバID(identifier)は、例えば、サブスクライブの送信元のサブスクライバ103を一意に識別する識別情報である。トピックは、例えば、サブスクライブでデータの送信が要求されるトピックを示す情報である。
【0053】
そして、プロキシ402は、拠点管理部401からの応答で通知された配送先にメッセージ(サブスクライブ)の宛先を変更してメッセージを配送してよい。
図7(d)は、宛先の変更後のサブスクライブを例示しており、プロキシアドレスが、拠点管理部401からの応答で通知された配送先のブローカアドレスに変更されている。
【0054】
以上のように、例えば、分散処理システム300においてブローカ102を別の拠点に移動した場合に、サブスクライバ103のサブスクライブの送信先を変更しなくても、サブスクライブをプロキシ402を介して適切なブローカ102に配送することができる。例えば、
図4では、処理Bが発行したトピックBのデータを要求するサブスクライブは、拠点管理情報600においてトピックにBが登録されている拠点1に配備されているブローカ102(アドレス4)に配送される(
図4の(3b))。一方、処理Cが発行したトピックCのデータを要求するサブスクライブは、拠点管理情報600においてトピックにCが登録されている拠点0に配備されているブローカ102(アドレス3)に配送される(
図4の(3b’))。
【0055】
以上で述べたように、分散処理システム300においてある拠点から別の拠点へと拠点をまたいでパブリッシャ101、ブローカ102、およびサブスクライバ103の配置を変更したとしても、プロキシ402を用いてメッセージを適切な配送先に配送することができる。
【0056】
しかしながら、近年、例えば、IoTデバイスなどのセンサを備えるデバイスは増加傾向にあり、それにともない、拠点に配備されるセンサなどのパブリッシャ101の数も、
図8に示すように、増加することがある。なお、パブリッシャ101の増加にともない、それらのパブリッシャ101を収容するゲートウェイ装置GWの数も増加してもよい。この場合、パブリッシャ101からプロキシ402を介してブローカ102に配送されるデータの量が増加するため、プロキシ402およびブローカ102にかかる処理負荷が高くなることがある。その結果、転送遅延などが発生してしまうことがあり、リアルタイム性が要求されるCPS(Cyber-Physical System)アプリケーションなどでは問題になることがある。
【0057】
そのため、例えば、センサの数の多い拠点において、プロキシ402およびブローカ102の数を増やして、処理負荷を分散させることが考えられる。
図9は、拠点B1において配備するプロキシ402とブローカ102とを増やした分散処理システム300の構成を示す図である。
図9の拠点B1に示すように、配備するブローカ102およびプロキシ402を増やすことで、増やしたブローカ102およびプロキシ402に処理を分散させることができる。そのため、ブローカ102およびプロキシ402の1つあたりの処理量を削減することが可能になる。
【0058】
しかしながら、ブローカ102を増やすと、サブスクライブの配信先が、増設したブローカ102の分増加してしまうことがある。例えば、
図9に示すように、拠点B0(クラウド)に配備されているサブスクライバ103:処理BがトピックBのデータの配送を要求するサブスクライブをプロキシ402に送信したとする(
図9の(1))。プロキシ402は、サブスクライブを受信すると、サブスクライブの配送先を拠点管理部401に問い合わせる(
図9の(2))。ここで、増設したブローカ102は、例えば、拠点B1にもともと設置されているプロキシ402と同じトピックを処理するブローカ102であるとする。この場合、配送先提供依頼500に対する応答では、もともと設置されているブローカ102のブローカアドレスに加えて、増設されたブローカ102のブローカアドレスも通知される。その結果、拠点B0のプロキシ402は、拠点B1のブローカ102と、増設されたブローカ102の双方に、トピックBのデータの配送を要求するサブスクライブを送信する(
図9の(3))。この場合、拠点B0(クラウド)から1つの拠点B1に対して同じサブスクライブを複数送信しており、重複したデータを同じ拠点間で複数送信することは無駄な拠点間の通信となる。そのため、拠点間での重複したサブスクライブの配送を抑制することのできる技術の提供が望まれている。
【0059】
以下で述べる実施形態では、プロキシ402は、拠点管理部401に問い合わせて特定したサブスクライブの配送先が、自拠点とは異なる外部拠点である場合、配送先の拠点を代表する代表プロキシにサブスクライブを送信する。そのため、例えば、
図9の(3)において、拠点間で複数のブローカ102に対して配送しているサブスクライブを、代表プロキシに集約して配送することができため、拠点間での重複したサブスクライブの配送を抑制することができる。なお、代表プロキシは、サブスクライブを受信すると、代表プロキシと同じ拠点に配備されているブローカ102にサブスクライブを配送する。以下、実施形態を更に詳細に説明する。
【0060】
図10は、実施形態に係るサーバ301の機能ブロック構成を例示する図である。サーバ301は、例えば、制御部1001、記憶部1002、および通信部1003を含む。制御部1001は、例えば拠点管理部401などとして動作する。また、制御部1001は、例えば、サーバ301に配備されているブローカ102、サブスクライバ103、およびプロキシ402として動作してもよい。サーバ301の記憶部1002は、例えば、後述する拠点管理情報1200などの情報を記憶していてよい。これらの各部の詳細及び記憶部1002に格納されている情報の更なる詳細については後述する。
【0061】
図11は、実施形態に係るプロキシ402の機能ブロック構成を例示する図である。なお、プロキシ402は、例えば、サーバ301、エッジ装置EG、およびゲートウェイ装置GWなどに実装されてよい。プロキシ402は、例えば、制御部1101、記憶部1102、および通信部1103を含む。制御部1101は、例えば転送部1111および取得部1112などとして動作する。プロキシ402の記憶部1102は、例えば、後述するように、代表プロキシとして動作する場合には、ブローカ管理情報1300などの情報を記憶していてよい。これらの各部の詳細及び記憶部1102に格納されている情報の更なる詳細については後述する。
【0062】
図12は、実施形態に係る拠点管理情報1200を例示する図である。拠点管理情報1200は、例えば、各拠点に配備されているプロキシ402、ブローカ102、サブスクライバ103、およびパブリッシャ101などに関する情報を管理する情報であってよい。
図12の例では、拠点管理情報1200には、拠点ID、代表プロキシアドレス、ブローカアドレス、サブスクライバ、およびトピックが対応づけられたエントリが登録されている。拠点管理情報1200の拠点IDは、例えば、拠点を一意に識別する識別子である。拠点管理情報1200の代表プロキシアドレスは、例えば、エントリの拠点IDで識別される拠点に配備されているプロキシ402を代表する代表プロキシのアドレスである。拠点管理情報1200のブローカアドレスは、例えば、エントリの拠点IDで識別される拠点に配備されているブローカ102のアドレスである。なお、ブローカアドレス「-(null)」は、例えば、エントリの拠点IDで識別される拠点にブローカ102が配備されていないことを示してよい。拠点管理情報1200のサブスクライバは、例えば、エントリの拠点IDで識別される拠点に配備されているサブスクライバを示す情報である。サブスクライバ「-」は、エントリの拠点IDで識別される拠点にサブスクライバ103が配備されていないことを示す。拠点管理情報1200のトピックは、例えば、エントリの拠点IDで識別される拠点に配備されているブローカ102が、パブリッシャ101から受信しているパブリッシュのトピックを示す情報である。トピック「-」は、エントリの拠点IDで識別される拠点でブローカ102が受けるパブリッシュがないことを示す。なお、拠点に複数のブローカ102が配備される場合、拠点管理情報1200のブローカアドレスには、拠点に配備された全てのブローカ102のブローカアドレスが登録されてよい。例えば、ユーザが分散処理システム300において、拠点B1にブローカ102を追加して配備する場合、ユーザは、拠点管理情報1200の拠点ID:B1のエントリのブローカアドレスに、追加して配備したブローカ102のブローカアドレスを追加してよい。
【0063】
また、
図13は、ブローカ管理情報1300を例示する図である。ブローカ管理情報1300は、例えば、代表プロキシとして動作するプロキシ402の記憶部1102に記憶されていてよい。ブローカ管理情報1300には、例えば、ブローカアドレスおよびトピックが対応付けられたエントリが登録されている。ブローカ管理情報1300のブローカアドレスには、例えば、ブローカ管理情報1300を記憶する代表プロキシと同じ拠点に配備されているブローカ102のブローカアドレスが登録されてよい。また、ブローカ管理情報1300のトピックには、エントリのブローカアドレスで識別されるブローカ102で受信されるパブリッシュのトピックを示す情報が登録されてよい。
【0064】
続いて、実施形態に係る拠点管理部401が実行する配送先通知処理を説明する。
図14は、実施形態に係る拠点管理部401が実行する配送先通知処理の動作フローを例示する図である。例えば、拠点管理部401は、プロキシ402から配送先提供依頼500を受信すると、
図14の動作フローを開始してよい。
【0065】
ステップ1401(以降、ステップを“S”と記載し、例えば、S1401と表記する)において拠点管理部401は、受信した配送先提供依頼500のメッセージ種別がパブリッシュであるか、サブスクライブであるかを判定する。配送先提供依頼500のメッセージ種別がパブリッシュである場合、フローはS1402に進む。
【0066】
S1402において拠点管理部401は、拠点管理情報1200を参照し、配送先提供依頼500の送信元拠点と拠点管理情報1200において対応づけられている代表プロキシと、ブローカアドレスとを特定する。なお、S1402において拠点管理部401は、配送先提供依頼500の送信元拠点を含む拠点管理情報1200のエントリに、配送先提供依頼500で通知されたトピックが登録されていない場合、配送先提供依頼500で通知されたトピックを登録してよい。
【0067】
S1403において拠点管理部401は、特定した代表プロキシと、ブローカアドレスとを含む応答を、配送先提供依頼500を送信してきたプロキシ402に返信し、本動作フローは終了する。
【0068】
一方、S1401において配送先提供依頼500のメッセージ種別がサブスクライブである場合、フローはS1404に進む。
【0069】
S1404において拠点管理部401は、拠点管理情報1200を参照し、配送先提供依頼500のトピックと拠点管理情報1200において対応づけられている拠点と代表プロキシアドレスとブローカアドレスとを特定する。
【0070】
S1405において拠点管理部401は、特定した拠点と代表プロキシアドレスとブローカアドレスとを含む応答を、配送先提供依頼500を送信してきたプロキシ402に返信し、本動作フローは終了する。
【0071】
以上で述べたように、
図14の動作フローによれば、拠点管理部401は、配送先提供依頼500に応じて、メッセージの配送先に関する情報をプロキシ402に提供することができる。
【0072】
また、
図15は、実施形態に係るプロキシ402の制御部1101が実行するパブリッシュの配送処理の動作フローを例示する図である。プロキシ402の制御部1101は、例えば、パブリッシャ101からパブリッシュを受信すると、
図15の動作フローを開始してよい。
【0073】
S1501においてプロキシ402の制御部1101は、受信したパブリッシュからトピックの情報を抽出する。S1502においてプロキシ402の制御部1101は、受信したパブリッシュの配送先を拠点管理部401に問い合わせる。例えば、プロキシ402の制御部1101は、S1501で抽出したトピックを含む配送先提供依頼500を生成して拠点管理部401に送信し、パブリッシュの配送先を問い合わせてよい。
【0074】
S1503においてプロキシ402の制御部1101は、拠点管理部401からの応答から、プロキシ402が配備されている拠点に複数のブローカ102が配備されているか否かを判定する。例えば、拠点管理部401からの応答に複数のブローカアドレスが含まれている場合、プロキシ402の制御部1101は、S1503においてYesと判定してよく、フローはS1504に進む。
【0075】
S1504においてプロキシ402の制御部1101は、拠点管理部401からの応答に含まれる代表プロキシアドレスを用いて、代表プロキシとして動作するプロキシ402にパブリッシュ1601を送信し、本動作フローは終了する。
【0076】
図16は、実施形態に係る代表プロキシに送信されるメッセージを例示する図である。
図16(a)は、S1504でプロキシ402の制御部1101が、代表プロキシアドレスに送信するパブリッシュ1601を例示している。パブリッシュ1601は、例えば、代表プロキシアドレス、ブローカアドレス、パブリッシャアドレス、トピック、およびデータを含んでよい。パブリッシュ1601の代表プロキシアドレスは、拠点管理部401からの応答で通知された代表プロキシアドレスである。また、パブリッシュ1601のブローカアドレスは、例えば、拠点管理部401からの応答で通知されたブローカアドレスである。パブリッシュ1601のパブリッシャアドレス、トピック、データはそれぞれ、例えば、
図7(a)のパブリッシュのパブリッシャアドレス、トピック、データと同様の情報であってよい。
【0077】
一方、S1503において例えば、拠点管理部401からの応答に含まれるブローカアドレスが1つである場合、S1503においてNoと判定してよく、フローはS1505に進む。
【0078】
S1505においてプロキシ402の制御部1101は、応答で通知されたブローカアドレスにパブリッシュを送信し、本動作フローは終了する。S1505で送信されるパブリッシュは、例えば、
図7(b)に示すパブリッシュであってよい。
【0079】
以上で述べたように、プロキシ402の制御部1101は、パブリッシュを受信した場合に、パブリッシュの配送先のブローカ102が拠点内に複数ある場合には、代表プロキシにパブリッシュを転送する。一方、プロキシ402の制御部1101は、パブリッシュの配送先のブローカ102が拠点内に1つである場合には、そのブローカ102にパブリッシュを配送する。
【0080】
続いて、代表プロキシとして動作するプロキシ402の制御部1101が、他のプロキシ402からパブリッシュ1601を受信した場合に実行するパブリッシュの配送処理について説明する。
図17は、実施形態に係る代表プロキシとして動作するプロキシ402によるパブリッシュの配送処理の動作フローを例示する図である。
【0081】
S1701においてプロキシ402の制御部1101は、パブリッシュ1601に含まれるブローカアドレスおよびトピックの情報を読み出す。
【0082】
S1702においてプロキシ402の制御部1101は、読み出したブローカアドレスおよびトピックを含むエントリが、記憶部1102に記憶されているブローカ管理情報1300に登録されているか否かを判定する。読み出したブローカアドレスおよびトピックを含むエントリが、ブローカ管理情報1300に登録されていない場合(S1702がNo)、フローはS1703に進む。
【0083】
S1703においてプロキシ402の制御部1101は、ブローカ管理情報1300に、読み出したブローカアドレスおよびトピックを対応づけたエントリを登録し、フローはS1704に進む。なお、例えば、パブリッシュ1601から読み出したブローカアドレスを含むエントリが既にブローカ管理情報1300に含まれている場合には、プロキシ402の制御部1101は、そのエントリにパブリッシュ1601から読み出したトピックを追加してよい。
【0084】
また、S1702において読み出したブローカアドレスおよびトピックを含むエントリが、ブローカ管理情報1300に登録されている場合(S1702がYes)、フローはS1704に進む。
【0085】
S1704においてプロキシ402の制御部1101は、パブリッシュ1601で指定されるトピックとブローカ管理情報1300において対応づけられているブローカアドレスのブローカ102にパブリッシュ1601を配送し、本動作フローは終了する。なお、パブリッシュ1601で指定されるトピックとブローカ管理情報1300において対応づけられているブローカアドレスが複数登録されている場合には、プロキシ402の制御部1101は、パブリッシュ1601を複数のブローカ102のうちの一部に送信してもよい。一例では、プロキシ402の制御部1101は、所定期間に処理するパブリッシュ1601の数が均一に近づくように、複数のブローカ102のうちのいずれかにパブリッシュ1601を振り分けてよい。それにより、拠点内の複数のブローカ102が処理するパブリッシュ1601の数を平均化して、負荷を分散させることができる。
【0086】
以上の
図17で述べた動作フローによれば、代表プロキシとして動作するプロキシ402の制御部1101は、パブリッシュ1601を拠点内のブローカ102に配送することができる。また、
図17の動作フローによれば、代表プロキシとして動作するプロキシ402の制御部1101は、拠点内のブローカ102と、拠点内のパブリッシャ101が送信したパブリッシュのトピックの情報とを、ブローカ管理情報1300に登録することができる。
【0087】
続いて、プロキシ402の制御部1101が実行するサブスクライブの配送処理について説明する。
【0088】
図18は、実施形態に係るプロキシ402の制御部1101が実行するサブスクライブの配送処理の動作フローを例示する図である。例えば、プロキシ402の制御部1101は、サブスクライブを受信すると、
図18の動作フローを開始してよい。
【0089】
S1801においてプロキシ402の制御部1101は、受信したサブスクライブの配送先を問い合わせる配送先提供依頼500を拠点管理部401に送信し、その応答としてサブスクライブの配送先の情報を受信する。なお、拠点管理部401は、例えば、上述の
図14の動作フローのS1404~S1405の処理で応答を、配送先提供依頼500を送付したプロキシ402に返信してよい。また、この応答は、例えば、サブスクライブで要求されるトピックと拠点管理情報1200において対応づけられている拠点IDと、代表プロキシアドレスと、ブローカアドレスとを含んでよい。
【0090】
S1802においてプロキシ402の制御部1101は、応答で通知されるサブスクライブの配送先に自拠点が含まれるか否かを判定する。例えば、プロキシ402の制御部1101は、記憶部1102に記憶されている自拠点を識別するための拠点IDと一致する拠点IDが、拠点管理部401から受信した応答に含まれているか否かに基づいて、サブスクライブの配送先に自拠点が含まれるか否かを判定してよい。記憶部1102に記憶されている自拠点を識別するための拠点IDと一致する拠点IDが、拠点管理部401から受信した応答に含まれていない場合(S1802がNo)、フローはS1804に進む。一方、記憶部1102に記憶されている自拠点を識別するための拠点IDと一致する拠点IDが、拠点管理部401から受信した応答に含まれている場合(S1802がYes)、フローはS1803に進む。
【0091】
S1803においてプロキシ402の制御部1101は、拠点管理部401から受信した応答に含まれるブローカアドレスにサブスクライブを配送し、フローはS1804に進む。なお、プロキシ402の制御部1101は、例えば、
図7(d)のサブスクライブを配送先のブローカ102に送信してよい。
【0092】
S1804においてプロキシ402の制御部1101は、サブスクライブの配送先に外部拠点が含まれるか否かを判定する。例えば、プロキシ402の制御部1101は、記憶部1102に記憶されている自拠点を識別するための拠点IDと異なる拠点IDが、拠点管理部401から受信した応答に含まれているか否かに基づいて、サブスクライブの配送先に外部拠点が含まれるか否かを判定してよい。記憶部1102に記憶されている自拠点を識別するための拠点IDと異なる拠点IDが、拠点管理部401から受信した応答に含まれていない場合(S1804がNo)、本動作フローは終了する。一方、記憶部1102に記憶されている自拠点を識別するための拠点IDと異なる拠点IDが、拠点管理部401から受信した応答に含まれている場合(S1804がYes)、フローはS1805に進む。
【0093】
S1805においてプロキシ402の制御部1101は、拠点管理部401から受信した応答に含まれている外部拠点の代表プロキシアドレスに、サブスクライブ1602を転送する。
【0094】
図16(b)は、S1805でプロキシ402の制御部1101が、代表プロキシアドレスに転送するサブスクライブ1602を例示している。サブスクライブ1602は、例えば、代表プロキシアドレス、サブスクライバアドレス、サブスクライバID、およびトピックを含んでよい。サブスクライブ1602の代表プロキシアドレスは、例えば、拠点管理部401からの応答で通知された代表プロキシアドレスである。また、サブスクライブ1602のサブスクライバアドレス、サブスクライバID、トピックはそれぞれ、例えば、
図7(d)のサブスクライブのサブスクライバアドレス、サブスクライバID、トピックと同様の情報であってよい。
【0095】
以上の
図18の動作フローによれば、プロキシ402の制御部1101は、サブスクライブを受信すると、自拠点内のブローカ102にサブスクライブを配送し、また、外部拠点の代表プロキシにサブスクライブを転送することができる。
【0096】
続いて、代表プロキシとして動作するプロキシ402の制御部1101によるサブスクライブの配送処理を説明する。
図19は、代表プロキシとして動作するプロキシ402の制御部1101が実行するサブスクライブの配送処理の動作フローを例示する図である。例えば、プロキシ402の制御部1101は、外部拠点のプロキシ402からサブスクライブ1602を受信すると、
図19の動作フローを開始してよい。
【0097】
S1901においてプロキシ402の制御部1101は、サブスクライブ1602のトピックと対応するブローカ102のブローカアドレスを特定する。例えば、プロキシ402の制御部1101は、サブスクライブ1602のトピックと一致するトピックが登録されているブローカ管理情報1300のエントリのブローカアドレスを特定してよい。
【0098】
S1902においてプロキシ402の制御部1101は、特定したブローカアドレスのブローカ102にサブスクライブを配送し、本動作フローは終了する。なお、プロキシ402の制御部1101は、例えば、
図7(d)のサブスクライブを配送先のブローカ102に送信してよい。
【0099】
以上の
図19の動作フローによれば、代表プロキシとして動作するプロキシ402の制御部1101は、外部拠点から転送されてきたサブスクライブ1602を、自拠点内のブローカ102に配送することができる。
【0100】
続いて、
図20は、上述した実施形態に係る代表プロキシを介したパブリッシュの配送の流れを例示する図である。
【0101】
例えば、
図20の拠点B1においてプロキシ402(アドレス5)が、センサAおよびセンサBなどのパブリッシャ101からトピックAのパブリッシュを受信したとする(
図20の(1))。
【0102】
この場合、プロキシ402(アドレス5)は、拠点管理部401に配送先提供依頼500を送信し、パブリッシュの配送先を問い合わせる(
図20の(2))。
【0103】
プロキシ402(アドレス5)は、拠点管理部401からの問い合わせに対する応答に基づいてパブリッシュの配送先のブローカ102が複数あるか否かを判定する。そして、パブリッシュの配送先のブローカ102が複数ある場合、プロキシ402(アドレス5)は、拠点管理情報1200に代表プロキシとして登録されているプロキシ402(アドレス1)にパブリッシュを転送する(
図20の(3))。
【0104】
代表プロキシとして動作するプロキシ402(アドレス1)は、ブローカ管理情報1300を参照し、拠点内のブローカ102(アドレス4.0,アドレス4.1)にパブリッシュを振り分けて配送する(
図20の(4))。
【0105】
そのため、代表プロキシを介して、拠点内のブローカ102(アドレス4.0,アドレス4.1)にパブリッシュを分配することができ、拠点内のブローカ102のパブリッシュの処理にかかる負荷を低減することができる。
【0106】
続いて、
図21は、上述した実施形態に係る代表プロキシを介したサブスクライブの配送の流れを例示する図である。
【0107】
例えば、
図21の拠点B0(クラウド)においてプロキシ402(アドレス0)が、処理Bのサブスクライバ103からトピックBのサブスクライブを受信したとする(
図21の(1))。
【0108】
この場合、プロキシ402(アドレス0)は、拠点管理部401に配送先提供依頼500を送信し、サブスクライブの配送先を問い合わせる(
図21の(2))。
【0109】
プロキシ402(アドレス0)は、拠点管理部401からの応答で通知される配送先が外部拠点の拠点B1である場合、拠点管理情報1200に代表プロキシとして登録されている拠点B1のプロキシ402(アドレス1)にサブスクライブを転送する(
図21の(3))。
【0110】
代表プロキシとして動作するプロキシ402(アドレス1)は、ブローカ管理情報1300に登録されているブローカ102のうちでトピックBが登録されているブローカ102(アドレス4.0,アドレス4.1)にサブスクライブを配送する(
図21の(4))。
【0111】
以上のように、拠点間でサブスクライブを配送する場合に、代表プロキシにサブスクライブを転送し、代表プロキシから拠点内のブローカ102にサブスクライブを配送することで、拠点間で通信されるサブスクライブの数を削減することができる。従って、実施形態によれば、例えば、拠点間でのサブスクライブの通信量を削減することができる。
【0112】
なお、例えば、
図21の拠点B1においてプロキシ402(アドレス1)が、処理Aのサブスクライバ103からトピックAのサブスクライブを受信したとする(
図21の(1’))。
【0113】
この場合、プロキシ402(アドレス1)は、拠点管理部401に配送先提供依頼500を送信し、サブスクライブの配送先を問い合わせる(
図21の(2’))。
【0114】
プロキシ402(アドレス0)は、拠点管理部401からの問い合わせに対する応答に基づいてサブスクライブの配送先が自拠点の拠点B1であるか否かを判定する。そして、サブスクライブの配送先が自拠点の拠点B1である場合、プロキシ402は、応答で受信したブローカアドレスのブローカ102(アドレス4.0,アドレス4.1)にサブスクライブを転送する(
図21の(3’))。
【0115】
以上で述べたように、プロキシ402は、自拠点内のブローカ102にサブスクライブを配送する場合には、ブローカ102に直接サブスクライブを配送してよい。
【0116】
以上で述べた上述の実施形態では、サブスクライブが拠点間で通信される場合、配送先に代表プロキシを用い、代表プロキシに拠点内でのブローカ102への配送を実行させる。即ち、例えば、外部ネットワークからのサブスクライブの受信は代表プロキシが代表して行い、代表プロキシがローカルネットワーク内のブローカに配送する。そのため、例えば、拠点内に複数のブローカ102が配備されている場合にも、拠点間でのサブスクライブの通信量を削減することができる。
【0117】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。例えば、
図18のS1802からS1803の処理と、S1804からS1805の処理とは順序を入れ替えて実行してもよい。
【0118】
また、上述の実施形態では、パブリッシュの配送先のブローカ102が複数ある場合に、自拠点内の代表プロキシにパブリッシュを転送し、代表プロキシがパブリッシュをブローカ102に振り分ける例を述べている。例えば、代表プロキシがパブリッシュをブローカ102に振り分けることで、拠点内の複数のブローカ102が処理するパブリッシュの数を均一にすることが可能である。しかしながら、別の実施形態では、プロキシ402は、拠点管理部401からの応答において、配送先のブローカ102が複数含まれている場合には、応答を受信したプロキシ402がパブリッシュを複数のブローカ102のいずれかに振り分けてもよい。
【0119】
また、上述の実施形態において、拠点管理情報1200の代表プロキシアドレスは、例えば、分散処理システム300の管理者がサーバ301を介して登録してもよい。或いは、別の実施形態では、拠点管理情報1200のエントリの拠点IDで識別される拠点のプロキシ402から、拠点管理部401が初めてパブリッシュの配送先を問い合わせる配送先提供依頼500を受信したとする。この場合に、拠点管理部401は、配送先提供依頼500の送信元のプロキシ402のアドレスを、その拠点IDのエントリの代表プロキシアドレスに登録してよい。この様に、最初にパブリッシュの配送先を問い合わせたプロキシ402を代表プロキシとすることで、分散処理システム300の管理者が拠点管理情報1200に代表プロキシを登録する手間を省くことができる。
【0120】
また、上述の実施形態では、プロキシ402は、パブリッシュおよびサブスクライブなどのメッセージを受信すると、メッセージの配送先を拠点管理部401に問い合わせる例を述べているが、実施形態はこれに限定されるものではない。例えば、別の実施形態では、プロキシ402は、メッセージの宛先を拠点管理部401に問い合わせて、配送先の情報を得ると、その配送先を記憶部1102に記憶し、以降はその配送先に対象のメッセージを送信するように動作してよい。例えば、この様にすることで、メッセージの宛先を拠点管理部401に問い合わせる処理を削減することが可能である。
【0121】
また、上述の実施形態では、拠点B0(クラウド)に配備されるサーバ301にサブスクライバ103、拠点管理部401、およびプロキシ402などが実装される例を述べているが、実施形態はこれに限定されるものではない。例えば、上述の実施形態でサーバ301が実行する処理は、複数の装置で分担して実行されてもよい。
【0122】
また、上述の実施形態では、拠点B0(クラウド)から、拠点B1にサブスクライブを配送する際に、代表プロキシに転送する例を述べているが、実施形態はこれに限定されるものではない。別の例では、拠点Biから拠点B0へ配送されるサブスクライブの通信量が削減されてもよい。即ち、例えば、
図21において、拠点B0(クラウド)にもトピックAのデータを提供するセンサAなどのパブリッシャ101が配備されているとする。そして、プロキシ402(アドレス1)が、処理Aのサブスクライバ103からトピックAのデータを要求するサブスクライブを受信して、その配送先を拠点管理部401に問い合わせた際に、配送先に拠点B0(クラウド)のブローカ102が含まれているとする。この場合に、プロキシ402(アドレス1)は、外部の拠点B0(クラウド)の代表プロキシにサブスクライブを転送してよい。以上のように、実施形態では、例えば、拠点間でサブスクライブを転送する場合に、代表プロキシにサブスクライブを転送するため、配送先の拠点に複数のブローカ102が含まれている場合にも、拠点間で行われるサブスクライブの通信量を削減することができる。
【0123】
図22は、実施形態に係るサーバ301、エッジ装置EG、ゲートウェイ装置GWなどを実現するためのコンピュータ(情報処理装置)2200のハードウェア構成を例示する図である。なお、サーバ301、エッジ装置EG、ゲートウェイ装置GWには、例えば、上述のブローカ102、サブスクライバ103、拠点管理部401、プロキシ402が配備され得る。また、一例では、サーバ301、エッジ装置EG、ゲートウェイ装置GWに、パブリッシャ101が配備されてもよい。
【0124】
図22のコンピュータ2200のハードウェア構成は、例えば、プロセッサ2201、メモリ2202、記憶装置2203、読取装置2204、通信インタフェース2206、及び入出力インタフェース2207を備える。なお、プロセッサ2201、メモリ2202、記憶装置2203、読取装置2204、通信インタフェース2206、入出力インタフェース2207は、例えば、バス2208を介して互いに接続されている。
【0125】
プロセッサ2201は、例えば、シングルプロセッサであっても、マルチプロセッサやマルチコアであってもよい。プロセッサ2201は、メモリ2202を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述したブローカ102、サブスクライバ103、拠点管理部401、プロキシ402などの各機能部の一部または全部の機能を提供する。例えば、サーバ301のプロセッサ2201は、記憶装置2203に格納されているプログラムを読み出して実行することで、拠点管理部401として動作する。また、例えば、プロキシ402が実装されるサーバ301、エッジ装置EG、ゲートウェイ装置GWのプロセッサ2201は、記憶装置2203に格納されているプログラムを読み出して実行することで、転送部1111および取得部1112として動作する。
【0126】
メモリ2202は、例えば半導体メモリであり、RAM領域及びROM領域を含んでいてよい。記憶装置2203は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。なお、RAMは、Random Access Memoryの略称である。また、ROMは、Read Only Memoryの略称である。
【0127】
読取装置2204は、プロセッサ2201の指示に従って着脱可能記憶媒体2205にアクセスする。着脱可能記憶媒体2205は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD-ROM、DVD等)などにより実現される。なお、USBは、Universal Serial Busの略称である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
【0128】
また、上述の記憶部1002および記憶部1102は、例えばメモリ2202、記憶装置2203、及び着脱可能記憶媒体2205を含んでよい。例えば、サーバ301の記憶装置2203には、拠点管理情報1200が格納されている。また、例えば、代表プロキシとして動作するエッジ装置EGまたはゲートウェイ装置GWの記憶装置2203には、ブローカ管理情報1300が格納されている。
【0129】
通信インタフェース2206は、プロセッサ2201の指示に従ってネットワークを介してデータを送受信する。通信インタフェース2206は、例えば、上述の通信部1003および通信部1103の一例である。
【0130】
入出力インタフェース2207は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置である。
【0131】
実施形態に係る各プログラムは、例えば、下記の形態でサーバ301、エッジ装置EG、ゲートウェイ装置GWに提供される。
(1)記憶装置2203に予めインストールされている。
(2)着脱可能記憶媒体2205により提供される。
(3)プログラムサーバなどのサーバから提供される。
【0132】
なお、
図22を参照して述べたサーバ301、エッジ装置EG、ゲートウェイ装置GWを実現するためのコンピュータ2200のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の機能部の一部または全部の機能がFPGA及びSoCなどによるハードウェアとして実装されてもよい。なお、FPGAは、Field Programmable Gate Arrayの略称である。SoCは、System-on-a-chipの略称である。
【0133】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【0134】
101 :パブリッシャ
102 :ブローカ
103 :サブスクライバ
200 :配信管理情報
300 :分散処理システム
301 :サーバ
310 :ネットワーク
320 :ネットワーク
401 :拠点管理部
402 :プロキシ
1001 :制御部
1002 :記憶部
1003 :通信部
1101 :制御部
1102 :記憶部
1103 :通信部
1111 :転送部
1112 :取得部
2200 :コンピュータ
2201 :プロセッサ
2202 :メモリ
2203 :記憶装置
2204 :読取装置
2205 :着脱可能記憶媒体
2206 :通信インタフェース
2207 :入出力インタフェース
2208 :バス
EG :エッジ装置
GW :ゲートウェイ装置
dv :デバイス