(57)【要約】【課題】無駄なメッセージを削減すること。【解決手段】情報処理装置１０１は、サブスクライバＳｂからのメッセージ（サブスクライブ）を受け付ける。情報処理装置１０１は、メッセージ（サブスクライブ）を受け付けると、各拠点に配置されたブローカーＢｒとトピックとの対応関係を記憶する拠点管理テーブル１３０を参照して、メッセージ（サブスクライブ）で指定された第１のトピックに対応するブローカーＢｒを特定する。情報処理装置１０１は、特定したブローカーＢｒ宛に、受け付けたメッセージ（サブスクライブ）を転送する。【選択図】図４
2019186771.tif 000002
【特許請求の範囲】
【請求項１】
サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
制御部を有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点のサブスクライバからの第２のトピックのデータを要求するメッセージの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記第２のトピックに対応するブローカーを特定し、
特定した前記ブローカーのアドレスを含む応答を前記他の情報処理装置に送信する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点に設置された新たなパブリッシャからのデータの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記転送先のブローカーを特定し、
特定した前記転送先のブローカーのアドレスを含む応答を前記他の情報処理装置に送信するとともに、前記転送先のブローカーと前記新たなパブリッシャからのデータのトピックとの対応関係を前記記憶部に登録する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点の特定のパブリッシャからのデータの送出が停止されたことを示す通知を受け付けると、前記記憶部に記憶された、前記特定のパブリッシャからのデータのトピックとブローカーとの対応関係を削除する、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
処理をコンピュータに実行させることを特徴とする分散処理プログラム。
【請求項６】
複数のエッジ装置を含む分散処理システムであって、
サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する情報処理装置と、
前記情報処理装置とは異なる他の拠点に配置されたブローカーを有するエッジ装置と、
を含むことを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、分散処理プログラムおよび分散処理システムに関する。
【背景技術】
【０００２】
ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）の進展にともなって、エンドデバイスが生み出すデータ量が増加し、全てのデータの処理やデバイスの制御をクラウドで行うことが難しくなってきている。このため、エッジコンピューティングによる分散処理環境に注目が集まっている。エッジコンピューティングは、コンピュータネットワーク上で、利用者に近い場所に複数のエッジ装置を配置して、負荷の分散と通信の低遅延化を図る技術である。
【０００３】
また、パブリッシュ／サブスクライブモデルのデータ収集方法が知られている。このデータ収集方法では、サブスクライバが、ブローカーを介してパブリッシャからのデータを取得する。パブリッシャは、データを提供する側であり、サブスクライバを意識することなく、ブローカーにデータを送る。サブスクライバは、データを利用する側であり、パブリッシャを意識することなく、ブローカーにデータを要求する。
【０００４】
先行技術としては、複数の通信機器がネットワークに接続する情報配信システムにおいて、通信機器に含まれるノードが、トピックを識別可能なキーを生成し、キーと、他のノードから通知される他のノードについてのキーとを参照し、Ｍｕｌｔｉ−ｋｅｙ  Ｓｋｉｐ  Ｇｒａｐｈにおける経路表を構築し、経路表に従い、メッセージを送信するものがある。また、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを、遠隔メッセージ・ブローカーに接続するためのメッセージ・ブローカリング・システムがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１１５７８４号公報
【特許文献２】特表２００６−５２３９０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、エッジコンピューティングによる分散処理システムにおいて、パブリッシュ／サブスクライブモデルのデータ収集方法を用いる場合、サブスクライブにかかる無駄なメッセージのやり取りが行われるおそれがある。
【０００７】
一つの側面では、本発明は、無駄なメッセージを削減することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、情報処理装置が提供される。
【発明の効果】
【０００９】
本発明の一側面によれば、無駄なメッセージを削減することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、分散処理システム１００のシステム構成例を示す説明図である。
【図２】図２は、パブリッシュ／サブスクライブモデルの一例を示す説明図である。
【図３】図３は、ブローカーの動作例を示す説明図である。
【図４】図４は、分散処理システム１００の一実施例を示す説明図である。
【図５】図５は、情報処理装置１０１のハードウェア構成例を示すブロック図である。
【図６】図６は、拠点管理テーブル１３０の記憶内容の一例を示す説明図である。
【図７】図７は、メッセージのデータ構造例を示す説明図である。
【図８】図８は、情報処理装置１０１の機能的構成例を示すブロック図である。
【図９】図９は、分散処理システム１００の動作例を示すシーケンス図（その１）である。
【図１０】図１０は、分散処理システム１００の動作例を示すシーケンス図（その２）である。
【図１１】図１１は、拠点管理テーブル１３０の更新例を示す説明図である。
【図１２】図１２は、分散処理システム１００の動作例を示すシーケンス図（その３）である。
【図１３】図１３は、情報処理装置１０１のプロキシＰｒ０のメッセージ転送処理手順の一例を示すフローチャートである。
【図１４】図１４は、情報処理装置１０１の処理配備管理部４０１のアドレス応答処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に図面を参照して、本発明にかかる情報処理装置、分散処理プログラムおよび分散処理システムの実施の形態を詳細に説明する。
【００１２】
（実施の形態）
まず、実施の形態にかかる分散処理システム１００のシステム構成について説明する。分散処理システム１００は、エッジコンピューティングによる分散処理システムである。また、分散処理システム１００では、パブリッシュ／サブスクライブモデルのデータ収集方法を用いる。
【００１３】
図１は、分散処理システム１００のシステム構成例を示す説明図である。図１において、分散処理システム１００は、拠点Ｂ０〜Ｂｎ（ｎ：１以上の自然数）を含む。分散処理システム１００において、拠点Ｂ０〜Ｂｎの拠点間は、ネットワーク１１０を介して相互に通信可能に接続される。ネットワーク１１０は、例えば、広域通信網（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットである。
【００１４】
拠点Ｂ０は、情報処理装置１０１を含む。情報処理装置１０１は、拠点管理テーブル１３０を有し、サブスクライバＳｂからのメッセージをブローカーＢｒに転送する制御を行うコンピュータである。例えば、情報処理装置１０１は、クラウドコンピューティングのサーバである。
【００１５】
拠点管理テーブル１３０は、各拠点Ｂ０〜Ｂｎに配置されたブローカーＢｒとトピックとの対応関係を記憶する記憶部である。トピックは、パブリッシャＰｂから送出されるデータの特徴を表す。サブスクライバＳｂ、パブリッシャＰｂおよびブローカーＢｒについての説明は、図２および図３を用いて後述する。また、拠点管理テーブル１３０の記憶内容については、図６を用いて後述する。
【００１６】
以下の説明では、拠点Ｂ０を「クラウド」と表記する場合がある。また、拠点Ｂ０を除く拠点Ｂ１〜Ｂｎのうちの任意の拠点を「拠点Ｂｉ」と表記する場合がある（ｉ＝１，２，…，ｎ）。
【００１７】
拠点Ｂｉは、ゲートウェイ装置ＧＷｉと、エッジ装置Ｅｉとを含む。拠点Ｂｉにおいて、ゲートウェイ装置ＧＷｉおよびエッジ装置Ｅｉは、ネットワーク１２０を介して相互に通信可能に接続される。ネットワーク１２０は、例えば、構内通信網（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
【００１８】
ゲートウェイ装置ＧＷｉは、近距離無線通信または有線通信により、デバイスｄｖから送出されるデータを受信する情報処理装置である。近距離無線通信としては、無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などを利用した通信が挙げられる。デバイスｄｖは、工場などに設置される生産機器、組立機器、環境センサ、カメラなどの機器である。
【００１９】
また、ゲートウェイ装置ＧＷｉは、デバイスｄｖから受信したデータを、他のコンピュータ（例えば、エッジ装置Ｅｉ、情報処理装置１０１）に中継する機能を有する。ゲートウェイ装置ＧＷｉは、例えば、無線ＬＡＮやＢｌｕｅｔｏｏｔｈなどのアクセスポイントであってもよく、また、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）であってもよい。
【００２０】
エッジ装置Ｅｉは、各種処理を行う情報処理装置である。エッジ装置Ｅｉは、エッジコンピューティングにおけるエッジサーバであり、情報処理装置１０１（クラウド）に比べて、デバイスｄｖやユーザに近い位置に配置される。エッジ装置Ｅｉは、例えば、サーバ、ＰＣ、アクセスポイントなどである。
【００２１】
なお、図１の例では、拠点Ｂｉ内のエッジ装置Ｅｉおよびゲートウェイ装置ＧＷｉを、それぞれ１台のみ表記したが、これに限らない。例えば、拠点Ｂｉには、２台以上のエッジ装置Ｅｉやゲートウェイ装置ＧＷｉが含まれていてもよい。また、情報処理装置１０１は、複数のコンピュータにより実現されることにしてもよい。
【００２２】
（パブリッシュ／サブスクライブモデル）
つぎに、図２および図３を用いて、パブリッシュ／サブスクライブモデルのデータ収集方法について説明する。
【００２３】
図２は、パブリッシュ／サブスクライブモデルの一例を示す説明図である。パブリッシュ／サブスクライブモデルのデータ収集方法では、パブリッシャＰｂは、データを提供するものであり、サブスクライバＳｂを意識することなく、ブローカーＢｒ宛にデータを送る。パブリッシャＰｂは、例えば、図１に示したデバイスｄｖである。
【００２４】
また、サブスクライバＳｂは、データを要求するものであり、パブリッシャＰｂを意識することなく、ブローカーＢｒにデータを要求する。サブスクライバＳｂは、ブローカーＢｒに要求したデータが届いたら、ブローカーＢｒからデータを取得する。サブスクライバＳｂは、例えば、デバイスｄｖから送出されるデータを用いて実行される処理（アプリケーション）である。
【００２５】
ここで、図３を用いて、ブローカーＢｒの動作例について説明する。ブローカーＢｒは、パブリッシャＰｂとサブスクライバＳｂとの間を仲介するものである。
【００２６】
図３は、ブローカーの動作例を示す説明図である。図３において、各サブスクライバ＃１〜＃４は、ブローカーＢｒに対して、あるトピックのデータを要求する登録を行う。各パブリッシャ＄１〜＄３は、トピックとデータとを含むメッセージＭをブローカーＢｒ宛に送信する。
【００２７】
トピックとは、データの特徴を表すものである。トピックは、例えば、データのタイトル、種類、形式などを示す。なお、パブリッシャＰｂやサブスクライバＳｂにおいて、トピックとしてどのような情報を指定するかは予め決められている。
【００２８】
ブローカーＢｒは、どのサブスクライバＳｂが、どのトピックのデータを要求したのかを管理する。図３の例では、ブローカーＢｒは、トピックとサブスクライバＩＤとを対応付けて記憶するテーブル３００を用いて、サブスクライバＳｂとトピックとの対応関係を管理する。サブスクライバＩＤは、サブスクライバＳｂを一意に識別する識別子である。
【００２９】
例えば、ブローカーＢｒは、パブリッシャ＄１からのトピック１のデータを含むメッセージＭを受け付けると、トピック１のメッセージ・キューに入れる。そして、ブローカーＢｒは、テーブル３００を参照して、トピック１のメッセージ・キューに入れたメッセージＭを、先に入れたものから順に、トピック１のデータを要求したサブスクライバ＃１，＃２宛に送る。
【００３０】
このようなパブリッシュ／サブスクライブモデルのデータ収集方法は、例えば、データをどのように用いるかは決まっていないものの、次々とデータを収集していくようなシステムに適したデータ収集方法である。
【００３１】
以下の説明では、サブスクライバＳｂが、あるトピックのデータを要求する登録を行うこと、あるいは、あるトピックのデータを要求するメッセージ自体を「サブスクライブ」と表記する場合がある。また、パブリッシャＰｂが、トピックとデータとを含むメッセージを送信すること、あるいは、トピックとデータとを含むメッセージ自体を「パブリッシュ」と表記する場合がある。
【００３２】
ここで、エッジコンピューティングによる分散処理システム（例えば、分散処理システム１００）において、パブリッシュ／サブスクライブモデルのデータ収集方法を用いる場合、クラウド上だけでなく、拠点側にもブローカーＢｒを配置することが望ましいことがある。
【００３３】
例えば、クラウド上で実行されていた一部の処理（例えば、アプリケーション）を拠点側に移動する場合、ブローカーＢｒがクラウドにあると、データを一旦クラウドに送ることになり、拠点側に処理を移動した効果が得られなくなるおそれがある。このため、クラウドから処理を移動した拠点側にもブローカーＢｒを配置することが望ましい。
【００３４】
この場合、例えば、クラウドの処理配備管理機能により、どの拠点に処理を移動してブローカーＢｒを配置したのかということを管理することができる。処理配備管理機能は、クラウド上で実行されていた処理を拠点側に移動する処理を実行する機能である。
【００３５】
一方で、パブリッシャＰｂとなる各拠点内のデバイス（例えば、デバイスｄｖ）は、分散処理システムの管理者側から遠隔操作できない場合がある。この場合、拠点側にブローカーＢｒを配置した際に、メッセージ（パブリッシュ）の宛先を、クラウドのブローカーＢｒから拠点側のブローカーＢｒに変更する設定を行うことができない。
【００３６】
このため、各拠点に、プロキシと呼ばれる機能を配置することが考えられる。プロキシは、拠点内のパブリッシャＰｂからのメッセージ（パブリッシュ）を受け付けると、当該メッセージの転送先となるブローカーＢｒを、クラウドの処理配備管理機能に問い合わせる。
【００３７】
メッセージ（パブリッシュ）の転送先は、プロキシと同じ拠点にブローカーＢｒがいれば、そのブローカーＢｒとなり、同じ拠点にブローカーＢｒがいなければ、クラウドのブローカーＢｒとなる。プロキシによれば、拠点内で発生したメッセージ（パブリッシュ）を適切に転送することができる。
【００３８】
ところが、クラウドの処理配備管理機能において、どの拠点にブローカーＢｒを配置したのかということを管理するだけでは、どの拠点でどのトピックのデータが発生しているのかまではわからない。このため、各サブスクライバＳｂからのメッセージ（サブスクライブ）は、全拠点（クラウドを含む）のブローカーＢｒに転送することになる。
【００３９】
しかしながら、サブスクライバＳｂが要求するデータが送られてくることのないブローカーＢｒへのメッセージ（サブスクライブ）は無駄である。無駄なメッセージ（サブスクライブ）のやり取りは、通信トラフィックの増大化を招くとともに、ブローカーＢｒでの無駄なサブスクライブについての登録処理を生じさせる。
【００４０】
そこで、本実施の形態では、情報処理装置１０１において、各拠点（拠点Ｂ０，Ｂｉ）のブローカーＢｒにパブリッシュされるデータのトピックについて管理することで、無駄なメッセージ（サブスクライブ）を削減する分散処理システム１００について説明する。ここで、図４を用いて、分散処理システム１００の一実施例について説明する。
【００４１】
図４は、分散処理システム１００の一実施例を示す説明図である。図４において、拠点Ｂ０（クラウド）と、拠点Ｂ１と、拠点Ｂ２とが示されている。情報処理装置１０１は、プロキシＰｒ０と、処理配備管理部４０１と、ブローカーＢｒ０と、を有する。また、情報処理装置１０１は、処理Ｂ，Ｃを実行する。
【００４２】
ただし、ブローカーＢｒ０は、拠点Ｂ０（クラウド）内の情報処理装置１０１と接続された他のコンピュータにより実現されることにしてもよい。また、処理Ｂ，Ｃは、拠点Ｂ０（クラウド）内の情報処理装置１０１と接続された他のコンピュータにより実行されることにしてもよい。
【００４３】
各拠点Ｂ１，Ｂ２のゲートウェイＧＷ１，ＧＷ２は、プロキシＰｒ１，Ｐｒ２を有する。拠点Ｂ１には、センサＡ，Ｂが設置されている。ゲートウェイ装置ＧＷ１のプロキシＰｒ１には、センサＡからトピックＡのデータがパブリッシュされ、センサＢからトピックＢのデータがパブリッシュされる。また、拠点Ｂ２には、センサＣが設置されている。ゲートウェイ装置ＧＷ２のプロキシＰｒ２には、センサＣからトピックＣのデータがパブリッシュされる。なお、センサＡ，Ｂ，Ｃは、デバイスｄｖの一例である。
【００４４】
ここでは、拠点Ｂ０（クラウド）で実行されていた処理Ａ，Ｂ，Ｃのうち、処理Ａが拠点Ｂ１に移動されてエッジ装置Ｅ１により実行される場合を想定する。この場合、拠点Ｂ１にブローカーＢｒ１が配置される。ブローカーＢｒ１は、例えば、エッジ装置Ｅ１により実現される。
【００４５】
以下、情報処理装置１０１が拠点Ｂ０（クラウド）のサブスクライバＳｂ（処理Ｂ，Ｃ）からのメッセージをブローカーＢｒに転送する場合を例に挙げて、情報処理装置１０１の処理例について説明する。
【００４６】
（１）情報処理装置１０１は、サブスクライバＳｂからのメッセージ（サブスクライブ）を受け付ける。メッセージ（サブスクライブ）は、第１のトピックのデータを要求するメッセージである。なお、メッセージ（サブスクライブ）のデータ構造例については、図７を用いて後述する。
【００４７】
図４の例では、情報処理装置１０１が、プロキシＰｒ０により、クラウドで実行中の処理Ｂ（サブスクライバＳｂ）から送信されたサブスクライブ４１０を受け付けた場合を想定する。サブスクライブ４１０は、トピックＢのデータを要求するメッセージである。また、情報処理装置１０１が、プロキシＰｒ０により、クラウドで実行中の処理Ｃ（サブスクライバＳｂ）から送信されたサブスクライブ４２０を受け付けた場合を想定する。サブスクライブ４２０は、トピックＣのデータを要求するメッセージである。
【００４８】
（２）情報処理装置１０１は、メッセージ（サブスクライブ）を受け付けると、拠点管理テーブル１３０を参照して、メッセージ（サブスクライブ）で指定された第１のトピックに対応するブローカーＢｒを特定する。上述したように、拠点管理テーブル１３０は、各拠点Ｂ０〜Ｂｎに配置されたブローカーＢｒとトピックとの対応関係を記憶する記憶部である。
【００４９】
具体的には、例えば、情報処理装置１０１は、処理配備管理部４０１により、拠点管理テーブル１３０を参照して、サブスクライブ４１０から特定されるトピックＢに対応するブローカーＢｒを特定する。トピックＢに対応するブローカーＢｒとは、トピックＢのデータがパブリッシュされるブローカーＢｒである。
【００５０】
また、情報処理装置１０１は、処理配備管理部４０１により、拠点管理テーブル１３０を参照して、サブスクライブ４２０から特定されるトピックＣに対応するブローカーＢｒを特定する。トピックＣに対応するブローカーＢｒとは、トピックＣのデータがパブリッシュされるブローカーＢｒである。
【００５１】
図４の例では、拠点Ｂ１において、ゲートウェイ装置ＧＷ１のプロキシＰｒ１に、センサＢからトピックＢのデータを含むメッセージが送信され、プロキシＰｒ１からブローカーＢｒ１に当該メッセージが転送される。この結果、拠点Ｂ１のブローカーＢｒ１に、トピックＢのデータがパブリッシュされる。このため、処理配備管理部４０１により、トピックＢに対応するブローカーＢｒとして、ブローカーＢｒ１が特定される。
【００５２】
また、拠点Ｂ２において、ゲートウェイ装置ＧＷ２のプロキシＰｒ２に、センサＣからトピックＣのデータを含むメッセージが送信される。ここで、拠点Ｂ２には、ブローカーＢｒが配置されていない。このため、プロキシＰｒ２からクラウドのブローカーＢｒ０に、トピックＣのデータを含むメッセージが転送される。この結果、クラウドのブローカーＢｒ０に、トピックＣのデータがパブリッシュされる。このため、処理配備管理部４０１により、トピックＣに対応するブローカーＢｒとして、ブローカーＢｒ０が特定される。
【００５３】
（３）情報処理装置１０１は、特定したブローカーＢｒ宛に、受け付けたメッセージ（サブスクライブ）を転送する。図４の例では、情報処理装置１０１は、プロキシＰｒ０により、処理配備管理部４０１により特定されたトピックＢに対応するブローカーＢｒ１宛に、サブスクライブ４１０を転送する。また、情報処理装置１０１は、プロキシＰｒ０により、処理配備管理部４０１により特定されたトピックＣに対応するブローカーＢｒ０宛に、サブスクライブ４２０を転送する。
【００５４】
このように、情報処理装置１０１によれば、クラウド（拠点Ｂ０）の処理Ｂ（サブスクライバＳｂ）からのサブスクライブ４１０を、サブスクライブ４１０で指定されたトピックＢのデータがパブリッシュされるブローカーＢｒ１のみに転送することができる。これにより、トピックＢのデータがパブリッシュされないブローカーＢｒ０に対する無駄なサブスクライブを削減することができる。
【００５５】
また、情報処理装置１０１によれば、クラウド（拠点Ｂ０）の処理Ｃ（サブスクライバＳｂ）からのサブスクライブ４２０を、サブスクライブ４２０で指定されたトピックＣのデータがパブリッシュされるブローカーＢｒ０のみに転送することができる。これにより、トピックＣのデータがパブリッシュされないブローカーＢｒ１に対する無駄なサブスクライブを削減することができる。
【００５６】
（情報処理装置１０１のハードウェア構成例）
図５は、情報処理装置１０１のハードウェア構成例を示すブロック図である。図５において、情報処理装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、メモリ５０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０３と、ディスクドライブ５０４と、ディスク５０５と、を有する。また、各構成部は、バス５００によってそれぞれ接続される。
【００５７】
ここで、ＣＰＵ５０１は、情報処理装置１０１の全体の制御を司る。ＣＰＵ５０１は、複数のコアを有していてもよい。メモリ５０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ５０１のワークエリアとして使用される。メモリ５０２に記憶されるプログラムは、ＣＰＵ５０１にロードされることで、コーディングされている処理をＣＰＵ５０１に実行させる。
【００５８】
Ｉ／Ｆ５０３は、通信回線を通じてネットワーク１１０に接続され、ネットワーク１１０を介して他のコンピュータ（例えば、エッジ装置Ｅｉ、ゲートウェイ装置ＧＷｉ）に接続される。そして、Ｉ／Ｆ５０３は、ネットワーク１１０と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ５０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００５９】
ディスクドライブ５０４は、ＣＰＵ５０１の制御に従ってディスク５０５に対するデータのリード／ライトを制御する。ディスク５０５は、ディスクドライブ５０４の制御で書き込まれたデータを記憶する。ディスク５０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００６０】
なお、情報処理装置１０１は、上述した構成部のほかに、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、入力装置、ディスプレイ、近距離無線通信Ｉ／Ｆ等を有することにしてもよい。また、図１に示したエッジ装置Ｅｉ、ゲートウェイ装置ＧＷｉについても、情報処理装置１０１と同様のハードウェア構成により実現することができる。
【００６１】
（拠点管理テーブル１３０の記憶内容）
つぎに、図６を用いて、情報処理装置１０１が有する拠点管理テーブル１３０の記憶内容について説明する。拠点管理テーブル１３０は、例えば、図５に示した情報処理装置１０１のメモリ５０２、ディスク５０５などの記憶装置により実現される。
【００６２】
図６は、拠点管理テーブル１３０の記憶内容の一例を示す説明図である。図６において、拠点管理テーブル１３０は、拠点ＩＤ、プロキシアドレス、ブローカーアドレス、配備処理およびトピックのフィールドを有し、各フィールドに情報を設定することで、拠点管理情報（例えば、拠点管理情報６００−１〜６００−３）をレコードとして記憶する。
【００６３】
ここで、拠点ＩＤは、拠点（クラウドまたは拠点Ｂｉ）を一意に識別する識別子である。プロキシアドレスは、拠点ＩＤの拠点に配置されたプロキシＰｒのアドレスである。ブローカーアドレスは、拠点ＩＤの拠点に配置されたブローカーＢｒのアドレスである。ブローカーアドレス「−（ｎｕｌｌ）」は、拠点ＩＤの拠点にブローカーＢｒが配置されていないことを示す。
【００６４】
配備処理は、拠点ＩＤの拠点に配備された処理を示す。配備処理「−」は、拠点ＩＤの拠点に処理が配備されていないことを示す。トピックは、拠点ＩＤの拠点に配置されたブローカーＢｒにパブリッシュされるデータのトピックを示す。トピック「−」は、拠点ＩＤの拠点にブローカーＢｒが配置されていないことを示す。
【００６５】
例えば、拠点管理情報６００−１は、クラウド（拠点Ｂ０）に配置されたプロキシＰｒ０のプロキシアドレス「ａｄｄｒｅｓｓ０」と、クラウド（拠点Ｂ０）に配置されたブローカーＢｒ０のブローカーアドレス「ａｄｄｒｅｓｓ３」を示す。また、拠点管理情報６００−１は、クラウド（拠点Ｂ０）に配備された処理Ｂ、処理Ｃと、クラウド（拠点Ｂ０）に配置されたブローカーＢｒ０にパブリッシュされるデータのトピックＣを示す。
【００６６】
（メッセージのデータ構造例）
つぎに、図７を用いて、分散処理システム１００において送受信されるメッセージのデータ構造例について説明する。
【００６７】
図７は、メッセージのデータ構造例を示す説明図である。図７において、メッセージ７１０は、サブスクライバＳｂからプロキシＰｒに送信されるサブスクライブのデータ構造例を示す。メッセージ７１０は、プロキシアドレスと、サブスクライバアドレスと、サブスクライバＩＤと、トピックとを含む。
【００６８】
プロキシアドレスは、メッセージ７１０の宛先となるプロキシＰｒのアドレスである。サブスクライバアドレスは、メッセージ７１０の送信元となるサブスクライバＳｂのアドレスである。サブスクライバＩＤは、メッセージ７１０の送信元となるサブスクライバＳｂを一意に識別する識別子である。トピックは、メッセージ７１０の送信元となるサブスクライバＳｂが要求するデータのトピックである。
【００６９】
メッセージ７２０は、プロキシＰｒからブローカーＢｒに転送されるサブスクライブのデータ構造を示す。メッセージ７２０は、ブローカーアドレスと、サブスクライバアドレスと、サブスクライバＩＤと、トピックとを含む。ブローカーアドレスは、メッセージ７２０の宛先となるブローカーＢｒのアドレスである。すなわち、メッセージ７２０は、メッセージ７１０のプロキシアドレスをブローカーアドレスに書き換えたものに相当する。
【００７０】
メッセージ７３０は、パブリッシャＰｂからプロキシＰｒに送信されるパブリッシュのデータ構造を示す。メッセージ７３０は、プロキシアドレスと、パブリッシャアドレスと、トピックと、データとを含む。
【００７１】
プロキシアドレスは、メッセージ７３０の宛先となるプロキシＰｒのアドレスである。パブリッシャアドレスは、メッセージ７３０の送信元となるパブリッシャＰｂのアドレスである。トピックは、メッセージ７３０の送信元となるパブリッシャＰｂから送出されるデータのトピックである。データは、メッセージ７３０の送信元となるパブリッシャＰｂから送出されるデータである。
【００７２】
メッセージ７４０は、プロキシＰｒからブローカーＢｒに転送されるパブリッシュのデータ構造を示す。メッセージ７４０は、ブローカーアドレスと、パブリッシャアドレスと、トピックと、データとを含む。ブローカーアドレスは、メッセージ７４０の宛先となるブローカーＢｒのアドレスである。メッセージ７４０は、メッセージ７３０のプロキシアドレスをブローカーアドレスに書き換えたものに相当する。
【００７３】
（情報処理装置１０１の機能的構成例）
図８は、情報処理装置１０１の機能的構成例を示すブロック図である。図８において、情報処理装置１０１は、プロキシＰｒ０と、処理配備管理部４０１と、を含む。プロキシＰｒ０および処理配備管理部４０１は制御部となる機能であり、具体的には、例えば、図５に示したメモリ５０２、ディスク５０５などの記憶装置に記憶されたプログラムをＣＰＵ５０１に実行させることにより、または、Ｉ／Ｆ５０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ５０２、ディスク５０５などの記憶装置に記憶される。
【００７４】
まず、プロキシＰｒ０について説明する。プロキシＰｒ０は、受信部８０１と、アドレス取得部８０２と、送信部８０３と、記憶部８０４と、を含む。記憶部８０４は、例えば、メモリ５０２、ディスク５０５などの記憶装置により実現される。
【００７５】
受信部８０１は、メッセージを受信する。メッセージとしては、例えば、サブスクライブ、アンサブスクライブ、パブリッシュなどがある。サブスクライブは、あるトピックのデータの要求をブローカーＢｒに登録するためのメッセージである。サブスクライブのデータ構造については、例えば、図７に示したメッセージ７１０を参照することができる。
【００７６】
アンサブスクライブは、ブローカーＢｒに登録した、あるトピックのデータの要求を解除するためのメッセージである。アンサブスクライブのデータ構造については、例えば、図７に示したメッセージ７１０を参照することができる。パブリッシュは、あるトピックのデータを送信するためのメッセージである。パブリッシュのデータ構造については、例えば、図７に示したメッセージ７３０を参照することができる。
【００７７】
具体的には、例えば、受信部８０１は、同一拠点内（クラウド内）のサブスクライバＳｂからサブスクライブ、または、アンサブスクライブを受信する。また、例えば、受信部８０１は、同一拠点内（クラウド内）のパブリッシャＰｂからパブリッシュを受信する。ただし、図１の例では、クラウド内のパブリッシャＰｂとなるデバイスｄｖは存在しない。
【００７８】
なお、受信されたメッセージは、記憶部８０４に格納される。また、アンサブスクライブを受信した場合の処理内容については、サブスクライブを受信した場合の処理内容と同様のため、以降において詳細な説明を省略する。
【００７９】
以下の説明では、トピック＃のデータの要求を登録するためのメッセージを「サブスクライブ（トピックＣ）」と表記し、また、トピック＃のデータを含むメッセージを「パブリッシュ（トピックＣ）」と表記する場合がある。
【００８０】
アドレス取得部８０２は、受信されたメッセージの転送先のアドレスを取得する。具体的には、例えば、まず、アドレス取得部８０２は、受信されたメッセージのアドレス問合せを生成する。アドレス問合せは、メッセージの転送先となるブローカーＢｒのアドレスを問い合わせるメッセージである。
【００８１】
アドレス問合せは、例えば、メッセージ種別と送信元拠点を示す情報を含む。メッセージ種別は、メッセージが、サブスクライブまたはパブリッシュのいずれであるかを示す。送信元拠点を示す情報は、例えば、メッセージの送信元が存在する拠点（クラウドを含む）の拠点ＩＤである。
【００８２】
また、メッセージがサブスクライブの場合には、アドレス問合せは、サブスクライバＳｂが要求するデータのトピックを示す情報を含む。また、メッセージがパブリッシュの場合、アドレス問合せは、パブリッシャＰｂが送出したデータのトピックを示す情報を含むことにしてもよい。
【００８３】
例えば、拠点Ｂ０（クラウド）のサブスクライバＳｂ（処理Ｃ）を送信元とするサブスクライブ（トピックＣ）についてのアドレス問合せには、メッセージ種別「サブスクライブ」と送信元拠点「Ｂ０」とトピック「Ｃ」とが含まれる。
【００８４】
つぎに、送信部８０３は、アドレス取得部８０２によって生成されたアドレス問合せを、処理配備管理部４０１に送信する。また、受信部８０１は、処理配備管理部４０１からアドレス問合せの応答を受信する。アドレス取得部８０２は、受信部８０１によってアドレス問合せの応答が受信されると、当該応答からメッセージの転送先となるブローカーＢｒのアドレスを取得する。
【００８５】
そして、アドレス取得部８０２は、取得したアドレスをアドレスリストに登録する。アドレスリストには、例えば、｛Ｂ０：｛ａｄｒｓ：ａｄｄｒｅｓｓ３，ｔｏｐｉｃ：Ｃ｝｝、｛Ｂ１：｛ａｄｒｓ：ａｄｄｒｅｓｓ４，ｔｏｐｉｃ：Ａ｝｝などが登録される。
【００８６】
送信部８０３は、受信されたメッセージを、取得された転送先のアドレス宛に転送する。具体的には、例えば、送信部８０３は、アドレスリストに従って、受信されたメッセージを転送する。より詳細に説明すると、送信部８０３は、例えば、受信されたメッセージの宛先を、転送先のアドレスに書き換えたメッセージを送信する（例えば、図７参照）。
【００８７】
例えば、サブスクライブ（トピックＣ）の転送先のアドレスとして、アドレスリストに｛Ｂ０：｛ａｄｒｓ：ａｄｄｒｅｓｓ３，ｔｏｐｉｃ：Ｃ｝｝が登録されているとする。この場合、送信部８０３は、アドレスリストに従って、サブスクライブ（トピックＣ）を、拠点Ｂ０（クラウド）のブローカーＢｒ０に転送する。
【００８８】
また、サブスクライブ（トピックＡ）の転送先のアドレスとして、アドレスリストに｛Ｂ１：｛ａｄｒｓ：ａｄｄｒｅｓｓ４，ｔｏｐｉｃ：Ａ｝｝が登録されているとする。この場合、送信部８０３は、アドレスリストに従って、サブスクライブ（トピックＡ）を、拠点Ｂ１のブローカーＢｒ１に転送する。
【００８９】
なお、図示および説明は省略するが、各拠点Ｂｉのゲートウェイ装置ＧＷｉのプロキシＰｒｉについても、情報処理装置１０１のプロキシＰｒ０と同様の機能部を有する。
【００９０】
つぎに、処理配備管理部４０１について説明する。
【００９１】
処理配備管理部４０１は、メッセージの転送先となるブローカーＢｒを特定する。具体的には、例えば、まず、処理配備管理部４０１は、プロキシＰｒ（Ｐｒ０またはＰｒｉ）からアドレス問合せを受信すると、サブスクライブまたはパブリッシュのいずれの転送先を問い合わせるものであるか否かを判断する。すなわち、処理配備管理部４０１は、アドレス問合せに含まれるメッセージ種別が、サブスクライブまたはパブリッシュのいずれであるかを判断する。
【００９２】
ここで、メッセージ種別が「サブスクライブ」の場合、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、アドレス問合せに含まれるトピックに対応するブローカーアドレスを特定する。ここで特定されるブローカーアドレスは、サブスクライブの転送先となるブローカーＢｒのアドレスである。そして、処理配備管理部４０１は、問合せ元のプロキシＰｒ（Ｐｒ０またはＰｒｉ）に対して、特定したブローカーアドレスを含む応答を送信する。
【００９３】
また、メッセージ種別が「パブリッシュ」の場合、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する。ここで特定されるブローカーアドレスは、パブリッシュの転送先となるブローカーＢｒのアドレスである。そして、処理配備管理部４０１は、問合せ元のプロキシＰｒ（Ｐｒ０またはＰｒｉ）に対して、特定したブローカーアドレスを含む応答を送信する。
【００９４】
なお、送信元拠点に対応するブローカーアドレスが存在しない場合、処理配備管理部４０１は、拠点Ｂ０（クラウド）に対応するブローカーアドレスを特定する。すなわち、送信元拠点にブローカーＢｒが配置されていない場合は、処理配備管理部４０１は、拠点Ｂ０（クラウド）に配置されたブローカーＢｒ０を特定する。
【００９５】
また、上述した説明では、送信元拠点は、アドレス問合せに含まれることにしたが、これに限らない。例えば、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、問合せ元のプロキシＰｒ（Ｐｒ０またはＰｒｉ）のプロキシアドレスから送信元拠点を特定することにしてもよい。
【００９６】
（分散処理システム１００の動作例）
つぎに、図９を用いて、プロキシＰｒからブローカーＢｒにサブスクライブを転送する際の分散処理システム１００の動作例について説明する。
【００９７】
図９は、分散処理システム１００の動作例を示すシーケンス図（その１）である。図９において、（９−１）拠点Ｂ１の処理Ａは、サブスクライブ（トピックＡ）をプロキシＰｒ１に送信する。処理Ａは、サブスクライバＳｂであり、エッジ装置Ｅ１において実行されている。
【００９８】
（９−２）拠点Ｂ１のプロキシＰｒ１は、処理Ａからサブスクライブ（トピックＡ）を受信すると、サブスクライブ（トピックＡ）についてのアドレス問合せを、クラウド（拠点Ｂ０）の処理配備管理部４０１に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「Ａ」とが含まれる。
【００９９】
（９−３）クラウド（拠点Ｂ０）の処理配備管理部４０１は、プロキシＰｒ１からアドレス問合せを受信すると、拠点管理テーブル１３０を参照して、アドレス問合せに含まれるトピックＡに対応するブローカーアドレス「ａｄｄｒｅｓｓ４」を特定する。（９−４）クラウド（拠点Ｂ０）の処理配備管理部４０１は、問合せ元のプロキシＰｒ１に対して、特定したブローカーアドレス「ａｄｄｒｅｓｓ４」を含む応答を送信する。
【０１００】
（９−５）拠点Ｂ１のプロキシＰｒ１は、処理配備管理部４０１から応答を受信すると、処理Ａからのサブスクライブ（トピックＡ）の宛先を、受信した応答に含まれるブローカーアドレス「ａｄｄｒｅｓｓ４」に書き換えて送信する。これにより、処理Ａからのサブスクライブ（トピックＡ）を、トピックＡのデータがパブリッシュされるブローカーＢｒ１に転送することができる。
【０１０１】
また、図９において、（９−６）クラウド（拠点Ｂ０）の処理Ｂは、サブスクライブ（トピックＢ）をプロキシＰｒ０に送信する。処理Ｂは、サブスクライバＳｂであり、情報処理装置１０１において実行されている。
【０１０２】
（９−７）クラウド（拠点Ｂ０）のプロキシＰｒ０は、処理Ｂからサブスクライブ（トピックＢ）を受信すると、サブスクライブ（トピックＢ）についてのアドレス問合せを、処理配備管理部４０１に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「Ｂ」とが含まれる。
【０１０３】
（９−８）クラウド（拠点Ｂ０）の処理配備管理部４０１は、プロキシＰｒ０からアドレス問合せを受信すると、拠点管理テーブル１３０を参照して、アドレス問合せに含まれるトピックＢに対応するブローカーアドレス「ａｄｄｒｅｓｓ４」を特定する。（９−９）クラウド（拠点Ｂ０）の処理配備管理部４０１は、問合せ元のプロキシＰｒ０に対して、特定したブローカーアドレス「ａｄｄｒｅｓｓ４」を含む応答を送信する。
【０１０４】
（９−１０）クラウド（拠点Ｂ０）のプロキシＰｒ０は、処理配備管理部４０１から応答を受信すると、処理Ｂからのサブスクライブ（トピックＢ）の宛先を、受信した応答に含まれるブローカーアドレス「ａｄｄｒｅｓｓ４」に書き換えて送信する。これにより、処理Ｂからのサブスクライブ（トピックＢ）を、トピックＢのデータがパブリッシュされるブローカーＢｒ１に転送することができる。
【０１０５】
また、図９において、（９−１１）クラウド（拠点Ｂ０）の処理Ｃは、サブスクライブ（トピックＣ）をプロキシＰｒ０に送信する。処理Ｃは、サブスクライバＳｂであり、情報処理装置１０１において実行されている。
【０１０６】
（９−１２）クラウド（拠点Ｂ０）のプロキシＰｒ０は、処理Ｃからサブスクライブ（トピックＣ）を受信すると、サブスクライブ（トピックＣ）についてのアドレス問合せを、処理配備管理部４０１に送信する。このアドレス問合せには、メッセージ種別「サブスクライブ」とトピック「Ｃ」とが含まれる。
【０１０７】
（９−１３）クラウド（拠点Ｂ０）の処理配備管理部４０１は、プロキシＰｒ０からアドレス問合せを受信すると、拠点管理テーブル１３０を参照して、アドレス問合せに含まれるトピックＣに対応するブローカーアドレス「ａｄｄｒｅｓｓ３」を特定する。（９−１４）クラウド（拠点Ｂ０）の処理配備管理部４０１は、問合せ元のプロキシＰｒ０に対して、特定したブローカーアドレス「ａｄｄｒｅｓｓ３」を含む応答を送信する。
【０１０８】
（９−１５）クラウド（拠点Ｂ０）のプロキシＰｒ０は、処理配備管理部４０１から応答を受信すると、処理Ｃからのサブスクライブ（トピックＣ）の宛先を、受信した応答に含まれるブローカーアドレス「ａｄｄｒｅｓｓ３」に書き換えて送信する。これにより、処理Ｃからのサブスクライブ（トピックＣ）を、トピックＣのデータがパブリッシュされるブローカーＢｒ０に転送することができる。
【０１０９】
なお、上述した説明では、各拠点ＢｉのプロキシＰｒｉは、メッセージを受信した際に、その都度、クラウド（拠点Ｂ０）の処理配備管理部４０１に対して、メッセージの転送先となるブローカーＢｒを問い合わせる場合を想定して説明したが、これに限らない。例えば、プロキシＰｒｉは、あるトピックのメッセージ（パブリッシュまたはサブスクライブ）について転送先を問い合わせたら、その問い合わせ結果を一定期間（例えば、１日）キャッシュして、同じトピックのメッセージを受信した際に利用することにしてもよい。
【０１１０】
（拠点管理テーブル１３０の更新例）
つぎに、図１０〜図１２を用いて、情報処理装置１０１が有する拠点管理テーブル１３０の更新例について説明する。
【０１１１】
ここで、拠点Ｂｉにおいて、パブリッシャＰｂとなるデバイスｄｖは、設置されたり、撤去されたりすることがある。この場合、ブローカーＢｒにパブリッシュされるデータが変わるため、拠点管理テーブル１３０を更新しないと、無駄なサブスクライブが発生したり、必要なサブスクライブが届かないといった不都合が生じることがある。
【０１１２】
一方で、デバイスｄｖの設置や撤去に応じて、その都度、拠点管理テーブル１３０を人手で更新するとなると、メンテナンス作業にかかる負荷が増大するおそれがある。そこで、パブリッシャＰｂとなるデバイスｄｖが設置されたり、撤去されたことに応じて、拠点管理テーブル１３０を自動更新する方法について説明する。
【０１１３】
まず、拠点ＢｉのプロキシＰｒｉは、デバイスｄｖからのデータの送出状況を監視して、パブリッシャＰｂとなる新たなデバイスｄｖが設置されたことを検出する。プロキシＰｒｉは、新たなデバイスｄｖが設置されたことを検出すると、クラウド（拠点Ｂ０）の処理配備管理部４０１に対して、新たなデバイスｄｖから送出されるデータの転送先のブローカーＢｒを問い合わせる。
【０１１４】
具体的には、例えば、プロキシＰｒｉは、新たなデバイスｄｖから送出されるデータを含むメッセージ（パブリッシュ）の転送先のブローカーＢｒを問い合わせるアドレス問合せを処理配備管理部４０１に送信する。このアドレス問合せには、メッセージ種別と送信元拠点と新たなデバイスｄｖから送出されるデータのトピックとが含まれる。
【０１１５】
クラウド（拠点Ｂ０）の処理配備管理部４０１は、拠点ＢｉのプロキシＰｒｉからの問い合わせを受け付けたことに応じて、拠点管理テーブル１３０を参照して、新たなデバイスｄｖから送出されるデータの転送先のブローカーＢｒを特定する。
【０１１６】
具体的には、例えば、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する。ここで、送信元拠点に対応するブローカーアドレスが存在しない場合、処理配備管理部４０１は、拠点Ｂ０（クラウド）に対応するブローカーアドレスを特定する。そして、処理配備管理部４０１は、拠点ＢｉのプロキシＰｒｉに対して、特定したブローカーアドレスを含む応答を送信する。
【０１１７】
また、処理配備管理部４０１は、特定した転送先のブローカーＢｒと新たなデバイスｄｖ（パブリッシャＰｂ）から送信されるデータのトピックとの対応関係を、拠点管理テーブル１３０に登録する。具体的には、例えば、処理配備管理部４０１は、特定したブローカーアドレスと対応付けて、アドレス問合せに含まれる新たなデバイスｄｖから送出されるデータのトピックを拠点管理テーブル１３０に記憶する。
【０１１８】
これにより、パブリッシャＰｂとなるデバイスｄｖが設置されたことに応じて、拠点管理テーブル１３０を自動更新することができる。
【０１１９】
つぎに、拠点ＢｉのプロキシＰｒｉは、デバイスｄｖからのデータの送出状況を監視して、パブリッシャＰｂであるデバイスｄｖが撤去されたことを検出する。具体的には、例えば、プロキシＰｒｉは、パブリッシャＰｂであるデバイスｄｖからのデータの送出が一定時間Ｘ継続して行われなかった場合に、当該デバイスｄｖが撤去されたことを検出する。一定時間Ｘは、任意に設定可能であり、例えば、１日などの時間が設定される。
【０１２０】
プロキシＰｒｉは、パブリッシャＰｂであるデバイスｄｖが撤去されたことを検出すると、クラウド（拠点Ｂ０）の処理配備管理部４０１に対して、当該デバイスｄｖからのデータの送出（パブリッシュ）が停止されたことを示す通知を行う。具体的には、例えば、プロキシＰｒｉは、撤去されたデバイスｄｖから送出されるデータのトピックに対応付けられたブローカーＢｒのアドレスを削除するよう依頼するアドレス削除依頼を処理配備管理部４０１に送信する。このアドレス削除依頼には、送信元拠点と、撤去されたデバイスｄｖから送出されるデータのトピックとが含まれる。送信元拠点は、プロキシＰｒｉが配置された拠点Ｂｉである。
【０１２１】
クラウド（拠点Ｂ０）の処理配備管理部４０１は、拠点ＢｉのプロキシＰｒｉからデバイスｄｖが撤去されたことを示す通知を受け付けると、拠点管理テーブル１３０に記憶された、当該デバイスｄｖから送出されるデータのトピックとブローカーとの対応関係を削除する。
【０１２２】
具体的には、例えば、処理配備管理部４０１は、プロキシＰｒｉからのアドレス削除依頼に含まれる送信元拠点とトピックとの組み合わせに対応するブローカーアドレスについて、当該トピックとの対応関係を拠点管理テーブル１３０から削除する。これにより、パブリッシャＰｂとなるデバイスｄｖが撤去されたことに応じて、拠点管理テーブル１３０を自動更新することができる。
【０１２３】
ここで、図１０および図１１を用いて、パブリッシャＰｂとなるデバイスｄｖが設置されたことに応じて、拠点管理テーブル１３０を更新する際の分散処理システム１００の動作例について説明する。
【０１２４】
図１０は、分散処理システム１００の動作例を示すシーケンス図（その２）である。図１１は、拠点管理テーブル１３０の更新例を示す説明図である。ここでは、拠点Ｂ１にセンサＢが新たに設置されて、トピックＢのデータのパブリッシュが開始された場合を想定する。また、拠点Ｂ１にセンサＢが設置される直前の拠点管理テーブル１３０を、図１１の（１１−１）に示す拠点管理テーブル１３０とする。
【０１２５】
図１０において、（１０−１）拠点Ｂ１のセンサＢは、パブリッシュ（トピックＢ）をプロキシＰｒ１に送信する。センサＢは、新たに設置されたパブリッシュＰｂであり、トピックＢのデータを送出するデバイスｄｖである。
【０１２６】
（１０−２）拠点Ｂ１のプロキシＰｒ１は、センサＢからパブリッシュ（トピックＢ）を受信すると、パブリッシュ時刻を記録する。パブリッシュ時刻は、例えば、センサＢからパブリッシュ（トピックＢ）が受信された時刻である。
【０１２７】
（１０−３）拠点Ｂ１のプロキシＰｒ１は、クラウド（拠点Ｂ０）の処理配備管理部４０１に対して、パブリッシュ（トピックＢ）の転送先のブローカーＢｒを問い合わせるアドレス問合せを送信する。このアドレス問合せには、メッセージ種別「パブリッシュ」と送信元拠点「Ｂ１」とトピック「Ｂ」とが含まれる。
【０１２８】
（１０−４）クラウド（拠点Ｂ０）の処理配備管理部４０１は、拠点Ｂ１のプロキシＰｒ１からアドレス問合せを受け付けたことに応じて、拠点管理テーブル１３０を参照して、アドレス問合せに含まれる送信元拠点「Ｂ１」に対応するブローカーアドレスを特定する。図１１の（１１−１）の例では、送信元拠点「Ｂ１」に対応するブローカーアドレス「ａｄｄｒｅｓｓ４」が特定される。
【０１２９】
（１０−５）クラウド（拠点Ｂ０）処理配備管理部４０１は、拠点Ｂ１のプロキシＰｒ１に対して、特定したブローカーアドレス「ａｄｄｒｅｓｓ４」を含む応答を送信する。
【０１３０】
（１０−６）拠点Ｂ１のプロキシＰｒ１は、処理配備管理部４０１から応答を受信すると、センサＢからのパブリッシュ（トピックＢ）の宛先を、受信した応答に含まれるブローカーアドレス「ａｄｄｒｅｓｓ４」に書き換えて送信する。これにより、拠点Ｂ１に新たに設置されたセンサＢからのパブリッシュ（トピックＢ）を、拠点Ｂ１のブローカーＢｒ１に転送することができる。
【０１３１】
（１０−７）クラウド（拠点Ｂ０）処理配備管理部４０１は、特定したブローカーアドレス「ａｄｄｒｅｓｓ４」と対応付けて、アドレス問合せに含まれるトピック「Ｂ」を拠点管理テーブル１３０に記憶する。これにより、パブリッシャＰｂとなるセンサＢが拠点Ｂ１に設置されたことに応じて、拠点Ｂ１のブローカーＢｒ１とセンサＢから送出されるデータのトピックＢとの対応関係を、拠点管理テーブル１３０に登録することができる。
【０１３２】
つぎに、図１２を用いて、パブリッシャＰｂとなるデバイスｄｖが撤去されたことに応じて、拠点管理テーブル１３０を更新する際の分散処理システム１００の動作例について説明する。
【０１３３】
図１２は、分散処理システム１００の動作例を示すシーケンス図（その３）である。ここでは、拠点Ｂ１からセンサＢが撤去されて、トピックＢのデータのパブリッシュが停止された場合を想定する。また、拠点Ｂ１からセンサＢが撤去される直前の拠点管理テーブル１３０を、図１１の（１１−２）に示す拠点管理テーブル１３０とする。
【０１３４】
図１２において、（１２−１）拠点Ｂ１のプロキシＰｒ１は、センサＢからパブリッシュ（トピックＢ）を前回受信してから一定時間Ｘ経過したか否かを判断する。
【０１３５】
（１２−２）拠点Ｂ１のプロキシＰｒ１は、前回受信してから一定時間Ｘ経過した場合、クラウド（拠点Ｂ０）の処理配備管理部４０１に対して、センサＢから送出されるデータのトピックＢに対応付けられたブローカーＢｒのアドレスを削除するよう依頼するアドレス削除依頼を送信する。このアドレス削除依頼には、送信元拠点「Ｂ１」とトピック「Ｂ」とが含まれる。
【０１３６】
（１２−３）クラウド（拠点Ｂ０）の処理配備管理部４０１は、拠点Ｂ１のプロキシＰｒ１からアドレス削除依頼を受け付けたことに応じて、拠点管理テーブル１３０を更新する。具体的には、例えば、処理配備管理部４０１は、アドレス削除依頼に含まれる送信元拠点「Ｂ１」とトピック「Ｂ」との組み合わせに対応するブローカーアドレス「ａｄｄｒｅｓｓ４」について、トピック「Ｂ」との対応関係を拠点管理テーブル１３０から削除する（図１１の（１１−３）参照）。
【０１３７】
これにより、パブリッシャＰｂであるセンサＢが拠点Ｂ１から撤去されたことに応じて、拠点Ｂ１のブローカーＢｒ１とセンサＢから送出されるデータのトピックＢとの対応関係を、拠点管理テーブル１３０から削除することができる。
【０１３８】
（情報処理装置１０１の各種処理手順）
つぎに、図１３および図１４を用いて、情報処理装置１０１の各種処理手順について説明する。まず、図１３を用いて、情報処理装置１０１のプロキシＰｒ０のメッセージ転送処理手順について説明する。なお、ゲートウェイ装置ＧＷｉのプロキシＰｒｉについても、情報処理装置１０１のプロキシＰｒ０と同様のメッセージ転送処理を実行する。
【０１３９】
図１３は、情報処理装置１０１のプロキシＰｒ０のメッセージ転送処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、情報処理装置１０１のプロキシＰｒ０は、メッセージを受信したか否かを判断する（ステップＳ１３０１）。ここで、プロキシＰｒ０は、メッセージを受信するのを待つ（ステップＳ１３０１：Ｎｏ）。
【０１４０】
そして、プロキシＰｒ０は、メッセージを受信した場合（ステップＳ１３０１：Ｙｅｓ）、処理配備管理部４０１へのアドレス問合せに対する応答であるか否かを判断する（ステップＳ１３０２）。ここで、アドレス問合せに対する応答ではない場合（ステップＳ１３０２：Ｎｏ）、プロキシＰｒ０は、受信したメッセージを記憶部８０４に格納する（ステップＳ１３０３）。
【０１４１】
つぎに、プロキシＰｒ０は、受信されたメッセージのアドレス問合せを生成する（ステップＳ１３０４）。アドレス問合せは、メッセージの転送先となるブローカーＢｒのアドレスを問い合わせるメッセージである。そして、プロキシＰｒ０は、生成したアドレス問合せを、処理配備管理部４０１に送信して（ステップＳ１３０５）、本フローチャートによる一連の処理を終了する。
【０１４２】
また、ステップＳ１３０２において、アドレス問合せに対する応答の場合（ステップＳ１３０２：Ｙｅｓ）、プロキシＰｒ０は、当該応答からメッセージの転送先となるブローカーＢｒのアドレスを取得する（ステップＳ１３０６）。
【０１４３】
そして、プロキシＰｒ０は、アドレス問合せしたメッセージを記憶部８０４から読み出す（ステップＳ１３０７）。アドレス問合せしたメッセージは、サブスクライブまたはパブリッシュである。つぎに、プロキシＰｒ０は、読み出したメッセージの宛先を、取得したブローカーＢｒのアドレスに書き換えることにより、転送メッセージを生成する（ステップＳ１３０８）。
【０１４４】
そして、プロキシＰｒ０は、生成した転送メッセージを送信して（ステップＳ１３０９）、本フローチャートによる一連の処理を終了する。転送メッセージは、パブリッシュであれば、パブリッシャＰｂが存在する拠点Ｂｉまたはクラウド（拠点Ｂ０）のブローカーＢｒ宛に送信される。転送メッセージは、サブスクライブであれば、トピックに対応するブローカーＢｒ宛に送信される。
【０１４５】
これにより、パブリッシャＰｂまたはサブスクライバＳｂからのメッセージ（パブリッシュまたはサブスクライブ）を適切なブローカーＢｒに転送することができる。
【０１４６】
つぎに、図１４を用いて、情報処理装置１０１の処理配備管理部４０１のアドレス応答処理手順について説明する。
【０１４７】
図１４は、情報処理装置１０１の処理配備管理部４０１のアドレス応答処理手順の一例を示すフローチャートである。図１４のフローチャートにおいて、まず、情報処理装置１０１の処理配備管理部４０１は、アドレス問合せを受信したか否かを判断する（ステップＳ１４０１）。ここで、処理配備管理部４０１は、アドレス問合せを受信するのを待つ（ステップＳ１４０１：Ｎｏ）。
【０１４８】
そして、処理配備管理部４０１は、アドレス問合せを受信した場合（ステップＳ１４０１：Ｙｅｓ）、アドレス問合せに含まれるメッセージ種別がパブリッシュであるか否かを判断する（ステップＳ１４０２）。ここで、メッセージ種別が「パブリッシュ」の場合（ステップＳ１４０２：Ｙｅｓ）、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、アドレス問合せに含まれる送信元拠点に対応するブローカーアドレスを特定する（ステップＳ１４０３）。
【０１４９】
そして、処理配備管理部４０１は、問合せ元のプロキシＰｒに対して、特定した送信元拠点に対応するブローカーアドレスを含む応答を送信して（ステップＳ１４０４）、本フローチャートによる一連の処理を終了する。これにより、パブリッシュの転送先となるブローカーＢｒのアドレスを応答することができる。
【０１５０】
また、ステップＳ１４０２において、メッセージ種別が「サブスクライブ」の場合（ステップＳ１４０２：Ｎｏ）、処理配備管理部４０１は、拠点管理テーブル１３０を参照して、アドレス問合せに含まれるトピックに対応するブローカーアドレスを特定する（ステップＳ１４０５）。
【０１５１】
そして、処理配備管理部４０１は、問合せ元のプロキシＰｒに対して、特定したトピックに対応するブローカーアドレスを含む応答を送信して（ステップＳ１４０６）、本フローチャートによる一連の処理を終了する。これにより、サブスクライブの転送先となるブローカーＢｒのアドレスを応答することができる。
【０１５２】
以上説明したように、実施の形態にかかる情報処理装置１０１によれば、プロキシＰｒ０により、サブスクライバＳｂからの第１のトピックのデータを要求するサブスクライブを受け付けると、処理配備管理部４０１により、拠点管理テーブル１３０を参照して、第１のトピックに対応するブローカーＢｒを特定し、プロキシＰｒ０により、特定したブローカーＢｒ宛に、受け付けたサブスクライブを転送することができる。
【０１５３】
これにより、クラウド（拠点Ｂ０）に配置されたサブスクライバＳｂからのサブスクライブを、当該サブスクライブで指定されたトピックのデータがパブリッシュされるブローカーＢｒに転送することができる。
【０１５４】
また、情報処理装置１０１によれば、処理配備管理部４０１により、拠点Ｂｉのゲートウェイ装置ＧＷｉのプロキシＰｒｉから、拠点ＢｉのサブスクライバＳｂからの第２のトピックのデータを要求するサブスクライブの転送先のブローカーＢｒの問い合わせを受け付けることができる。そして、情報処理装置１０１によれば、処理配備管理部４０１により、拠点管理テーブル１３０を参照して、第２のトピックに対応するブローカーＢｒを特定し、特定したブローカーＢｒのアドレスを含む応答を、ゲートウェイ装置ＧＷｉのプロキシＰｒｉに送信することができる。
【０１５５】
これにより、拠点Ｂｉに配置されたサブスクライバＳｂからのサブスクライブを、当該サブスクライブで指定されたトピックのデータがパブリッシュされるブローカーＢｒに転送されるよう制御することができる。
【０１５６】
また、情報処理装置１０１によれば、処理配備管理部４０１により、拠点Ｂｉのゲートウェイ装置ＧＷｉのプロキシＰｒｉから、拠点Ｂｉに設置された新たなパブリッシャＰｂ（デバイスｄｖ）から送出されるデータの転送先のブローカーＢｒの問い合わせを受け付けた場合、拠点管理テーブル１３０を参照して、転送先のブローカーＢｒを特定することができる。そして、情報処理装置１０１によれば、処理配備管理部４０１により、特定した転送先のブローカーＢｒのアドレスを含む応答をプロキシＰｒｉに送信するとともに、転送先のブローカーＢｒと新たなパブリッシャＰｂ（デバイスｄｖ）から送出されるデータのトピックとの対応関係を、拠点管理テーブル１３０に登録することができる。
【０１５７】
これにより、パブリッシャＰｂとなる新たなデバイスｄｖが拠点Ｂｉに設置されたことに応じて、拠点管理テーブル１３０を自動更新することができ、メンテナンス作業にかかる負荷を削減することができる。また、新たなデバイスｄｖの設置にともなう拠点管理テーブル１３０の更新忘れを防ぐことができるため、必要なサブスクライブがブローカーＢｒに届かないといった不都合が生じるのを防ぐことができる。
【０１５８】
また、情報処理装置１０１によれば、処理配備管理部４０１により、拠点Ｂｉのゲートウェイ装置ＧＷｉのプロキシＰｒｉから、拠点Ｂｉの特定のパブリッシャＰｂ（デバイスｄｖ）からのデータの送出が停止されたことを示す通知を受け付けると、拠点管理テーブル１３０に記憶された、特定のパブリッシャＰｂ（デバイスｄｖ）からのデータのトピックとブローカーＢｒとの対応関係を削除することができる。
【０１５９】
これにより、パブリッシャＰｂであるデバイスｄｖが拠点Ｂｉから撤去されたことに応じて、拠点管理テーブル１３０を自動更新することができ、メンテナンス作業にかかる負荷を削減することができる。また、デバイスｄｖの撤去にともなう拠点管理テーブル１３０の更新忘れを防ぐことができるため、無駄なサブスクライブがブローカーＢｒに届くといった不都合が生じるのを防ぐことができる。
【０１６０】
これらのことから、実施の形態にかかる分散処理システム１００によれば、無駄なメッセージ（サブスクライブ）のやり取りを削減することが可能となり、通信トラフィックの増大化を防ぐとともに、各ブローカーＢｒにかかる処理負荷を軽減することができる。
【０１６１】
なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本分散処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６３】
（付記１）サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
制御部を有することを特徴とする情報処理装置。
【０１６４】
（付記２）前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点のサブスクライバからの第２のトピックのデータを要求するメッセージの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記第２のトピックに対応するブローカーを特定し、
特定した前記ブローカーのアドレスを含む応答を前記他の情報処理装置に送信する、
ことを特徴とする付記１に記載の情報処理装置。
【０１６５】
（付記３）前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点に設置された新たなパブリッシャからのデータの転送先のブローカーの問い合わせを受け付けた場合、前記記憶部を参照して、前記転送先のブローカーを特定し、
特定した前記転送先のブローカーのアドレスを含む応答を前記他の情報処理装置に送信するとともに、前記転送先のブローカーと前記新たなパブリッシャからのデータのトピックとの対応関係を前記記憶部に登録する、
ことを特徴とする付記１または２に記載の情報処理装置。
【０１６６】
（付記４）前記制御部は、
自装置とは異なる他の拠点に配置された他の情報処理装置から、前記他の拠点の特定のパブリッシャからのデータの送出が停止されたことを示す通知を受け付けると、前記記憶部に記憶された、前記特定のパブリッシャからのデータのトピックとブローカーとの対応関係を削除する、
ことを特徴とする付記３に記載の情報処理装置。
【０１６７】
（付記５）前記通知は、前記特定のパブリッシャからのデータの送出が一定時間継続して行われなかった場合に行われる、ことを特徴とする付記４に記載の情報処理装置。
【０１６８】
（付記６）前記複数の拠点の拠点間は、広域通信網を介して接続される、ことを特徴とする付記１〜５のいずれか一つに記載の情報処理装置。
【０１６９】
（付記７）サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、
特定した前記ブローカー宛に、受け付けた前記メッセージを転送する、
処理をコンピュータに実行させることを特徴とする分散処理プログラム。
【０１７０】
（付記８）複数のエッジ装置を含む分散処理システムであって、
サブスクライバからの第１のトピックのデータを要求するメッセージを受け付けると、複数の拠点の各拠点に配置されたブローカーと、前記ブローカーに送信されるパブリッシャからのデータのトピックとの対応関係を記憶する記憶部を参照して、前記第１のトピックに対応するブローカーを特定し、特定した前記ブローカー宛に、受け付けた前記メッセージを転送する情報処理装置と、
前記情報処理装置とは異なる他の拠点に配置されたブローカーを有するエッジ装置と、
を含むことを特徴とする分散処理システム。
【符号の説明】
【０１７１】
１００  分散処理システム
１０１  情報処理装置
１１０，１２０  ネットワーク
１３０  拠点管理テーブル
４０１  処理配備管理部
４１０，４２０  サブスクライブ
５００  バス
５０１  ＣＰＵ
５０２  メモリ
５０３  Ｉ／Ｆ
５０４  ディスクドライブ
５０５  ディスク
８０１  受信部
８０２  アドレス取得部
８０３  送信部
８０４  記憶部
【図１】
2019186771.tif 000003
【図２】
2019186771.tif 000004
【図３】
2019186771.tif 000005
【図４】
2019186771.tif 000006
【図５】
2019186771.tif 000007
【図６】
2019186771.tif 000008
【図７】
2019186771.tif 000009
【図８】
2019186771.tif 000010
【図９】
2019186771.tif 000011
【図１０】
2019186771.tif 000012
【図１１】
2019186771.tif 000013
【図１２】
2019186771.tif 000014
【図１３】
2019186771.tif 000015
【図１４】
2019186771.tif 000016