JP2019186771A - 情報処理装置、分散処理プログラムおよび分散処理システム - Google Patents

情報処理装置、分散処理プログラムおよび分散処理システム Download PDF

Info

Publication number
JP2019186771A
JP2019186771A JP2018076418A JP2018076418A JP2019186771A JP 2019186771 A JP2019186771 A JP 2019186771A JP 2018076418 A JP2018076418 A JP 2018076418A JP 2018076418 A JP2018076418 A JP 2018076418A JP 2019186771 A JP2019186771 A JP 2019186771A
Authority
JP
Japan
Prior art keywords
broker
topic
base
information processing
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2018076418A
Other languages
English (en)
Inventor
菜美 長田
Nami Osada
菜美 長田
上野 仁
Hitoshi Ueno
仁 上野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018076418A priority Critical patent/JP2019186771A/ja
Priority to US16/377,757 priority patent/US20190320033A1/en
Publication of JP2019186771A publication Critical patent/JP2019186771A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Abstract

【課題】無駄なメッセージを削減すること。【解決手段】情報処理装置101は、サブスクライバSbからのメッセージ(サブスクライブ)を受け付ける。情報処理装置101は、メッセージ(サブスクライブ)を受け付けると、各拠点に配置されたブローカーBrとトピックとの対応関係を記憶する拠点管理テーブル130を参照して、メッセージ(サブスクライブ)で指定された第1のトピックに対応するブローカーBrを特定する。情報処理装置101は、特定したブローカーBr宛に、受け付けたメッセージ(サブスクライブ)を転送する。【選択図】図4

Description

本発明は、情報処理装置、分散処理プログラムおよび分散処理システムに関する。
IoT(Internet of Things)の進展にともなって、エンドデバイスが生み出すデータ量が増加し、全てのデータの処理やデバイスの制御をクラウドで行うことが難しくなってきている。このため、エッジコンピューティングによる分散処理環境に注目が集まっている。エッジコンピューティングは、コンピュータネットワーク上で、利用者に近い場所に複数のエッジ装置を配置して、負荷の分散と通信の低遅延化を図る技術である。
また、パブリッシュ/サブスクライブモデルのデータ収集方法が知られている。このデータ収集方法では、サブスクライバが、ブローカーを介してパブリッシャからのデータを取得する。パブリッシャは、データを提供する側であり、サブスクライバを意識することなく、ブローカーにデータを送る。サブスクライバは、データを利用する側であり、パブリッシャを意識することなく、ブローカーにデータを要求する。
先行技術としては、複数の通信機器がネットワークに接続する情報配信システムにおいて、通信機器に含まれるノードが、トピックを識別可能なキーを生成し、キーと、他のノードから通知される他のノードについてのキーとを参照し、Multi−key Skip Graphにおける経路表を構築し、経路表に従い、メッセージを送信するものがある。また、ローカル・パブリッシュ/サブスクライブ・メッセージング・システムにおけるクライアントを、遠隔メッセージ・ブローカーに接続するためのメッセージ・ブローカリング・システムがある。
特開2015−115784号公報 特表2006−523905号公報
しかしながら、従来技術では、エッジコンピューティングによる分散処理システムにおいて、パブリッシュ/サブスクライブモデルのデータ収集方法を用いる場合、サブスクライブにかかる無駄なメッセージのやり取りが行われるおそれがある。
一つの側面では、本発明は、無駄なメッセージを削減することを目的とする。
1つの実施態様では、サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、情報処理装置が提供される。
本発明の一側面によれば、無駄なメッセージを削減することができる。
図1は、分散処理システム100のシステム構成例を示す説明図である。 図2は、パブリッシュ/サブスクライブモデルの一例を示す説明図である。 図3は、ブローカーの動作例を示す説明図である。 図4は、分散処理システム100の一実施例を示す説明図である。 図5は、情報処理装置101のハードウェア構成例を示すブロック図である。 図6は、拠点管理テーブル130の記憶内容の一例を示す説明図である。 図7は、メッセージのデータ構造例を示す説明図である。 図8は、情報処理装置101の機能的構成例を示すブロック図である。 図9は、分散処理システム100の動作例を示すシーケンス図(その1)である。 図10は、分散処理システム100の動作例を示すシーケンス図(その2)である。 図11は、拠点管理テーブル130の更新例を示す説明図である。 図12は、分散処理システム100の動作例を示すシーケンス図(その3)である。 図13は、情報処理装置101のプロキシPr0のメッセージ転送処理手順の一例を示すフローチャートである。 図14は、情報処理装置101の処理配備管理部401のアドレス応答処理手順の一例を示すフローチャートである。
以下に図面を参照して、本発明にかかる情報処理装置、分散処理プログラムおよび分散処理システムの実施の形態を詳細に説明する。
(実施の形態)
まず、実施の形態にかかる分散処理システム100のシステム構成について説明する。分散処理システム100は、エッジコンピューティングによる分散処理システムである。また、分散処理システム100では、パブリッシュ/サブスクライブモデルのデータ収集方法を用いる。
図1は、分散処理システム100のシステム構成例を示す説明図である。図1において、分散処理システム100は、拠点B0〜Bn(n:1以上の自然数)を含む。分散処理システム100において、拠点B0〜Bnの拠点間は、ネットワーク110を介して相互に通信可能に接続される。ネットワーク110は、例えば、広域通信網(WAN:Wide Area Network)、インターネットである。
拠点B0は、情報処理装置101を含む。情報処理装置101は、拠点管理テーブル130を有し、サブスクライバSbからのメッセージをブローカーBrに転送する制御を行うコンピュータである。例えば、情報処理装置101は、クラウドコンピューティングのサーバである。
拠点管理テーブル130は、各拠点B0〜Bnに配置されたブローカーBrとトピックとの対応関係を記憶する記憶部である。トピックは、パブリッシャPbから送出されるデータの特徴を表す。サブスクライバSb、パブリッシャPbおよびブローカーBrについての説明は、図2および図3を用いて後述する。また、拠点管理テーブル130の記憶内容については、図6を用いて後述する。
以下の説明では、拠点B0を「クラウド」と表記する場合がある。また、拠点B0を除く拠点B1〜Bnのうちの任意の拠点を「拠点Bi」と表記する場合がある(i=1,2,…,n)。
拠点Biは、ゲートウェイ装置GWiと、エッジ装置Eiとを含む。拠点Biにおいて、ゲートウェイ装置GWiおよびエッジ装置Eiは、ネットワーク120を介して相互に通信可能に接続される。ネットワーク120は、例えば、構内通信網(LAN:Local Area Network)である。
ゲートウェイ装置GWiは、近距離無線通信または有線通信により、デバイスdvから送出されるデータを受信する情報処理装置である。近距離無線通信としては、無線LAN、Bluetooth(登録商標)などを利用した通信が挙げられる。デバイスdvは、工場などに設置される生産機器、組立機器、環境センサ、カメラなどの機器である。
また、ゲートウェイ装置GWiは、デバイスdvから受信したデータを、他のコンピュータ(例えば、エッジ装置Ei、情報処理装置101)に中継する機能を有する。ゲートウェイ装置GWiは、例えば、無線LANやBluetoothなどのアクセスポイントであってもよく、また、サーバやPC(Personal Computer)であってもよい。
エッジ装置Eiは、各種処理を行う情報処理装置である。エッジ装置Eiは、エッジコンピューティングにおけるエッジサーバであり、情報処理装置101(クラウド)に比べて、デバイスdvやユーザに近い位置に配置される。エッジ装置Eiは、例えば、サーバ、PC、アクセスポイントなどである。
なお、図1の例では、拠点Bi内のエッジ装置Eiおよびゲートウェイ装置GWiを、それぞれ1台のみ表記したが、これに限らない。例えば、拠点Biには、2台以上のエッジ装置Eiやゲートウェイ装置GWiが含まれていてもよい。また、情報処理装置101は、複数のコンピュータにより実現されることにしてもよい。
(パブリッシュ/サブスクライブモデル)
つぎに、図2および図3を用いて、パブリッシュ/サブスクライブモデルのデータ収集方法について説明する。
図2は、パブリッシュ/サブスクライブモデルの一例を示す説明図である。パブリッシュ/サブスクライブモデルのデータ収集方法では、パブリッシャPbは、データを提供するものであり、サブスクライバSbを意識することなく、ブローカーBr宛にデータを送る。パブリッシャPbは、例えば、図1に示したデバイスdvである。
また、サブスクライバSbは、データを要求するものであり、パブリッシャPbを意識することなく、ブローカーBrにデータを要求する。サブスクライバSbは、ブローカーBrに要求したデータが届いたら、ブローカーBrからデータを取得する。サブスクライバSbは、例えば、デバイスdvから送出されるデータを用いて実行される処理(アプリケーション)である。
ここで、図3を用いて、ブローカーBrの動作例について説明する。ブローカーBrは、パブリッシャPbとサブスクライバSbとの間を仲介するものである。
図3は、ブローカーの動作例を示す説明図である。図3において、各サブスクライバ#1〜#4は、ブローカーBrに対して、あるトピックのデータを要求する登録を行う。各パブリッシャ$1〜$3は、トピックとデータとを含むメッセージMをブローカーBr宛に送信する。
トピックとは、データの特徴を表すものである。トピックは、例えば、データのタイトル、種類、形式などを示す。なお、パブリッシャPbやサブスクライバSbにおいて、トピックとしてどのような情報を指定するかは予め決められている。
ブローカーBrは、どのサブスクライバSbが、どのトピックのデータを要求したのかを管理する。図3の例では、ブローカーBrは、トピックとサブスクライバIDとを対応付けて記憶するテーブル300を用いて、サブスクライバSbとトピックとの対応関係を管理する。サブスクライバIDは、サブスクライバSbを一意に識別する識別子である。
例えば、ブローカーBrは、パブリッシャ$1からのトピック1のデータを含むメッセージMを受け付けると、トピック1のメッセージ・キューに入れる。そして、ブローカーBrは、テーブル300を参照して、トピック1のメッセージ・キューに入れたメッセージMを、先に入れたものから順に、トピック1のデータを要求したサブスクライバ#1,#2宛に送る。
このようなパブリッシュ/サブスクライブモデルのデータ収集方法は、例えば、データをどのように用いるかは決まっていないものの、次々とデータを収集していくようなシステムに適したデータ収集方法である。
以下の説明では、サブスクライバSbが、あるトピックのデータを要求する登録を行うこと、あるいは、あるトピックのデータを要求するメッセージ自体を「サブスクライブ」と表記する場合がある。また、パブリッシャPbが、トピックとデータとを含むメッセージを送信すること、あるいは、トピックとデータとを含むメッセージ自体を「パブリッシュ」と表記する場合がある。
ここで、エッジコンピューティングによる分散処理システム(例えば、分散処理システム100)において、パブリッシュ/サブスクライブモデルのデータ収集方法を用いる場合、クラウド上だけでなく、拠点側にもブローカーBrを配置することが望ましいことがある。
例えば、クラウド上で実行されていた一部の処理(例えば、アプリケーション)を拠点側に移動する場合、ブローカーBrがクラウドにあると、データを一旦クラウドに送ることになり、拠点側に処理を移動した効果が得られなくなるおそれがある。このため、クラウドから処理を移動した拠点側にもブローカーBrを配置することが望ましい。
この場合、例えば、クラウドの処理配備管理機能により、どの拠点に処理を移動してブローカーBrを配置したのかということを管理することができる。処理配備管理機能は、クラウド上で実行されていた処理を拠点側に移動する処理を実行する機能である。
一方で、パブリッシャPbとなる各拠点内のデバイス(例えば、デバイスdv)は、分散処理システムの管理者側から遠隔操作できない場合がある。この場合、拠点側にブローカーBrを配置した際に、メッセージ(パブリッシュ)の宛先を、クラウドのブローカーBrから拠点側のブローカーBrに変更する設定を行うことができない。
このため、各拠点に、プロキシと呼ばれる機能を配置することが考えられる。プロキシは、拠点内のパブリッシャPbからのメッセージ(パブリッシュ)を受け付けると、当該メッセージの転送先となるブローカーBrを、クラウドの処理配備管理機能に問い合わせる。
メッセージ(パブリッシュ)の転送先は、プロキシと同じ拠点にブローカーBrがいれば、そのブローカーBrとなり、同じ拠点にブローカーBrがいなければ、クラウドのブローカーBrとなる。プロキシによれば、拠点内で発生したメッセージ(パブリッシュ)を適切に転送することができる。
ところが、クラウドの処理配備管理機能において、どの拠点にブローカーBrを配置したのかということを管理するだけでは、どの拠点でどのトピックのデータが発生しているのかまではわからない。このため、各サブスクライバSbからのメッセージ(サブスクライブ)は、全拠点(クラウドを含む)のブローカーBrに転送することになる。
しかしながら、サブスクライバSbが要求するデータが送られてくることのないブローカーBrへのメッセージ(サブスクライブ)は無駄である。無駄なメッセージ(サブスクライブ)のやり取りは、通信トラフィックの増大化を招くとともに、ブローカーBrでの無駄なサブスクライブについての登録処理を生じさせる。
そこで、本実施の形態では、情報処理装置101において、各拠点(拠点B0,Bi)のブローカーBrにパブリッシュされるデータのトピックについて管理することで、無駄なメッセージ(サブスクライブ)を削減する分散処理システム100について説明する。ここで、図4を用いて、分散処理システム100の一実施例について説明する。
図4は、分散処理システム100の一実施例を示す説明図である。図4において、拠点B0(クラウド)と、拠点B1と、拠点B2とが示されている。情報処理装置101は、プロキシPr0と、処理配備管理部401と、ブローカーBr0と、を有する。また、情報処理装置101は、処理B,Cを実行する。
ただし、ブローカーBr0は、拠点B0(クラウド)内の情報処理装置101と接続された他のコンピュータにより実現されることにしてもよい。また、処理B,Cは、拠点B0(クラウド)内の情報処理装置101と接続された他のコンピュータにより実行されることにしてもよい。
各拠点B1,B2のゲートウェイGW1,GW2は、プロキシPr1,Pr2を有する。拠点B1には、センサA,Bが設置されている。ゲートウェイ装置GW1のプロキシPr1には、センサAからトピックAのデータがパブリッシュされ、センサBからトピックBのデータがパブリッシュされる。また、拠点B2には、センサCが設置されている。ゲートウェイ装置GW2のプロキシPr2には、センサCからトピックCのデータがパブリッシュされる。なお、センサA,B,Cは、デバイスdvの一例である。
ここでは、拠点B0(クラウド)で実行されていた処理A,B,Cのうち、処理Aが拠点B1に移動されてエッジ装置E1により実行される場合を想定する。この場合、拠点B1にブローカーBr1が配置される。ブローカーBr1は、例えば、エッジ装置E1により実現される。
以下、情報処理装置101が拠点B0(クラウド)のサブスクライバSb(処理B,C)からのメッセージをブローカーBrに転送する場合を例に挙げて、情報処理装置101の処理例について説明する。
(1)情報処理装置101は、サブスクライバSbからのメッセージ(サブスクライブ)を受け付ける。メッセージ(サブスクライブ)は、第1のトピックのデータを要求するメッセージである。なお、メッセージ(サブスクライブ)のデータ構造例については、図7を用いて後述する。
図4の例では、情報処理装置101が、プロキシPr0により、クラウドで実行中の処理B(サブスクライバSb)から送信されたサブスクライブ410を受け付けた場合を想定する。サブスクライブ410は、トピックBのデータを要求するメッセージである。また、情報処理装置101が、プロキシPr0により、クラウドで実行中の処理C(サブスクライバSb)から送信されたサブスクライブ420を受け付けた場合を想定する。サブスクライブ420は、トピックCのデータを要求するメッセージである。
(2)情報処理装置101は、メッセージ(サブスクライブ)を受け付けると、拠点管理テーブル130を参照して、メッセージ(サブスクライブ)で指定された第1のトピックに対応するブローカーBrを特定する。上述したように、拠点管理テーブル130は、各拠点B0〜Bnに配置されたブローカーBrとトピックとの対応関係を記憶する記憶部である。
具体的には、例えば、情報処理装置101は、処理配備管理部401により、拠点管理テーブル130を参照して、サブスクライブ410から特定されるトピックBに対応するブローカーBrを特定する。トピックBに対応するブローカーBrとは、トピックBのデータがパブリッシュされるブローカーBrである。
また、情報処理装置101は、処理配備管理部401により、拠点管理テーブル130を参照して、サブスクライブ420から特定されるトピックCに対応するブローカーBrを特定する。トピックCに対応するブローカーBrとは、トピックCのデータがパブリッシュされるブローカーBrである。
図4の例では、拠点B1において、ゲートウェイ装置GW1のプロキシPr1に、センサBからトピックBのデータを含むメッセージが送信され、プロキシPr1からブローカーBr1に当該メッセージが転送される。この結果、拠点B1のブローカーBr1に、トピックBのデータがパブリッシュされる。このため、処理配備管理部401により、トピックBに対応するブローカーBrとして、ブローカーBr1が特定される。
また、拠点B2において、ゲートウェイ装置GW2のプロキシPr2に、センサCからトピックCのデータを含むメッセージが送信される。ここで、拠点B2には、ブローカーBrが配置されていない。このため、プロキシPr2からクラウドのブローカーBr0に、トピックCのデータを含むメッセージが転送される。この結果、クラウドのブローカーBr0に、トピックCのデータがパブリッシュされる。このため、処理配備管理部401により、トピックCに対応するブローカーBrとして、ブローカーBr0が特定される。
(3)情報処理装置101は、特定したブローカーBr宛に、受け付けたメッセージ(サブスクライブ)を転送する。図4の例では、情報処理装置101は、プロキシPr0により、処理配備管理部401により特定されたトピックBに対応するブローカーBr1宛に、サブスクライブ410を転送する。また、情報処理装置101は、プロキシPr0により、処理配備管理部401により特定されたトピックCに対応するブローカーBr0宛に、サブスクライブ420を転送する。
このように、情報処理装置101によれば、クラウド(拠点B0)の処理B(サブスクライバSb)からのサブスクライブ410を、サブスクライブ410で指定されたトピックBのデータがパブリッシュされるブローカーBr1のみに転送することができる。これにより、トピックBのデータがパブリッシュされないブローカーBr0に対する無駄なサブスクライブを削減することができる。
また、情報処理装置101によれば、クラウド(拠点B0)の処理C(サブスクライバSb)からのサブスクライブ420を、サブスクライブ420で指定されたトピックCのデータがパブリッシュされるブローカーBr0のみに転送することができる。これにより、トピックCのデータがパブリッシュされないブローカーBr1に対する無駄なサブスクライブを削減することができる。
(情報処理装置101のハードウェア構成例)
図5は、情報処理装置101のハードウェア構成例を示すブロック図である。図5において、情報処理装置101は、CPU(Central Processing Unit)501と、メモリ502と、I/F(Interface)503と、ディスクドライブ504と、ディスク505と、を有する。また、各構成部は、バス500によってそれぞれ接続される。
ここで、CPU501は、情報処理装置101の全体の制御を司る。CPU501は、複数のコアを有していてもよい。メモリ502は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU501のワークエリアとして使用される。メモリ502に記憶されるプログラムは、CPU501にロードされることで、コーディングされている処理をCPU501に実行させる。
I/F503は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して他のコンピュータ(例えば、エッジ装置Ei、ゲートウェイ装置GWi)に接続される。そして、I/F503は、ネットワーク110と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。I/F503には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ504は、CPU501の制御に従ってディスク505に対するデータのリード/ライトを制御する。ディスク505は、ディスクドライブ504の制御で書き込まれたデータを記憶する。ディスク505としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
なお、情報処理装置101は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ、近距離無線通信I/F等を有することにしてもよい。また、図1に示したエッジ装置Ei、ゲートウェイ装置GWiについても、情報処理装置101と同様のハードウェア構成により実現することができる。
(拠点管理テーブル130の記憶内容)
つぎに、図6を用いて、情報処理装置101が有する拠点管理テーブル130の記憶内容について説明する。拠点管理テーブル130は、例えば、図5に示した情報処理装置101のメモリ502、ディスク505などの記憶装置により実現される。
図6は、拠点管理テーブル130の記憶内容の一例を示す説明図である。図6において、拠点管理テーブル130は、拠点ID、プロキシアドレス、ブローカーアドレス、配備処理およびトピックのフィールドを有し、各フィールドに情報を設定することで、拠点管理情報(例えば、拠点管理情報600−1〜600−3)をレコードとして記憶する。
ここで、拠点IDは、拠点(クラウドまたは拠点Bi)を一意に識別する識別子である。プロキシアドレスは、拠点IDの拠点に配置されたプロキシPrのアドレスである。ブローカーアドレスは、拠点IDの拠点に配置されたブローカーBrのアドレスである。ブローカーアドレス「−(null)」は、拠点IDの拠点にブローカーBrが配置されていないことを示す。
配備処理は、拠点IDの拠点に配備された処理を示す。配備処理「−」は、拠点IDの拠点に処理が配備されていないことを示す。トピックは、拠点IDの拠点に配置されたブローカーBrにパブリッシュされるデータのトピックを示す。トピック「−」は、拠点IDの拠点にブローカーBrが配置されていないことを示す。
例えば、拠点管理情報600−1は、クラウド(拠点B0)に配置されたプロキシPr0のプロキシアドレス「address0」と、クラウド(拠点B0)に配置されたブローカーBr0のブローカーアドレス「address3」を示す。また、拠点管理情報600−1は、クラウド(拠点B0)に配備された処理B、処理Cと、クラウド(拠点B0)に配置されたブローカーBr0にパブリッシュされるデータのトピックCを示す。
(メッセージのデータ構造例)
つぎに、図7を用いて、分散処理システム100において送受信されるメッセージのデータ構造例について説明する。
図7は、メッセージのデータ構造例を示す説明図である。図7において、メッセージ710は、サブスクライバSbからプロキシPrに送信されるサブスクライブのデータ構造例を示す。メッセージ710は、プロキシアドレスと、サブスクライバアドレスと、サブスクライバIDと、トピックとを含む。
プロキシアドレスは、メッセージ710の宛先となるプロキシPrのアドレスである。サブスクライバアドレスは、メッセージ710の送信元となるサブスクライバSbのアドレスである。サブスクライバIDは、メッセージ710の送信元となるサブスクライバSbを一意に識別する識別子である。トピックは、メッセージ710の送信元となるサブスクライバSbが要求するデータのトピックである。
メッセージ720は、プロキシPrからブローカーBrに転送されるサブスクライブのデータ構造を示す。メッセージ720は、ブローカーアドレスと、サブスクライバアドレスと、サブスクライバIDと、トピックとを含む。ブローカーアドレスは、メッセージ720の宛先となるブローカーBrのアドレスである。すなわち、メッセージ720は、メッセージ710のプロキシアドレスをブローカーアドレスに書き換えたものに相当する。
メッセージ730は、パブリッシャPbからプロキシPrに送信されるパブリッシュのデータ構造を示す。メッセージ730は、プロキシアドレスと、パブリッシャアドレスと、トピックと、データとを含む。
プロキシアドレスは、メッセージ730の宛先となるプロキシPrのアドレスである。パブリッシャアドレスは、メッセージ730の送信元となるパブリッシャPbのアドレスである。トピックは、メッセージ730の送信元となるパブリッシャPbから送出されるデータのトピックである。データは、メッセージ730の送信元となるパブリッシャPbから送出されるデータである。
メッセージ740は、プロキシPrからブローカーBrに転送されるパブリッシュのデータ構造を示す。メッセージ740は、ブローカーアドレスと、パブリッシャアドレスと、トピックと、データとを含む。ブローカーアドレスは、メッセージ740の宛先となるブローカーBrのアドレスである。メッセージ740は、メッセージ730のプロキシアドレスをブローカーアドレスに書き換えたものに相当する。
(情報処理装置101の機能的構成例)
図8は、情報処理装置101の機能的構成例を示すブロック図である。図8において、情報処理装置101は、プロキシPr0と、処理配備管理部401と、を含む。プロキシPr0および処理配備管理部401は制御部となる機能であり、具体的には、例えば、図5に示したメモリ502、ディスク505などの記憶装置に記憶されたプログラムをCPU501に実行させることにより、または、I/F503により、その機能を実現する。各機能部の処理結果は、例えば、メモリ502、ディスク505などの記憶装置に記憶される。
まず、プロキシPr0について説明する。プロキシPr0は、受信部801と、アドレス取得部802と、送信部803と、記憶部804と、を含む。記憶部804は、例えば、メモリ502、ディスク505などの記憶装置により実現される。
受信部801は、メッセージを受信する。メッセージとしては、例えば、サブスクライブ、アンサブスクライブ、パブリッシュなどがある。サブスクライブは、あるトピックのデータの要求をブローカーBrに登録するためのメッセージである。サブスクライブのデータ構造については、例えば、図7に示したメッセージ710を参照することができる。
アンサブスクライブは、ブローカーBrに登録した、あるトピックのデータの要求を解除するためのメッセージである。アンサブスクライブのデータ構造については、例えば、図7に示したメッセージ710を参照することができる。パブリッシュは、あるトピックのデータを送信するためのメッセージである。パブリッシュのデータ構造については、例えば、図7に示したメッセージ730を参照することができる。
具体的には、例えば、受信部801は、同一拠点内(クラウド内)のサブスクライバSbからサブスクライブ、または、アンサブスクライブを受信する。また、例えば、受信部801は、同一拠点内(クラウド内)のパブリッシャPbからパブリッシュを受信する。ただし、図1の例では、クラウド内のパブリッシャPbとなるデバイスdvは存在しない。
なお、受信されたメッセージは、記憶部804に格納される。また、アンサブスクライブを受信した場合の処理内容については、サブスクライブを受信した場合の処理内容と同様のため、以降において詳細な説明を省略する。
以下の説明では、トピック#のデータの要求を登録するためのメッセージを「サブスクライブ(トピックC)」と表記し、また、トピック#のデータを含むメッセージを「パブリッシュ(トピックC)」と表記する場合がある。
アドレス取得部802は、受信されたメッセージの転送先のアドレスを取得する。具体的には、例えば、まず、アドレス取得部802は、受信されたメッセージのアドレス問合せを生成する。アドレス問合せは、メッセージの転送先となるブローカーBrのアドレスを問い合わせるメッセージである。
アドレス問合せは、例えば、メッセージ種別と送信元拠点を示す情報を含む。メッセージ種別は、メッセージが、サブスクライブまたはパブリッシュのいずれであるかを示す。送信元拠点を示す情報は、例えば、メッセージの送信元が存在する拠点(クラウドを含む)の拠点IDである。
また、メッセージがサブスクライブの場合には、アドレス問合せは、サブスクライバSbが要求するデータのトピックを示す情報を含む。また、メッセージがパブリッシュの場合、アドレス問合せは、パブリッシャPbが送出したデータのトピックを示す情報を含むことにしてもよい。
例えば、拠点B0(クラウド)のサブスクライバSb(処理C)を送信元とするサブスクライブ(トピックC)についてのアドレス問合せには、メッセージ種別「サブスクライブ」と送信元拠点「B0」とトピック「C」とが含まれる。
つぎに、送信部803は、アドレス取得部802によって生成されたアドレス問合せを、処理配備管理部401に送信する。また、受信部801は、処理配備管理部401からアドレス問合せの応答を受信する。アドレス取得部802は、受信部801によってアドレス問合せの応答が受信されると、当該応答からメッセージの転送先となるブローカーBrのアドレスを取得する。
そして、アドレス取得部802は、取得したアドレスをアドレスリストに登録する。アドレスリストには、例えば、{B0:{adrs:address3,topic:C}}、{B1:{adrs:address4,topic:A}}などが登録される。
送信部803は、受信されたメッセージを、取得された転送先のアドレス宛に転送する。具体的には、例えば、送信部803は、アドレスリストに従って、受信されたメッセージを転送する。より詳細に説明すると、送信部803は、例えば、受信されたメッセージの宛先を、転送先のアドレスに書き換えたメッセージを送信する(例えば、図7参照)。
例えば、サブスクライブ(トピックC)の転送先のアドレスとして、アドレスリストに{B0:{adrs:address3,topic:C}}が登録されているとする。この場合、送信部803は、アドレスリストに従って、サブスクライブ(トピックC)を、拠点B0(クラウド)のブローカーBr0に転送する。
また、サブスクライブ(トピックA)の転送先のアドレスとして、アドレスリストに{B1:{adrs:address4,topic:A}}が登録されているとする。この場合、送信部803は、アドレスリストに従って、サブスクライブ(トピックA)を、拠点B1のブローカーBr1に転送する。
なお、図示および説明は省略するが、各拠点Biのゲートウェイ装置GWiのプロキシPriについても、情報処理装置101のプロキシPr0と同様の機能部を有する。
つぎに、処理配備管理部401について説明する。
処理配備管理部401は、メッセージの転送先となるブローカーBrを特定する。具体的には、例えば、まず、処理配備管理部401は、プロキシPr(Pr0またはPri)からアドレス問合せを受信すると、サブスクライブまたはパブリッシュのいずれの転送先を問い合わせるものであるか否かを判断する。すなわち、処理配備管理部401は、アドレス問合せに含まれるメッセージ種別が、サブスクライブまたはパブリッシュのいずれであるかを判断する。
ここで、メッセージ種別が「サブスクライブ」の場合、処理配備管理部401は、拠点管理テーブル130を参照して、アドレス問合せに含まれるトピックに対応するブローカーアドレスを特定する。ここで特定されるブローカーアドレスは、サブスクライブの転送先となるブローカーBrのアドレスである。そして、処理配備管理部401は、問合せ元のプロキシPr(Pr0またはPri)に対して、特定したブローカーアドレスを含む応答を送信する。
また、メッセージ種別が「パブリッシュ」の場合、処理配備管理部401は、拠点管理テーブル130を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する。ここで特定されるブローカーアドレスは、パブリッシュの転送先となるブローカーBrのアドレスである。そして、処理配備管理部401は、問合せ元のプロキシPr(Pr0またはPri)に対して、特定したブローカーアドレスを含む応答を送信する。
なお、送信元拠点に対応するブローカーアドレスが存在しない場合、処理配備管理部401は、拠点B0(クラウド)に対応するブローカーアドレスを特定する。すなわち、送信元拠点にブローカーBrが配置されていない場合は、処理配備管理部401は、拠点B0(クラウド)に配置されたブローカーBr0を特定する。
また、上述した説明では、送信元拠点は、アドレス問合せに含まれることにしたが、これに限らない。例えば、処理配備管理部401は、拠点管理テーブル130を参照して、問合せ元のプロキシPr(Pr0またはPri)のプロキシアドレスから送信元拠点を特定することにしてもよい。
(分散処理システム100の動作例)
つぎに、図9を用いて、プロキシPrからブローカーBrにサブスクライブを転送する際の分散処理システム100の動作例について説明する。
図9は、分散処理システム100の動作例を示すシーケンス図(その1)である。図9において、(9−1)拠点B1の処理Aは、サブスクライブ(トピックA)をプロキシPr1に送信する。処理Aは、サブスクライバSbであり、エッジ装置E1において実行されている。
(9−2)拠点B1のプロキシPr1は、処理Aからサブスクライブ(トピックA)を受信すると、サブスクライブ(トピックA)についてのアドレス問合せを、クラウド(拠点B0)の処理配備管理部401に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「A」とが含まれる。
(9−3)クラウド(拠点B0)の処理配備管理部401は、プロキシPr1からアドレス問合せを受信すると、拠点管理テーブル130を参照して、アドレス問合せに含まれるトピックAに対応するブローカーアドレス「address4」を特定する。(9−4)クラウド(拠点B0)の処理配備管理部401は、問合せ元のプロキシPr1に対して、特定したブローカーアドレス「address4」を含む応答を送信する。
(9−5)拠点B1のプロキシPr1は、処理配備管理部401から応答を受信すると、処理Aからのサブスクライブ(トピックA)の宛先を、受信した応答に含まれるブローカーアドレス「address4」に書き換えて送信する。これにより、処理Aからのサブスクライブ(トピックA)を、トピックAのデータがパブリッシュされるブローカーBr1に転送することができる。
また、図9において、(9−6)クラウド(拠点B0)の処理Bは、サブスクライブ(トピックB)をプロキシPr0に送信する。処理Bは、サブスクライバSbであり、情報処理装置101において実行されている。
(9−7)クラウド(拠点B0)のプロキシPr0は、処理Bからサブスクライブ(トピックB)を受信すると、サブスクライブ(トピックB)についてのアドレス問合せを、処理配備管理部401に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「B」とが含まれる。
(9−8)クラウド(拠点B0)の処理配備管理部401は、プロキシPr0からアドレス問合せを受信すると、拠点管理テーブル130を参照して、アドレス問合せに含まれるトピックBに対応するブローカーアドレス「address4」を特定する。(9−9)クラウド(拠点B0)の処理配備管理部401は、問合せ元のプロキシPr0に対して、特定したブローカーアドレス「address4」を含む応答を送信する。
(9−10)クラウド(拠点B0)のプロキシPr0は、処理配備管理部401から応答を受信すると、処理Bからのサブスクライブ(トピックB)の宛先を、受信した応答に含まれるブローカーアドレス「address4」に書き換えて送信する。これにより、処理Bからのサブスクライブ(トピックB)を、トピックBのデータがパブリッシュされるブローカーBr1に転送することができる。
また、図9において、(9−11)クラウド(拠点B0)の処理Cは、サブスクライブ(トピックC)をプロキシPr0に送信する。処理Cは、サブスクライバSbであり、情報処理装置101において実行されている。
(9−12)クラウド(拠点B0)のプロキシPr0は、処理Cからサブスクライブ(トピックC)を受信すると、サブスクライブ(トピックC)についてのアドレス問合せを、処理配備管理部401に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「C」とが含まれる。
(9−13)クラウド(拠点B0)の処理配備管理部401は、プロキシPr0からアドレス問合せを受信すると、拠点管理テーブル130を参照して、アドレス問合せに含まれるトピックCに対応するブローカーアドレス「address3」を特定する。(9−14)クラウド(拠点B0)の処理配備管理部401は、問合せ元のプロキシPr0に対して、特定したブローカーアドレス「address3」を含む応答を送信する。
(9−15)クラウド(拠点B0)のプロキシPr0は、処理配備管理部401から応答を受信すると、処理Cからのサブスクライブ(トピックC)の宛先を、受信した応答に含まれるブローカーアドレス「address3」に書き換えて送信する。これにより、処理Cからのサブスクライブ(トピックC)を、トピックCのデータがパブリッシュされるブローカーBr0に転送することができる。
なお、上述した説明では、各拠点BiのプロキシPriは、メッセージを受信した際に、その都度、クラウド(拠点B0)の処理配備管理部401に対して、メッセージの転送先となるブローカーBrを問い合わせる場合を想定して説明したが、これに限らない。例えば、プロキシPriは、あるトピックのメッセージ(パブリッシュまたはサブスクライブ)について転送先を問い合わせたら、その問い合わせ結果を一定期間(例えば、1日)キャッシュして、同じトピックのメッセージを受信した際に利用することにしてもよい。
(拠点管理テーブル130の更新例)
つぎに、図10〜図12を用いて、情報処理装置101が有する拠点管理テーブル130の更新例について説明する。
ここで、拠点Biにおいて、パブリッシャPbとなるデバイスdvは、設置されたり、撤去されたりすることがある。この場合、ブローカーBrにパブリッシュされるデータが変わるため、拠点管理テーブル130を更新しないと、無駄なサブスクライブが発生したり、必要なサブスクライブが届かないといった不都合が生じることがある。
一方で、デバイスdvの設置や撤去に応じて、その都度、拠点管理テーブル130を人手で更新するとなると、メンテナンス作業にかかる負荷が増大するおそれがある。そこで、パブリッシャPbとなるデバイスdvが設置されたり、撤去されたことに応じて、拠点管理テーブル130を自動更新する方法について説明する。
まず、拠点BiのプロキシPriは、デバイスdvからのデータの送出状況を監視して、パブリッシャPbとなる新たなデバイスdvが設置されたことを検出する。プロキシPriは、新たなデバイスdvが設置されたことを検出すると、クラウド(拠点B0)の処理配備管理部401に対して、新たなデバイスdvから送出されるデータの転送先のブローカーBrを問い合わせる。
具体的には、例えば、プロキシPriは、新たなデバイスdvから送出されるデータを含むメッセージ(パブリッシュ)の転送先のブローカーBrを問い合わせるアドレス問合せを処理配備管理部401に送信する。このアドレス問合せには、メッセージ種別と送信元拠点と新たなデバイスdvから送出されるデータのトピックとが含まれる。
クラウド(拠点B0)の処理配備管理部401は、拠点BiのプロキシPriからの問い合わせを受け付けたことに応じて、拠点管理テーブル130を参照して、新たなデバイスdvから送出されるデータの転送先のブローカーBrを特定する。
具体的には、例えば、処理配備管理部401は、拠点管理テーブル130を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する。ここで、送信元拠点に対応するブローカーアドレスが存在しない場合、処理配備管理部401は、拠点B0(クラウド)に対応するブローカーアドレスを特定する。そして、処理配備管理部401は、拠点BiのプロキシPriに対して、特定したブローカーアドレスを含む応答を送信する。
また、処理配備管理部401は、特定した転送先のブローカーBrと新たなデバイスdv(パブリッシャPb)から送信されるデータのトピックとの対応関係を、拠点管理テーブル130に登録する。具体的には、例えば、処理配備管理部401は、特定したブローカーアドレスと対応付けて、アドレス問合せに含まれる新たなデバイスdvから送出されるデータのトピックを拠点管理テーブル130に記憶する。
これにより、パブリッシャPbとなるデバイスdvが設置されたことに応じて、拠点管理テーブル130を自動更新することができる。
つぎに、拠点BiのプロキシPriは、デバイスdvからのデータの送出状況を監視して、パブリッシャPbであるデバイスdvが撤去されたことを検出する。具体的には、例えば、プロキシPriは、パブリッシャPbであるデバイスdvからのデータの送出が一定時間X継続して行われなかった場合に、当該デバイスdvが撤去されたことを検出する。一定時間Xは、任意に設定可能であり、例えば、1日などの時間が設定される。
プロキシPriは、パブリッシャPbであるデバイスdvが撤去されたことを検出すると、クラウド(拠点B0)の処理配備管理部401に対して、当該デバイスdvからのデータの送出(パブリッシュ)が停止されたことを示す通知を行う。具体的には、例えば、プロキシPriは、撤去されたデバイスdvから送出されるデータのトピックに対応付けられたブローカーBrのアドレスを削除するよう依頼するアドレス削除依頼を処理配備管理部401に送信する。このアドレス削除依頼には、送信元拠点と、撤去されたデバイスdvから送出されるデータのトピックとが含まれる。送信元拠点は、プロキシPriが配置された拠点Biである。
クラウド(拠点B0)の処理配備管理部401は、拠点BiのプロキシPriからデバイスdvが撤去されたことを示す通知を受け付けると、拠点管理テーブル130に記憶された、当該デバイスdvから送出されるデータのトピックとブローカーとの対応関係を削除する。
具体的には、例えば、処理配備管理部401は、プロキシPriからのアドレス削除依頼に含まれる送信元拠点とトピックとの組み合わせに対応するブローカーアドレスについて、当該トピックとの対応関係を拠点管理テーブル130から削除する。これにより、パブリッシャPbとなるデバイスdvが撤去されたことに応じて、拠点管理テーブル130を自動更新することができる。
ここで、図10および図11を用いて、パブリッシャPbとなるデバイスdvが設置されたことに応じて、拠点管理テーブル130を更新する際の分散処理システム100の動作例について説明する。
図10は、分散処理システム100の動作例を示すシーケンス図(その2)である。図11は、拠点管理テーブル130の更新例を示す説明図である。ここでは、拠点B1にセンサBが新たに設置されて、トピックBのデータのパブリッシュが開始された場合を想定する。また、拠点B1にセンサBが設置される直前の拠点管理テーブル130を、図11の(11−1)に示す拠点管理テーブル130とする。
図10において、(10−1)拠点B1のセンサBは、パブリッシュ(トピックB)をプロキシPr1に送信する。センサBは、新たに設置されたパブリッシュPbであり、トピックBのデータを送出するデバイスdvである。
(10−2)拠点B1のプロキシPr1は、センサBからパブリッシュ(トピックB)を受信すると、パブリッシュ時刻を記録する。パブリッシュ時刻は、例えば、センサBからパブリッシュ(トピックB)が受信された時刻である。
(10−3)拠点B1のプロキシPr1は、クラウド(拠点B0)の処理配備管理部401に対して、パブリッシュ(トピックB)の転送先のブローカーBrを問い合わせるアドレス問合せを送信する。このアドレス問合せには、メッセージ種別「パブリッシュ」と送信元拠点「B1」とトピック「B」とが含まれる。
(10−4)クラウド(拠点B0)の処理配備管理部401は、拠点B1のプロキシPr1からアドレス問合せを受け付けたことに応じて、拠点管理テーブル130を参照して、アドレス問合せに含まれる送信元拠点「B1」に対応するブローカーアドレスを特定する。図11の(11−1)の例では、送信元拠点「B1」に対応するブローカーアドレス「address4」が特定される。
(10−5)クラウド(拠点B0)処理配備管理部401は、拠点B1のプロキシPr1に対して、特定したブローカーアドレス「address4」を含む応答を送信する。
(10−6)拠点B1のプロキシPr1は、処理配備管理部401から応答を受信すると、センサBからのパブリッシュ(トピックB)の宛先を、受信した応答に含まれるブローカーアドレス「address4」に書き換えて送信する。これにより、拠点B1に新たに設置されたセンサBからのパブリッシュ(トピックB)を、拠点B1のブローカーBr1に転送することができる。
(10−7)クラウド(拠点B0)処理配備管理部401は、特定したブローカーアドレス「address4」と対応付けて、アドレス問合せに含まれるトピック「B」を拠点管理テーブル130に記憶する。これにより、パブリッシャPbとなるセンサBが拠点B1に設置されたことに応じて、拠点B1のブローカーBr1とセンサBから送出されるデータのトピックBとの対応関係を、拠点管理テーブル130に登録することができる。
つぎに、図12を用いて、パブリッシャPbとなるデバイスdvが撤去されたことに応じて、拠点管理テーブル130を更新する際の分散処理システム100の動作例について説明する。
図12は、分散処理システム100の動作例を示すシーケンス図(その3)である。ここでは、拠点B1からセンサBが撤去されて、トピックBのデータのパブリッシュが停止された場合を想定する。また、拠点B1からセンサBが撤去される直前の拠点管理テーブル130を、図11の(11−2)に示す拠点管理テーブル130とする。
図12において、(12−1)拠点B1のプロキシPr1は、センサBからパブリッシュ(トピックB)を前回受信してから一定時間X経過したか否かを判断する。
(12−2)拠点B1のプロキシPr1は、前回受信してから一定時間X経過した場合、クラウド(拠点B0)の処理配備管理部401に対して、センサBから送出されるデータのトピックBに対応付けられたブローカーBrのアドレスを削除するよう依頼するアドレス削除依頼を送信する。このアドレス削除依頼には、送信元拠点「B1」とトピック「B」とが含まれる。
(12−3)クラウド(拠点B0)の処理配備管理部401は、拠点B1のプロキシPr1からアドレス削除依頼を受け付けたことに応じて、拠点管理テーブル130を更新する。具体的には、例えば、処理配備管理部401は、アドレス削除依頼に含まれる送信元拠点「B1」とトピック「B」との組み合わせに対応するブローカーアドレス「address4」について、トピック「B」との対応関係を拠点管理テーブル130から削除する(図11の(11−3)参照)。
これにより、パブリッシャPbであるセンサBが拠点B1から撤去されたことに応じて、拠点B1のブローカーBr1とセンサBから送出されるデータのトピックBとの対応関係を、拠点管理テーブル130から削除することができる。
(情報処理装置101の各種処理手順)
つぎに、図13および図14を用いて、情報処理装置101の各種処理手順について説明する。まず、図13を用いて、情報処理装置101のプロキシPr0のメッセージ転送処理手順について説明する。なお、ゲートウェイ装置GWiのプロキシPriについても、情報処理装置101のプロキシPr0と同様のメッセージ転送処理を実行する。
図13は、情報処理装置101のプロキシPr0のメッセージ転送処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、まず、情報処理装置101のプロキシPr0は、メッセージを受信したか否かを判断する(ステップS1301)。ここで、プロキシPr0は、メッセージを受信するのを待つ(ステップS1301:No)。
そして、プロキシPr0は、メッセージを受信した場合(ステップS1301:Yes)、処理配備管理部401へのアドレス問合せに対する応答であるか否かを判断する(ステップS1302)。ここで、アドレス問合せに対する応答ではない場合(ステップS1302:No)、プロキシPr0は、受信したメッセージを記憶部804に格納する(ステップS1303)。
つぎに、プロキシPr0は、受信されたメッセージのアドレス問合せを生成する(ステップS1304)。アドレス問合せは、メッセージの転送先となるブローカーBrのアドレスを問い合わせるメッセージである。そして、プロキシPr0は、生成したアドレス問合せを、処理配備管理部401に送信して(ステップS1305)、本フローチャートによる一連の処理を終了する。
また、ステップS1302において、アドレス問合せに対する応答の場合(ステップS1302:Yes)、プロキシPr0は、当該応答からメッセージの転送先となるブローカーBrのアドレスを取得する(ステップS1306)。
そして、プロキシPr0は、アドレス問合せしたメッセージを記憶部804から読み出す(ステップS1307)。アドレス問合せしたメッセージは、サブスクライブまたはパブリッシュである。つぎに、プロキシPr0は、読み出したメッセージの宛先を、取得したブローカーBrのアドレスに書き換えることにより、転送メッセージを生成する(ステップS1308)。
そして、プロキシPr0は、生成した転送メッセージを送信して(ステップS1309)、本フローチャートによる一連の処理を終了する。転送メッセージは、パブリッシュであれば、パブリッシャPbが存在する拠点Biまたはクラウド(拠点B0)のブローカーBr宛に送信される。転送メッセージは、サブスクライブであれば、トピックに対応するブローカーBr宛に送信される。
これにより、パブリッシャPbまたはサブスクライバSbからのメッセージ(パブリッシュまたはサブスクライブ)を適切なブローカーBrに転送することができる。
つぎに、図14を用いて、情報処理装置101の処理配備管理部401のアドレス応答処理手順について説明する。
図14は、情報処理装置101の処理配備管理部401のアドレス応答処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、情報処理装置101の処理配備管理部401は、アドレス問合せを受信したか否かを判断する(ステップS1401)。ここで、処理配備管理部401は、アドレス問合せを受信するのを待つ(ステップS1401:No)。
そして、処理配備管理部401は、アドレス問合せを受信した場合(ステップS1401:Yes)、アドレス問合せに含まれるメッセージ種別がパブリッシュであるか否かを判断する(ステップS1402)。ここで、メッセージ種別が「パブリッシュ」の場合(ステップS1402:Yes)、処理配備管理部401は、拠点管理テーブル130を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する(ステップS1403)。
そして、処理配備管理部401は、問合せ元のプロキシPrに対して、特定した送信元拠点に対応するブローカーアドレスを含む応答を送信して(ステップS1404)、本フローチャートによる一連の処理を終了する。これにより、パブリッシュの転送先となるブローカーBrのアドレスを応答することができる。
また、ステップS1402において、メッセージ種別が「サブスクライブ」の場合(ステップS1402:No)、処理配備管理部401は、拠点管理テーブル130を参照して、アドレス問合せに含まれるトピックに対応するブローカーアドレスを特定する(ステップS1405)。
そして、処理配備管理部401は、問合せ元のプロキシPrに対して、特定したトピックに対応するブローカーアドレスを含む応答を送信して(ステップS1406)、本フローチャートによる一連の処理を終了する。これにより、サブスクライブの転送先となるブローカーBrのアドレスを応答することができる。
以上説明したように、実施の形態にかかる情報処理装置101によれば、プロキシPr0により、サブスクライバSbからの第1のトピックのデータを要求するサブスクライブを受け付けると、処理配備管理部401により、拠点管理テーブル130を参照して、第1のトピックに対応するブローカーBrを特定し、プロキシPr0により、特定したブローカーBr宛に、受け付けたサブスクライブを転送することができる。
これにより、クラウド(拠点B0)に配置されたサブスクライバSbからのサブスクライブを、当該サブスクライブで指定されたトピックのデータがパブリッシュされるブローカーBrに転送することができる。
また、情報処理装置101によれば、処理配備管理部401により、拠点Biのゲートウェイ装置GWiのプロキシPriから、拠点BiのサブスクライバSbからの第2のトピックのデータを要求するサブスクライブの転送先のブローカーBrの問い合わせを受け付けることができる。そして、情報処理装置101によれば、処理配備管理部401により、拠点管理テーブル130を参照して、第2のトピックに対応するブローカーBrを特定し、特定したブローカーBrのアドレスを含む応答を、ゲートウェイ装置GWiのプロキシPriに送信することができる。
これにより、拠点Biに配置されたサブスクライバSbからのサブスクライブを、当該サブスクライブで指定されたトピックのデータがパブリッシュされるブローカーBrに転送されるよう制御することができる。
また、情報処理装置101によれば、処理配備管理部401により、拠点Biのゲートウェイ装置GWiのプロキシPriから、拠点Biに設置された新たなパブリッシャPb(デバイスdv)から送出されるデータの転送先のブローカーBrの問い合わせを受け付けた場合、拠点管理テーブル130を参照して、転送先のブローカーBrを特定することができる。そして、情報処理装置101によれば、処理配備管理部401により、特定した転送先のブローカーBrのアドレスを含む応答をプロキシPriに送信するとともに、転送先のブローカーBrと新たなパブリッシャPb(デバイスdv)から送出されるデータのトピックとの対応関係を、拠点管理テーブル130に登録することができる。
これにより、パブリッシャPbとなる新たなデバイスdvが拠点Biに設置されたことに応じて、拠点管理テーブル130を自動更新することができ、メンテナンス作業にかかる負荷を削減することができる。また、新たなデバイスdvの設置にともなう拠点管理テーブル130の更新忘れを防ぐことができるため、必要なサブスクライブがブローカーBrに届かないといった不都合が生じるのを防ぐことができる。
また、情報処理装置101によれば、処理配備管理部401により、拠点Biのゲートウェイ装置GWiのプロキシPriから、拠点Biの特定のパブリッシャPb(デバイスdv)からのデータの送出が停止されたことを示す通知を受け付けると、拠点管理テーブル130に記憶された、特定のパブリッシャPb(デバイスdv)からのデータのトピックとブローカーBrとの対応関係を削除することができる。
これにより、パブリッシャPbであるデバイスdvが拠点Biから撤去されたことに応じて、拠点管理テーブル130を自動更新することができ、メンテナンス作業にかかる負荷を削減することができる。また、デバイスdvの撤去にともなう拠点管理テーブル130の更新忘れを防ぐことができるため、無駄なサブスクライブがブローカーBrに届くといった不都合が生じるのを防ぐことができる。
これらのことから、実施の形態にかかる分散処理システム100によれば、無駄なメッセージ(サブスクライブ)のやり取りを削減することが可能となり、通信トラフィックの増大化を防ぐとともに、各ブローカーBrにかかる処理負荷を軽減することができる。
なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散処理プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本分散処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
制御部を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点のサブスクライバからの第2のトピックのデータを要求するメッセージの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記第2のトピックに対応するブローカーを特定し、
特定した前記ブローカーのアドレスを含む応答を前記他の情報処理装置に送信する、
ことを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点に設置された新たなパブリッシャからのデータの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記転送先のブローカーを特定し、
特定した前記転送先のブローカーのアドレスを含む応答を前記他の情報処理装置に送信するとともに、前記転送先のブローカーと前記新たなパブリッシャからのデータのトピックとの対応関係を前記記憶部に登録する、
ことを特徴とする付記1または2に記載の情報処理装置。
(付記4)前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点の特定のパブリッシャからのデータの送出が停止されたことを示す通知を受け付けると、前記記憶部に記憶された、前記特定のパブリッシャからのデータのトピックとブローカーとの対応関係を削除する、
ことを特徴とする付記3に記載の情報処理装置。
(付記5)前記通知は、前記特定のパブリッシャからのデータの送出が一定時間継続して行われなかった場合に行われる、ことを特徴とする付記4に記載の情報処理装置。
(付記6)前記複数の拠点の拠点間は、広域通信網を介して接続される、ことを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
(付記7)サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
処理をコンピュータに実行させることを特徴とする分散処理プログラム。
(付記8)複数のエッジ装置を含む分散処理システムであって、
サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する情報処理装置と、
前記情報処理装置とは異なる他の拠点に配置されたブローカーを有するエッジ装置と、
を含むことを特徴とする分散処理システム。
100 分散処理システム
101 情報処理装置
110,120 ネットワーク
130 拠点管理テーブル
401 処理配備管理部
410,420 サブスクライブ
500 バス
501 CPU
502 メモリ
503 I/F
504 ディスクドライブ
505 ディスク
801 受信部
802 アドレス取得部
803 送信部
804 記憶部

Claims (6)

  1. サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、
    特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
    制御部を有することを特徴とする情報処理装置。
  2. 前記制御部は、
    自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点のサブスクライバからの第2のトピックのデータを要求するメッセージの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記第2のトピックに対応するブローカーを特定し、
    特定した前記ブローカーのアドレスを含む応答を前記他の情報処理装置に送信する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記制御部は、
    自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点に設置された新たなパブリッシャからのデータの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記転送先のブローカーを特定し、
    特定した前記転送先のブローカーのアドレスを含む応答を前記他の情報処理装置に送信するとともに、前記転送先のブローカーと前記新たなパブリッシャからのデータのトピックとの対応関係を前記記憶部に登録する、
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記制御部は、
    自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点の特定のパブリッシャからのデータの送出が停止されたことを示す通知を受け付けると、前記記憶部に記憶された、前記特定のパブリッシャからのデータのトピックとブローカーとの対応関係を削除する、
    ことを特徴とする請求項3に記載の情報処理装置。
  5. サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、
    特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
    処理をコンピュータに実行させることを特徴とする分散処理プログラム。
  6. 複数のエッジ装置を含む分散処理システムであって、
    サブスクライバからの第1のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第1のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する情報処理装置と、
    前記情報処理装置とは異なる他の拠点に配置されたブローカーを有するエッジ装置と、
    を含むことを特徴とする分散処理システム。
JP2018076418A 2018-04-11 2018-04-11 情報処理装置、分散処理プログラムおよび分散処理システム Withdrawn JP2019186771A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018076418A JP2019186771A (ja) 2018-04-11 2018-04-11 情報処理装置、分散処理プログラムおよび分散処理システム
US16/377,757 US20190320033A1 (en) 2018-04-11 2019-04-08 Apparatus and method to reduce communication traffic in a decentralized processing system of a publish/subscribe model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018076418A JP2019186771A (ja) 2018-04-11 2018-04-11 情報処理装置、分散処理プログラムおよび分散処理システム

Publications (1)

Publication Number Publication Date
JP2019186771A true JP2019186771A (ja) 2019-10-24

Family

ID=68160591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018076418A Withdrawn JP2019186771A (ja) 2018-04-11 2018-04-11 情報処理装置、分散処理プログラムおよび分散処理システム

Country Status (2)

Country Link
US (1) US20190320033A1 (ja)
JP (1) JP2019186771A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021195180A1 (en) * 2020-03-26 2021-09-30 View, Inc. Access and messaging in a multi client network
US11579571B2 (en) 2014-03-05 2023-02-14 View, Inc. Monitoring sites containing switchable optical devices and controllers
US11631493B2 (en) 2020-05-27 2023-04-18 View Operating Corporation Systems and methods for managing building wellness
US11668992B2 (en) 2011-03-16 2023-06-06 View, Inc. Commissioning window networks
US11681197B2 (en) 2011-03-16 2023-06-20 View, Inc. Onboard controller for multistate windows
US11687045B2 (en) 2012-04-13 2023-06-27 View, Inc. Monitoring sites containing switchable optical devices and controllers
US11740948B2 (en) 2014-12-08 2023-08-29 View, Inc. Multiple interacting systems at a site
US11754902B2 (en) 2009-12-22 2023-09-12 View, Inc. Self-contained EC IGU
US11868103B2 (en) 2014-03-05 2024-01-09 View, Inc. Site monitoring system
US11892737B2 (en) 2014-06-30 2024-02-06 View, Inc. Control methods and systems for networks of optically switchable windows during reduced power availability

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436242B2 (en) * 2019-09-20 2022-09-06 Fisher-Rosemount Systems, Inc. Edge gateway system with contextualized process plant knowledge repository

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6069947A (en) * 1997-12-16 2000-05-30 Nortel Networks Corporation Communication system architecture and operating protocol therefor
US6385196B1 (en) * 1997-12-16 2002-05-07 Nortel Networks Limited Communication system architecture and a management control agent and operating protocol therefor
US6298043B1 (en) * 1998-03-28 2001-10-02 Nortel Networks Limited Communication system architecture and a connection verification mechanism therefor
US6510429B1 (en) * 1998-04-29 2003-01-21 International Business Machines Corporation Message broker apparatus, method and computer program product
US7302383B2 (en) * 2002-09-12 2007-11-27 Luis Calixto Valles Apparatus and methods for developing conversational applications
US8428584B2 (en) * 2005-07-01 2013-04-23 Research In Motion Limited System and method for accelerating network selection by a wireless user equipment (UE) device
US9125123B2 (en) * 2012-06-13 2015-09-01 All Purpose Networks LLC Efficient delivery of real-time asynchronous services over a wireless network
FI127364B (en) * 2013-05-10 2018-04-30 Cloudstreet Oy MANAGEMENT OF WIRELESS COMMUNICATION CAPACITY

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11754902B2 (en) 2009-12-22 2023-09-12 View, Inc. Self-contained EC IGU
US11927866B2 (en) 2009-12-22 2024-03-12 View, Inc. Self-contained EC IGU
US11668992B2 (en) 2011-03-16 2023-06-06 View, Inc. Commissioning window networks
US11681197B2 (en) 2011-03-16 2023-06-20 View, Inc. Onboard controller for multistate windows
US11687045B2 (en) 2012-04-13 2023-06-27 View, Inc. Monitoring sites containing switchable optical devices and controllers
US11733660B2 (en) 2014-03-05 2023-08-22 View, Inc. Monitoring sites containing switchable optical devices and controllers
US11868103B2 (en) 2014-03-05 2024-01-09 View, Inc. Site monitoring system
US11579571B2 (en) 2014-03-05 2023-02-14 View, Inc. Monitoring sites containing switchable optical devices and controllers
US11892737B2 (en) 2014-06-30 2024-02-06 View, Inc. Control methods and systems for networks of optically switchable windows during reduced power availability
US11740948B2 (en) 2014-12-08 2023-08-29 View, Inc. Multiple interacting systems at a site
US11948015B2 (en) 2014-12-08 2024-04-02 View, Inc. Multiple interacting systems at a site
WO2021195180A1 (en) * 2020-03-26 2021-09-30 View, Inc. Access and messaging in a multi client network
US11750594B2 (en) 2020-03-26 2023-09-05 View, Inc. Access and messaging in a multi client network
US11882111B2 (en) 2020-03-26 2024-01-23 View, Inc. Access and messaging in a multi client network
US11631493B2 (en) 2020-05-27 2023-04-18 View Operating Corporation Systems and methods for managing building wellness

Also Published As

Publication number Publication date
US20190320033A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
JP2019186771A (ja) 情報処理装置、分散処理プログラムおよび分散処理システム
TWI431978B (zh) Methods, devices and systems for obtaining resources
JP5847185B2 (ja) コンテンツ中心のネットワーク環境でグループ変更に関する情報を用いるコンテンツ共有方法及び装置
US7277896B2 (en) File sharing system and client apparatus
JP4274231B2 (ja) 中継サーバおよび中継通信システム
US8069246B2 (en) Relay server and relay communication system including a relay group information registration unit, a shared resource information registration unit, and a control unit
JP4661774B2 (ja) 中継サーバ
JP4406850B2 (ja) 中継サーバ及び中継通信システム
JP5125087B2 (ja) 中継サーバ
EP3230885B1 (en) Method for content retrieval from remote network regions
JP6601784B2 (ja) 情報指向ネットワークにおいてコンテキスト認識型コンテンツ要求をサポートするための方法、ネットワークコンポーネント、およびプログラム
WO2008131653A1 (fr) Système et procédé pour la réalisation d'une mémoire d'abonnement à un réseau et serveur d'abonnement
JPWO2006100723A1 (ja) ファイル管理システム
US7680130B2 (en) Method for finding resource and service in network and relay node apparatus
JP2017201776A (ja) 不均一ネットワークにまたがるコンテンツ配送
US7953918B2 (en) Service bus linking method and service bus for linking plurality of service buses together
EP2802108A1 (en) Data-oriented communication system, node, and data transfer method
JP2009152995A (ja) 通信システム、通信システムに用いられる送信端末、通信システムに用いられる中継端末、通信システムにおける通信方法及び通信システムに用いられるコンピュータプログラム
JPWO2019059034A1 (ja) アクセス管理装置及びアクセス管理方法
CN101299705B (zh) 中继服务器以及中继通信系统
JP2006259845A (ja) サーバ装置、サーバシステムおよびサーバシステムの負荷分散方法
JP2000242587A (ja) オブジェクト処理装置及びそのプログラム記憶媒体
JP2001223730A (ja) ゲートウェイ装置および記録媒体
JP7207145B2 (ja) 情報処理装置、配送プログラムおよび分散処理システム
JPH11331256A (ja) ネットワーク接続先切り替えシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210908

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20211004