以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としての通信システム1の機能ブロック構成を図1に示す。図1において、通信システム1は、管理装置100と、デバイス200と、エッジサーバ300と、第1ブローカ400と、第2ブローカ500とを備える。管理装置100および第1ブローカ400は、ネットワークを介して通信可能に接続される。また、第1ブローカ400およびエッジサーバ300は、ネットワークを介して通信可能に接続される。また、エッジサーバ300および第2ブローカ500は、ネットワークを介して通信可能に接続される。また、第2ブローカ500およびデバイス200は、ネットワークを介して通信可能に接続される。なお、各装置間を接続するネットワークは、インターネット、LAN(Local Area Network)、公衆回線網、無線通信網またはこれらの組合せ等によって構成される。なお、デバイス200は、移動体であるため、第2ブローカ500およびデバイス200を接続するネットワークは、典型的には、無線通信網を含む。このため、図1では、第2ブローカ500およびデバイス200が、無線通信網により接続される例が示されている。ただし、第2ブローカ500およびデバイス200を接続するネットワークは、無線通信網に限定されない。
デバイス200は、管理の対象となる移動体である。また、管理装置100は、1つ以上のデバイス200を管理する装置である。また、エッジサーバ300は、管理装置100およびデバイス200間の通信を中継する装置である。通信システム1には、複数のエッジサーバ300が設けられる。例えば、エッジサーバ300は、デバイス200の移動が想定される空間的な範囲が分割された各エリアについて、該エリアに存在するデバイス200との通信を担当するよう、設けられていてもよい。なお、その場合、1つのエリアについて設けられるエッジサーバ300の数は、1つであってもよいし、複数であってもよい。第1ブローカ400は、管理装置100およびエッジサーバ300間、ならびに、複数のエッジサーバ300間を、パブリッシュ/サブスクライブモデルに基づく通信により接続する装置である。以降、パブリッシュ/サブスクライブモデルに基づく通信を、パブリッシュ/サブスクライブ通信とも記載する。第2ブローカ500は、エッジサーバ300およびデバイス200間をパブリッシュ/サブスクライブ通信により接続する装置である。例えば、第2ブローカ500は、前述の各エリアについて、該エリアに存在するデバイス200と該エリアを担当するエッジサーバ300との間を接続するよう、設けられていてもよい。
なお、図1には、1つずつの管理装置100および第1ブローカ400が示されているが、通信システム1における管理装置100および第1ブローカ400の数は、限定されない。また、図1には、3つずつのエッジサーバ300および第2ブローカ500が示されているが、通信システム1におけるエッジサーバ300および第2ブローカ500の数は限定されない。また、図1には、6つのデバイス200が示されているが、通信システム1におけるデバイス200の数は限定されない。
ここで、通信システム1を構成する各装置は、図2に示すようなハードウェア要素によって構成可能である。
図2において、管理装置100は、CPU(Central Processing Unit)1001、メモリ1002、および、ネットワークインタフェース1005を含む。メモリ1002は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスクやフラッシュメモリ等)等によって構成される。ネットワークインタフェース1005は、第1ブローカ400との通信が可能なネットワークに接続するインタフェースである。管理装置100の機能は、メモリ1002に記憶されたコンピュータ・プログラムを実行するとともにネットワークインタフェース1005を制御するCPU1001によって実現される。
また、デバイス200は、CPU2001、メモリ2002、および、ネットワークインタフェース2005を含む。メモリ2002は、RAM、ROM、補助記憶装置等によって構成される。ネットワークインタフェース2005は、第2ブローカ500との通信が可能なネットワークに接続するインタフェースである。デバイス200の機能は、メモリ2002に記憶されたコンピュータ・プログラムを実行するとともにネットワークインタフェース2005を制御するCPU2001によって実現される。
また、エッジサーバ300は、CPU3001、メモリ3002、および、ネットワークインタフェース3005を含む。メモリ3002は、RAM、ROM、補助記憶装置等によって構成される。ネットワークインタフェース3005は、第1ブローカ400および第2ブローカ500との通信がそれぞれ可能なネットワークに接続する各インタフェースからなる。エッジサーバ300における後述の各機能ブロックは、メモリ3002に記憶されたコンピュータ・プログラムを実行するとともにネットワークインタフェース3005を制御するCPU3001によって構成される。
また、第1ブローカ400は、CPU4001、メモリ4002、および、ネットワークインタフェース4005を含む。メモリ4002は、RAM、ROM、補助記憶装置等によって構成される。ネットワークインタフェース4005は、管理装置100およびエッジサーバ300との通信がそれぞれ可能なネットワークに接続する各インタフェースからなる。第1ブローカ400における後述の各機能ブロックは、メモリ4002に記憶されたコンピュータ・プログラムを実行するとともにネットワークインタフェース4005を制御するCPU4001によって構成される。
また、第2ブローカ500は、CPU5001、メモリ5002、および、ネットワークインタフェース5005を含む。メモリ5002は、RAM、ROM、補助記憶装置等によって構成される。ネットワークインタフェース5005は、エッジサーバ300およびデバイス200との通信がそれぞれ可能なネットワークに接続する各インタフェースからなる。第2ブローカ500における後述の各機能ブロックは、メモリ5002に記憶されたコンピュータ・プログラムを実行するとともにネットワークインタフェース5005を制御するCPU5001によって構成される。
なお、通信システム1を構成する各装置およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、各装置の機能ブロック構成について、図3を参照して詳細に説明する。図3において、管理装置100は、前述のように、移動可能なデバイス200を管理する装置である。また、第1ブローカ400は、メッセージ配信部401を有する。また、エッジサーバ300は、メッセージ送受信部301と、依頼先決定部302と、再配信依頼部303とを有する。また、第2ブローカ500は、メッセージ配信部501と、配信状況管理部502とを有する。デバイス200は、移動可能な装置である。
まず、管理装置100の機能について説明する。
管理装置100は、デバイス200宛のメッセージを、第1ブローカ400に送信する。具体的には、管理装置100は、第1ブローカ400におけるトピックへ、メッセージをパブリッシュすればよい。トピックとしては、例えば、そのメッセージの宛先となるデバイス200に関連するトピックが適用される。また、宛先となるデバイス200への配信を担当するエッジサーバ300が特定可能である場合、トピックとしては、宛先となるデバイス200および配信を担当するエッジサーバ300に関連するトピックが適用される。
なお、メッセージは、例えば、デバイス200の制御、管理または運用に関する情報を含む。具体例としては、メッセージは、デバイス200に搭載されるカメラについてその向きやズームイン、ズームアウト等を制御する情報を含んでいてもよい。また、メッセージは、デバイス200上のファームウェアを更新するための情報や、デバイス200上にインストールされるアプリを配信するための情報を含んでいてもよい。また、メッセージは、デバイス200の起動または停止を制御する情報を含んでいてもよい。また、メッセージは、デバイス200から送信されるセンサ情報の送信間隔を設定する情報を含んでいてもよい。また、メッセージは、デバイス200を携帯する利用者向けの情報を含んでいてもよい。ただし、メッセージに含まれる情報は、これらに限定されない。
次に、第1ブローカ400の各機能ブロックについて説明する。
メッセージ配信部401は、管理装置100からデバイス200宛のメッセージを受信すると、そのデバイス200への配信を担当するエッジサーバ300に対してそのメッセージを配信する。具体的には、メッセージ配信部401は、デバイス200に関連するトピックに対して、その配信を担当中のエッジサーバ300をサブスクライバとして記憶している。サブスクライバとは、そのトピックのサブスクライブを登録している装置をいう。そして、メッセージ配信部401は、メッセージを受信すると、そのトピックのサブスクライバとして記憶しているエッジサーバ300に対して、そのメッセージを配信する。
また、メッセージ配信部401は、あるエッジサーバ300から、他のエッジサーバ300に対して再配信を依頼するメッセージを受信すると、依頼先のエッジサーバ300に対してそのメッセージを配信する。例えば、第1ブローカ400には、再配信用トピックが設定されていてもよい。再配信用トピックとは、エッジサーバ300間で再配信の依頼に伴う各種の情報を送受信するためのトピックである。再配信用トピックは、情報の送信側のエッジサーバ300と、受信側のエッジサーバ300と、再配信先のデバイス200との組合せ毎に設定されてもよい。その場合、メッセージ配信部401は、再配信用トピックについて、情報の受信側のエッジサーバ300をサブスクライバとして記憶しておく。そして、メッセージ配信部401は、再配信用トピックへ送信側からのメッセージを受信すると、その再配信用トピックのサブスクライバとして記憶しているエッジサーバ300に対して、そのメッセージを配信すればよい。
次に、エッジサーバ300の各機能ブロックについて説明する。
メッセージ送受信部301は、第1ブローカ400から、管理装置100によるデバイス200宛のメッセージを受信する。受信の対象となるメッセージは、自装置が配信を担当中のデバイス200宛のメッセージ、および、他のエッジサーバ300によって自装置に再配信を依頼されたデバイス200宛のメッセージである。
ここで、メッセージ送受信部301は、自装置が配信を担当中のデバイス200に関連するトピックのサブスクライブを、第1ブローカ400に登録しておく。つまり、登録により、第1ブローカ400において自装置が、配信を担当中のデバイス200に関連するトピックのサブスクライバとして記憶される。
なお、配信を担当中のデバイス200とは、例えば、自装置が配信を担当するエリアに存在するデバイス200である。例えば、エッジサーバ300は、自装置が担当するエリアに存在するデバイス200を定期的に検出し、検出したデバイス200を、配信を担当中のデバイス200として、関連するトピックのサブスクライブを第1ブローカ400に登録してもよい。具体的には、エッジサーバ300は、担当するエリア内において、無線通信網を介して登録を要求する情報を定期的に送信し、要求に応じる情報を返信したデバイス200を、配信を担当中のデバイス200としてもよい。あるいは、後述の第2ブローカ500が、そのような定期的な検出を行ってもよい。その場合、メッセージ送受信部301は、第2ブローカ500に問い合わせることにより、自装置が配信を担当中のデバイス200を表す情報を取得してもよい。
また、メッセージ送受信部301は、第1ブローカ400から受信したデバイス200宛のメッセージを、そのデバイス200に対して配信するよう、第2ブローカ500に送信する。具体的には、メッセージ送受信部301は、第2ブローカ500におけるトピックへ、管理装置100から受信したメッセージをパブリッシュすればよい。トピックとしては、例えば、宛先となるデバイス200に関連するトピックが適用される。
依頼先決定部302は、第2ブローカ500から、デバイス200へのメッセージの配信失敗を通知されると、デバイス200へのメッセージの再配信の依頼先となる他のエッジサーバ300を決定する。具体的には、依頼先決定部302は、依頼先となるエッジサーバ300の候補の中から、依頼先のエッジサーバ300を決定してもよい。例えば、依頼先決定部302は、あらかじめ自装置の周辺に存在するエッジサーバ300を特定する情報を記憶しておき、それらのエッジサーバ300を候補としてもよい。
再配信依頼部303は、依頼先決定部302によって決定された他のエッジサーバ300に対して、配信失敗が通知されたデバイス200へのメッセージの再配信を、第1ブローカ400を介して依頼する。具体的には、再配信依頼部303は、前述した再配信用トピックへ、該当するメッセージをパブリッシュすればよい。
次に、第2ブローカ500の各機能ブロックについて説明する。
メッセージ配信部501は、エッジサーバ300からデバイス200宛のメッセージを受信すると、そのデバイス200に対してそのメッセージを配信する。具体的には、メッセージ配信部501は、トピックへメッセージを受信すると、そのトピックのサブスクライバとして記憶しているデバイス200に対して、そのメッセージを配信する。
配信状況管理部502は、デバイス200に対するメッセージの配信失敗を検出して、エッジサーバ300に通知する。具体的には、配信状況管理部502は、メッセージを受信したトピックのサブスクライバとして記憶しているデバイス200との通信が不可能でメッセージが配信できない場合、まず、そのメッセージのそのデバイス200への再送処理を試みてもよい。再送処理は、例えば、所定間隔毎に実行されてもよい。そして、配信状況管理部502は、所定の条件に応じて、配信に失敗したと判断してもよい。所定の条件とは、例えば、再送回数が閾値に達したことであってもよいし、最初の配信処理からの経過時間が閾値に達したことであってもよいが、これらに限らない。
次に、デバイス200の機能について説明する。
デバイス200は、前述のように、管理の対象となる移動体である。例えば、デバイス200は、生産ラインにおいて生産中の製品と共に移動する物体に搭載されたものであってもよい。あるいは、デバイス200は、例えば、人によって携帯される装置であってもよい。ただし、これらは一例であり、デバイス200として適用可能な移動体を限定するものではない。デバイス200は、管理装置100からのメッセージを、第1ブローカ400、エッジサーバ300、第2ブローカ500を介して、パブリッシュ/サブスクライブ通信により受信する。具体的には、デバイス200は、接続した第2ブローカ500に対して、自装置に関連するトピックのサブスクライブを登録する。これにより、デバイス200は、その第2ブローカ500に接続している限り、その第2ブローカ500の該当するトピックへパブリッシュされるメッセージを受信する。
例えば、デバイス200には、センサが搭載されていてもよい。そして、デバイス200は、自装置に搭載されているセンサに関するトピックのサブスクライブを、第2ブローカ500に登録してもよい。
以上のように構成された通信システム1の動作について、図4を参照して詳細に説明する。なお、以下の動作の説明では、メッセージには、パブリッシュ/サブスクライブ通信における送達保証レベルとして、送信先に届くことが保証されるレベル(例えば、MQTTであれば、1または2)が設定されているものとする。送達保証レベルとして、送信先に届くことが保証されないレベル(MQTTであれば、0)が設定されたメッセージについての動作は、以下のステップS4で終了するため、説明を省略する。
まず、管理装置100は、デバイス200宛のメッセージを、第1ブローカ400に送信する。具体的には、管理装置100は、デバイス200宛のメッセージを、第1ブローカ400におけるそのデバイス200に関連するトピックへパブリッシュする。そして、第1ブローカ400のメッセージ配信部401は、デバイス200宛のメッセージを受信する(ステップS1)。
次に、メッセージ配信部401は、受信したデバイス200宛のメッセージを、そのデバイス200への配信を担当中のエッジサーバ300に配信する。具体的には、メッセージ配信部401は、デバイス200宛のメッセージを受信したトピックのサブスクライバとして記憶しているエッジサーバ300に対して、そのメッセージを配信する(ステップS2)。
次に、エッジサーバ300のメッセージ送受信部301は、自装置が配信を担当中のデバイス200宛のメッセージを、第1ブローカ400から受信する。そして、メッセージ送受信部301は、受信したデバイス200宛のメッセージを、第2ブローカ500に送信する。具体的には、メッセージ送受信部301は、デバイス200宛のメッセージを、第2ブローカ500におけるそのデバイス200に関連するトピックへパブリッシュする(ステップS3)。
次に、第2ブローカ500のメッセージ配信部501は、デバイス200宛のメッセージを受信する。そして、メッセージ配信部501は、受信したデバイス200宛のメッセージを、そのデバイス200に配信する。具体的には、メッセージ配信部501は、デバイス200宛のメッセージを受信したトピックのサブスクライバとして記憶しているデバイス200に対して、そのメッセージを配信する(ステップS4)。
ここで、配信が成功した場合(ステップS5でYes)、通信システム1は、動作を終了する。
一方、配信が成功しなかった場合(ステップS5でNo)、メッセージ配信部501は、再送を試みる(ステップS6)。例えば、前述のように、メッセージ配信部501は、所定期間経過する毎に、再送を試みてもよい。
次に、配信状況管理部502は、配信に失敗したか否かを検出する(ステップS7)。
例えば、前述のように、配信状況管理部502は、ステップS6での再送を試みた回数または最初に配信を行ってからの経過時間等に基づいて、配信に失敗したか否かを判断してもよい。
ここで、配信の失敗が検出されなければ(ステップS7でNo)、すなわち、メッセージは、再送によりデバイス200に配信されたことになる。この場合、通信システム1は、動作を終了する。
一方、配信の失敗が検出された場合(ステップS7でYes)、配信状況管理部502は、このメッセージの送信元のエッジサーバ300に対して、配信失敗を通知する(ステップS8)。
次に、エッジサーバ300において、配信失敗が通知された場合(ステップS9でYes)、依頼先決定部302は、配信に失敗したデバイス200宛のメッセージについて、再配信の依頼先となる他のエッジサーバ300を決定する(ステップS10)。
例えば、前述のように、依頼先決定部302は、自装置の周辺に位置する他のエッジサーバ300を候補として、それらの中から依頼先を決定してもよい。
次に、再配信依頼部303は、決定した依頼先のエッジサーバ300に対して再配信を依頼するデバイス200宛のメッセージを、第1ブローカ400に送信する(ステップS11)。
具体的には、前述のように、再配信依頼部303は、第1ブローカ400における再配信用トピックへ、該当するメッセージをパブリッシュすればよい。再配信用トピックとしては、自装置と、依頼先のエッジサーバ300と、再配信先のデバイス200との組合せに応じた再配信用トピックが適用される。
次に、第1ブローカ400のメッセージ配信部401は、再配信が依頼されたメッセージを受信する。そして、メッセージ配信部401は、再配信の依頼先のエッジサーバ300に対して、依頼されたメッセージを配信する(ステップS12)。
具体的には、前述のように、メッセージ配信部401は、メッセージを受信した再配信用トピックのサブスクライバとして記憶しているエッジサーバ300に対して、依頼されたメッセージを配信すればよい。
そして、通信システム1は、依頼されたメッセージが依頼先のエッジサーバ300によって受信されると、ステップS3からの動作を実行すればよい。
以上で、通信システム1の動作の説明を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としての通信システムは、多段に構成されるブローカを介したパブリッシュ/サブスクライブ通信において、移動可能なデバイスに対するメッセージの配信をより確実に行うことができる。
その理由について説明する。本実施の形態では、管理装置がデバイス宛のメッセージを第1ブローカに送信すると、第1ブローカのメッセージ配信部が、該当するデバイスの配信を担当中のエッジサーバにメッセージを配信する。そして、メッセージ送受信部が、受信したメッセージをデバイスに配信するため第2ブローカに送信する。そして、第2ブローカのメッセージ配信部が、該当するデバイスに対して、メッセージを配信する。そして、第2ブローカの配信状況管理部が、配信失敗を検出した場合、エッジサーバに対して、配信失敗を通知する。そして、配信失敗を通知されたエッジサーバでは、依頼先決定部が、配信に失敗したメッセージのデバイスへの再配信の依頼先となる他のエッジサーバを決定する。そして、再配信依頼部が、決定した他のエッジサーバに対して、再配信を依頼するメッセージを第1ブローカに送信する。そして、第1ブローカのメッセージ配信部は、再配信が依頼されたメッセージを受信すると、依頼先である他のエッジサーバに対して、該当するメッセージを配信する。そして、再配信が依頼されたメッセージを受信した他のエッジサーバは、そのメッセージを該当するデバイスへ配信するため第2ブローカに送信するからである。
これにより、本実施の形態は、管理装置から、デバイスに届くことが保証される送達保証レベルで送信されたメッセージが、そのデバイスへの配信を担当中のエッジサーバに配信されたにも関わらず、デバイスの移動によりロストするという事態を抑止できる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本実施の形態としての通信システム2の機能ブロック構成を図5に示す。通信システム2は、本発明の第1の実施の形態としての通知システム1に対して次の点が異なる。すなわち、通信システム2は、エッジサーバ300に替えてエッジサーバ310と、第1ブローカ400に替えて第1ブローカ410と、第2ブローカ500に替えて第2ブローカ510とを備える。さらに、通信システム2は、エリアマップ管理装置610を備える。なお、エリアマップ管理装置610およびエッジサーバ310は、ネットワークを介して通信可能に接続される。
ここで、通信システム2を構成する各装置は、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。また、エリアマップ管理装置610は、CPU、メモリ、および、ネットワークインタフェースを含む装置によって構成可能である。ただし、通信システム2を構成する各装置のハードウェア構成は、上述の構成に限定されない。
まず、エリアマップ管理装置610について説明する。エリアマップ管理装置610は、エッジサーバ310間の位置関係を表すエリアマップ情報を記憶している。例えば、エリアマップ情報は、エッジサーバ310を識別する情報に対して、その周辺に位置するエッジサーバ310を識別する情報を関連付けた情報であってもよい。ただし、本実施の形態では、エッジサーバ310は、エリア毎に配信を担当しているとする。この場合、エリアマップ管理装置610は、あるエッジサーバ310を識別する情報に対して、そのエッジサーバ310と同一のエリアでの配信を担当する他のエッジサーバ310の識別情報を関連付けて記憶しないことが望ましい。
エリアマップ情報の一例を図6に示す。図6では、例えば、「Area#1:CSE#1」は、1つ目のエリアの配信を担当する1つ目のエッジサーバ310を表している。この例では、エッジサーバ310「Area#1:CSE#1」の周辺に位置するエッジサーバ310として、「Area#5:CSE#10」、「Area#5:CSE#7」および「Area#8:CSE#20」が記憶されている。なお、図6に示すエリアマップ情報は一例であり、エリアマップ情報の内容および形式は限定されない。
次に、エッジサーバ310の各機能ブロックについて説明する。
図5において、エッジサーバ310は、メッセージ送受信部311と、依頼先決定部312と、再配信依頼部313とを有する。
メッセージ送受信部311は、本発明の第1の実施の形態におけるメッセージ送受信部301と略同様に構成される。加えて、メッセージ送受信部311は、他のエッジサーバ310から再配信を依頼されたメッセージのデバイス200への再配信が完了すると、他のエッジサーバ310に対して、再配信完了を通知する。なお、該当するメッセージの該当するデバイス200への再配信が完了したことは、第2ブローカ510から通知される。第2ブローカ510から通知された再配信完了のさらなる通知先となる他のエッジサーバ310は、再配信が完了したメッセージについて自装置と同様に再配信が依頼されていた他のエッジサーバ310である。
なお、メッセージ送受信部311は、そのような他のエッジサーバ310に対する再配信完了の通知を、第1ブローカ410における再配信用トピックへパブリッシュすることにより実現してもよい。
依頼先決定部312は、第2ブローカ510から、デバイス200へのメッセージの配信失敗を通知されると、デバイス200へのメッセージの再配信の依頼先となる他のエッジサーバ310を、次のようにして決定する。
具体的には、依頼先決定部312は、エリアマップ管理装置610に記憶されたエリアマップ情報を参照することにより、自装置の周辺に位置する他のエッジサーバ310を、依頼先の候補として抽出する。なお、依頼先の候補としては、自装置が担当するエリアとは異なるエリアを担当するエッジサーバ310が抽出されることが望ましい。そして、依頼先決定部312は、抽出した候補に基づいて、依頼先のエッジサーバ310を決定する。
詳細には、依頼先決定部312は、依頼先の候補として抽出した各エッジサーバ310に対して、配信失敗を通知されたデバイス200への接続履歴があるか否かを問い合わせる。接続履歴とは、例えば、配信を担当するエリア内でそのデバイス200からの接続が検出された記録の履歴である。そして、依頼先決定部312は、問い合わせ結果に基づいて、それらの候補の中から、該当するデバイス200の移動先の可能性があるエリアで配信を担当するエッジサーバ310を推定する。以降、移動先の可能性があるエリアで配信を担当するエッジサーバ310を、移動先サーバとも記載する。
そして、依頼先決定部312は、移動先サーバに関する情報に基づいて、新たな依頼先の候補を抽出する。具体的には、依頼先決定部312は、エリアマップ管理装置610に記憶されたエリアマップ情報を参照することにより、移動先サーバの周辺に位置する他のエッジサーバ310を、新たな依頼先の候補として抽出する。なお、新たな依頼先の候補としては、移動先サーバが担当するエリアとは異なるエリアを担当するエッジサーバ310が抽出されることが望ましい。そして、依頼先決定部312は、新たな候補である各エッジサーバ310に対して、配信失敗が通知されたデバイス200への接続履歴があるか否かを問い合わせ、問い合わせ結果に基づいて、さらに新たな移動先サーバを推定することを繰り返す。
そして、依頼先決定部312は、繰り返し処理において所定条件が満たされた時点での移動先サーバに基づいて、依頼先のエッジサーバ310を決定する。例えば、所定条件とは、各繰り返し処理で推定される移動先サーバが所定回数以上連続して同一となることであってもよい。以降、所定条件が満たされた時点での移動先サーバであるエッジサーバ310を、移動先マスタサーバとも記載する。そして、依頼先決定部312は、移動先マスタサーバと、移動先マスタサーバの周辺に位置するエッジサーバ310とを、依頼先として決定する。なお、移動先マスタサーバの周辺に位置するエッジサーバ310は、エリアマップ管理装置610を参照することにより特定可能である。このとき、移動先マスタサーバの周辺に位置するエッジサーバ310としては、移動先マスタサーバが担当するエリアとは異なるエリアを担当するエッジサーバ310が特定されることが望ましい。
また、依頼先決定部312は、接続履歴の問い合わせを他のエッジサーバ310から受信した場合に、該当するデバイス200への接続履歴があれば、その接続履歴に関する情報を返信する。本実施の形態では、依頼先決定部312は、自装置が配信を担当するエリアの第2ブローカ510に保持されるトピック管理テーブルを参照することにより、該当するデバイス200に関する接続履歴を取得する。トピック管理テーブルについては後述する。また、接続履歴には、該当するデバイス200の接続が検出された接続時刻が含まれているとする。そこで、依頼先決定部312は、他のエッジサーバ310からの接続履歴の問い合わせに対して、トピック管理テーブルから取得されるそのデバイス200の接続時刻のうち、最も新しい接続時刻を、問い合わせ結果として返信する。
また、依頼先決定部312は、接続履歴の問い合わせを他のエッジサーバ310から受信すると、以降、監視モードとして動作してもよい。監視モードにおいて、依頼先決定部312は、問い合わせのあったデバイス200の接続を新たに検出する度に、その接続時刻を、問い合わせ元のエッジサーバ310に返信する。なお、この場合、依頼先決定部312は、第1ブローカ410から監視モードの解除指示を表す情報を受信するまで、監視モードとして動作する。
なお、依頼先決定部312は、他のエッジサーバ310の依頼先決定部312との間での接続履歴の問い合わせおよび問い合せ結果の送受信を、第1ブローカ410における再配信用トピックへのパブリッシュおよびサブスクライブにより実現する。
再配信依頼部313は、第2ブローカ510から配信失敗が通知されると、配信失敗が検出されたデバイス200宛のメッセージについて一括して、その再配信を依頼先のエッジサーバ310に依頼する。具体的には、再配信依頼部313は、第2ブローカ510から、該当するデバイス200宛にまだ配信が完了していないメッセージを一括して取得する。そして、再配信依頼部313は、第1ブローカ410における再配信用トピックへ、一括して取得した各メッセージをパブリッシュすればよい。
また、再配信依頼部313は、再配信の依頼が完了すると、依頼が完了したことを、第2ブローカ510に通知する。
次に、第1ブローカ410の各機能ブロックについて説明する。
図5において、第1ブローカ410は、メッセージ配信部411と、重複制御部412とを有する。
メッセージ配信部411は、あるエッジサーバ310から再配信を依頼されたメッセージを、依頼先の各エッジサーバ310に配信する。また、メッセージ配信部411は、あるエッジサーバ310から送信されるあるデバイス200への接続履歴の問い合わせを、依頼先の候補となる各エッジサーバ310のうち、後述の重複制御部412により抽出されたエッジサーバ310に対して配信する。また、メッセージ配信部411は、依頼先の候補となる各エッジサーバ310から返信される問い合わせ結果を、問い合わせ元のエッジサーバ310に対して配信する。また、メッセージ配信部411は、依頼先のエッジサーバ310から送信される再配信完了の通知を、同一のメッセージに関して再配信が依頼されていた各エッジサーバ310に対して配信する。なお、メッセージ配信部411は、これらの情報の送受信を、再配信用トピックを介して行う。
また、メッセージ配信部411は、再配信が依頼されたメッセージを受信すると、そのメッセージの宛先であるデバイス200について前述の監視モードとなっているエッジサーバ310に対して、監視モードの解除を表す情報を配信する。これは、再配信が依頼されたメッセージについては、既に再配信の依頼先が決定されており、再配信の依頼先を決定するための監視モードは不要となるからである。具体的には、メッセージ配信部411は、再配信が依頼されたメッセージを受信すると、そのメッセージの宛先であるデバイス200に関する問い合わせがそれまでにパブリッシュされた再配信用トピックへ、解除を指示するメッセージをパブリッシュすればよい。
重複制御部412は、エッジサーバ310から他のエッジサーバ310への接続履歴の問い合わせを、同一のエッジサーバ310に対して重複して送信しないよう制御する。具体的には、重複制御部412は、エッジサーバ310から接続履歴の問い合わせを受信すると、その問い合わせ先のエッジサーバ310の中から、同一の問い合わせを過去に送信していないエッジサーバ310を抽出し、メッセージ配信部411に通知する。
例えば、重複制御部412は、図7に示すような重複制御情報を保持していてもよい。図7の例では、重複制御情報は、配信に失敗しているメッセージを識別するリクエストIDに対して、そのメッセージの宛先であるデバイス200の接続履歴を問い合わせ済のエッジサーバ310を識別する情報を関連付けたものである。重複制御部412は、接続履歴の問い合わせ先のエッジサーバ310の中から、重複制御情報に記録された問い合わせ済のエッジサーバ310を除外することにより、同一の問い合わせを過去に送信していないエッジサーバ310を抽出すればよい。
次に、第2ブローカ510の各機能ブロックについて説明する。
図5において、第2ブローカ510は、メッセージ配信部511と、配信状況管理部512と、グルーピング部513とを有する。
メッセージ配信部511は、本発明の第1の実施の形態におけるメッセージ配信部501と略同様に構成される。ただし、本実施の形態では、メッセージ配信部511は、メッセージ管理テーブルと、トピック管理テーブルと、配信状況テーブルとを用いて機能する例について説明する。
メッセージ管理テーブルは、自装置におけるトピックに受信したメッセージの内容を管理するテーブルである。メッセージ管理テーブルの一例を図8に示す。
図8において、リクエストIDは、メッセージを識別する情報である。図8の例では、例えば、リクエストID「0001」のメッセージは、送達保証レベル(QoS)としてMQTTに基づく1が設定されている。また、メッセージ管理テーブルは、各メッセージのコンテンツを含んでいる。メッセージ配信部511は、トピックにメッセージを受信すると、このメッセージ管理テーブルに、受信したメッセージに関する情報を保存する。メッセージ管理テーブルのメッセージは、そのメッセージの配信が完了するか、そのメッセージの再配信が他のエッジサーバ310に依頼されるまで、保存される。
トピック管理テーブルは、自装置に設定されているトピックおよびそのサブスクライバを関連付けた情報である。また、トピック管理テーブルは、そのサブスクライバが登録された時刻を含む。サブスクライバが登録された時刻は、サブスクライバが接続した時刻と同等であるとみなされるため、以降、サブスクライバが登録された時刻を、接続時刻とも記載する。トピック管理テーブルの一例を図9に示す。
図9において、例えば、トピック「/m2m/req/Area#1:CSE#1/Dev#1」は、「Area#1:CSE#1」で識別されるエッジサーバ310から「Dev#1」で識別されるデバイス200宛に配信されるメッセージ用のトピックである。また、図9では、このトピックのサブスクライバとして、「Dev#1」で識別されるデバイス200が関連付けられている。また、「Dev#1」で識別されるデバイス200がこのトピックのサブスクライバとして登録された接続時刻は、「2016/01/15 10:05」となっている。メッセージ配信部511は、「Dev#1」で識別されるデバイス200の接続を検出した際に、このトピック、そのサブスクライバおよび接続時刻を、トピック管理テーブルに保存してもよい。また、メッセージ配信部511は、エッジサーバ310からの接続履歴の問い合わせに応じて、トピック管理テーブルにおいて、該当するデバイス200の接続時刻を検索して返信する。
配信状況テーブルは、自装置のトピックへ受信したメッセージの配信状況を記憶するテーブルである。配信状況テーブルの一例を図10に示す。
図10において、例えば、1行目は、リクエストID「0001」のメッセージについて、トピックが「/m2m/req/Area#1:CSE#1/Dev#1」であり、「Dev#1」のデバイス200に対して、配信が完了したことを表している。例えば、メッセージ配信部511は、メッセージの配信または再送を実行する度に、配信状況テーブルを更新してもよい。
図8〜図10に示した各種の情報は、第2ブローカ510における他の各機能ブロックによっても利用される。
グルーピング部513は、自装置から配信されるメッセージのうち、指定されたデバイス200に対して配信されるメッセージを一括して抽出する。具体的には、グルーピング部513は、例えば、上述のトピック管理テーブルおよびメッセージ管理テーブルを参照してもよい。その場合、グルーピング部513は、トピック管理テーブルにおいて、指定されたデバイス200がサブスクライバとして記憶されているトピックを抽出する。そして、グルーピング部513は、上述のメッセージ管理テーブルから、抽出したトピックのメッセージを一括して抽出すればよい。
配信状況管理部512は、本発明の第1の実施の形態における配信状況管理部502と略同様に構成される。加えて、配信状況管理部512は、メッセージのデバイス200への配信の失敗を検出すると、そのデバイス200に対して配信されるメッセージを、グルーピング部513を用いて抽出する。そして、配信状況管理部512は、抽出したメッセージについて、そのデバイス200への再送を停止するようメッセージ配信部511を制御する。
また、配信状況管理部512は、配信の失敗が検出されたメッセージの宛先となっているデバイス200についてグルーピング部513を用いて抽出したメッセージを、エッジサーバ310の再配信依頼部313からの問い合わせに応じて返信する。
また、配信状況管理部512は、エッジサーバ310の再配信依頼部313によって他のエッジサーバ310に対して再配信の依頼が完了したメッセージを、上述のメッセージ管理テーブルから削除する。なお、配信状況管理部512は、エッジサーバ310の再配信依頼部313から、依頼の完了を通知されることにより、該当するメッセージの削除を行う。
以上のように構成された通信システム2の動作について、図面を参照して説明する。
まず、通信システム2の動作の概略を図11に示す。なお、以下の動作の説明では、本発明の第1の実施の形態における動作の説明と同様に、メッセージには、パブリッシュ/サブスクライブ通信における送達保証レベルとして、送信先に届くことが保証されるレベルが設定されているものとする。送達保証レベルとして、送信先に届くことが保証されないレベルが設定されたメッセージの場合の動作については、図11のステップS4で動作が終了するため、説明を省略する。
まず、通信システム2は、ステップS1〜ステップS9まで、本発明の第1の実施の形態と同様に動作する。これにより、管理装置100によってデバイス200宛に送信されたメッセージは、第2ブローカ510によってデバイス200に対して配信され、配信に失敗した場合、配信失敗がエッジサーバ310に通知される。
また、第2ブローカ510の配信状況管理部512は、ステップS8で配信の失敗を通知すると、次に、配信失敗時の処理を実行する(ステップS111)。このステップの詳細については後述する。
次に、配信状況管理部512は、配信が成功したメッセージ、または、配信に失敗して他のエッジサーバ310への再配信の依頼が完了したメッセージを、メッセージ管理テーブルから削除する(ステップS112)。なお、再配信の依頼の完了は、後述のステップS122において通知される。
また、配信失敗を通知されたエッジサーバ310では、依頼先決定部312は、該当するメッセージのデバイス200への再配信の依頼先を決定する処理を実行する(ステップS121)。このステップの詳細については後述する。
次に、再配信依頼部313は、決定した依頼先のエッジサーバ310に対して再配信を依頼するメッセージを、第1ブローカ410に送信する(ステップS122)。このステップの詳細については後述する。
次に、第1ブローカ410のメッセージ配信部411は、再配信が依頼されたメッセージを、依頼先のエッジサーバ310に対して配信する(ステップS131)。このステップの詳細については後述する。
以上で、通信システム2の動作の概略の説明を終了する。
次に、ステップS111において、第2ブローカ510が配信失敗時に実行する処理の詳細を、図12に示す。
図12では、まず、第2ブローカ510の配信状況管理部512は、グルーピング部513を用いて、自装置から配信されるメッセージのうち、配信に失敗したメッセージの宛先であるデバイス200に配信されるメッセージを一括して抽出する(ステップA11)。
次に、配信状況管理部512は、一括して抽出されたメッセージへの配信を停止するよう、メッセージ配信部511を制御する(ステップA12)。
次に、配信状況管理部512は、一括して抽出されたメッセージを、配信に失敗したメッセージの配信元であるエッジサーバ310に対して送信する(ステップA13)。なお、このステップは、エッジサーバ310からの要求(後述の図15におけるステップC11)に応じて実行されてもよい。
以上で、第2ブローカ510は、配信失敗時の動作を終了する。
次に、ステップS121において、エッジサーバ310が依頼先を決定する処理の詳細を、図13に示す。依頼先を決定する処理では、エッジサーバ310は、他のエッジサーバ310との間で、第1ブローカ410を介して情報を送受信することにより、依頼先を決定する。
図13では、まず、エッジサーバ310の依頼先決定部312は、自装置を移動先サーバとする(ステップB11)。
次に、依頼先決定部312は、エリアマップ管理装置610を参照することにより、移動先サーバの周辺に位置する他のエッジサーバ310を、依頼先の候補として取得する(ステップB12)。
次に、依頼先決定部312は、依頼先の候補の各エッジサーバ310に対して、配信に失敗したメッセージの宛先であるデバイス200の接続履歴を問い合わせるメッセージを、第1ブローカ410に送信する(ステップB13)。前述のように、依頼先決定部312は、第1ブローカ410における再配信用トピックに、問い合わせのメッセージをパブリッシュすればよい。
次に、第1ブローカ410のメッセージ配信部411は、問い合わせのメッセージを受信する。そして、重複制御部412は、問い合わせ先となる各エッジサーバ310のうち、過去に同一の問い合わせのメッセージを配信していないエッジサーバ310を抽出する(ステップB14)。
ここで、問い合わせのメッセージには、配信に失敗したメッセージを識別するリクエストIDが含まれている。また、重複制御部412は、前述の重複制御情報を記憶している。そこで、重複制御部412は、問い合わせのメッセージを受信した再配信用トピックのサブスクライバとして記憶しているエッジサーバ310のうち、重複制御情報において該当するリクエストIDに関連付けられた情報が示すエッジサーバ310を除外すればよい。
次に、第1ブローカ410のメッセージ配信部411は、ステップB14で抽出した各エッジサーバ310に対して、問い合わせのメッセージを配信する(ステップB15)。
次に、重複制御部412は、問い合わせのメッセージの配信に応じて、重複制御情報を更新する(ステップB16)。
具体的には、重複制御部412は、配信に失敗したメッセージを識別するリクエストIDに関連付けた重複制御情報において、問い合わせのメッセージを配信したエッジサーバ310の識別情報を追加して関連付ければよい。なお、重複制御部412は、該当するリクエストIDの重複制御情報がまだなければ、新規に作成すればよい。
次に、依頼先の候補となる他のエッジサーバ310において、依頼先決定部312は、問い合わせのメッセージを受信する。そして、依頼先決定部312は、該当するデバイス200への接続履歴を検索する(ステップB17)。
具体的には、依頼先決定部312は、自装置が配信を担当するエリアの第2ブローカ510にトピック管理テーブルの内容を問い合わせることにより、その接続履歴を検索すればよい。
ここで、接続履歴がある場合(ステップB18でYes)、依頼先決定部312は、問い合わせ結果として接続時刻を含む情報を、第1ブローカ410に送信する(ステップB19)。前述のように、依頼先決定部312は、第1ブローカ410の再配信用トピックへ、問い合わせ結果のメッセージをパブリッシュすればよい。
次に、他のエッジサーバ310において、依頼先決定部312は、監視モードとして動作する(ステップB20)。監視モードの詳細については、後述する。
次に、第1ブローカ410のメッセージ配信部411は、受信した問い合わせ結果を、問い合わせ元のエッジサーバ310に配信する(ステップB21)。
次に、問い合わせ元のエッジサーバ310において、依頼先決定部312は、依頼先の候補となる各エッジサーバ310から受信した問い合わせ結果に基づいて、新たな移動先サーバを推定する(ステップB22)。例えば、依頼先決定部312は、最新の接続時刻を含む問い合わせ結果が得られたエッジサーバ310を、新たな移動先サーバとして推定してもよい。
次に、依頼先決定部312は、移動先サーバの更新が停止したか否かを判断する(ステップB23)。例えば、依頼先決定部312は、ステップB22で推定された移動先サーバが、所定回数以上更新されなかった場合に、更新が停止したと判断してもよい。
ここで、移動先サーバの更新が停止していない場合、依頼先決定部312は、ステップB12からの処理を繰り返す。
一方、移動先サーバの更新が停止した場合について説明する。この場合、依頼先決定部312は、この時点での移動先サーバを、移動先マスタサーバとする。そして、依頼先決定部312は、エリアマップ管理装置610を参照することにより、移動先マスタサーバの周辺に位置する他のエッジサーバ310を取得する(ステップB24)。
そして、依頼先決定部312は、移動先マスタサーバと、その周辺に位置する他のエッジサーバ310とを、再配信の依頼先のエッジサーバ310として決定する(ステップB25)。
以上で、エッジサーバ310は、再配信の依頼先を決定する動作を終了する。
次に、ステップB20におけるエッジサーバ310の監視モードとしての動作を、図14を参照して説明する。
図14では、まず、依頼先決定部312は、問い合わせの対象であるデバイス200の接続を検出したか否かを判断する(ステップB201)。
前述のように、依頼先決定部312は、第2ブローカ510にトピック管理テーブルの内容を問い合わせることにより、接続を検出したか否かを判断すればよい。
ここで、デバイス200の接続を検出した場合、依頼先決定部312は、その接続時刻を含む問い合わせ結果を、第1ブローカ410に送信する(ステップB202)。
前述のように、依頼先決定部312は、第1ブローカ410の再配信用トピックに、問い合わせ結果のメッセージをパブリッシュすればよい。
次に、依頼先決定部312は、監視モードが解除されたか否かを判断する(ステップB203)。
なお、ステップB201で、デバイス200の接続が検出されない場合にも、依頼先決定部312は、このステップを実行する。
ここで、監視モードが解除されていなければ、依頼先決定部312は、ステップB201からの動作を繰り返す。一方、監視モードが解除されていれば、エッジサーバ310は、監視モードの動作を終了する。
以上で、エッジサーバ310における監視モードの動作の説明を終了する。
次に、ステップS122およびステップS131において、エッジサーバ310および第1ブローカ410が、配信に失敗したメッセージの再配信を依頼し配信する動作の詳細を、図15に示す。
図15では、まず、エッジサーバ310の再配信依頼部313は、配信に失敗したメッセージと同一の宛先であるデバイス200宛のメッセージを、第2ブローカ510から取得する(ステップC11)。なお、再配信依頼部313は、第2ブローカ510に対して、前述した図12のステップA13の実行を要求することにより、このステップを実行してもよい。
次に、再配信依頼部313は、依頼先として決定された他の各エッジサーバ310に対して、ステップC11で受信したメッセージのそれぞれを、その再配信を依頼するため第1ブローカ410に送信する(ステップC12)。
前述のように、再配信依頼部313は、第1ブローカ410における再配信用トピックへ、該当するメッセージのそれぞれをパブリッシュすればよい。
次に、再配信依頼部313は、再配信の依頼が完了したことを、第2ブローカ510に対して通知する(ステップC13)。
次に、第1ブローカ410の重複制御部412は、受信されたメッセージに関する重複制御情報を削除する(ステップC14)。これは、これらのメッセージの宛先のデバイス200については、接続履歴の問い合わせの重複制御を行う必要がなくなるからである。
次に、メッセージ配信部411は、このメッセージの宛先のデバイス200について接続履歴の問い合わせを配信済みの各エッジサーバ310に対して、監視モードの解除を通知する(ステップC15)。
例えば、メッセージ配信部411は、自装置における再配信用トピックへ解除指示のメッセージをパブリッシュすることにより、該当する各エッジサーバ310に対して監視モードの解除を通知してもよい。
監視モードの解除を通知されたエッジサーバ310では、図14のB203でYesとなり、監視モードが終了する。
次に、メッセージ配信部411は、再配信が依頼されたメッセージを、その依頼先となる各エッジサーバ310に配信する(ステップC16)。
以上で、図11のステップS122およびステップS131における動作の詳細な説明を終了する。
次に、図11のステップS131の動作に続いて、通信システム2がメッセージを再配信する動作の詳細を図16に示す。
図16では、まず、再配信が依頼されたエッジサーバ310において、メッセージ送受信部311は、再配信が依頼されたメッセージを、第2ブローカ510に送信する(ステップD11)。
具体的には、メッセージ送受信部311は、第2ブローカ510におけるデバイス200に関連するトピックへ、再配信が依頼されたメッセージをパブリッシュすればよい。
次に、第2ブローカ510のメッセージ配信部511は、再配信が依頼されたメッセージを、デバイス200に配信する(ステップD12)。
ここで、配信が成功しなかった場合(ステップS5でNo)、第2ブローカ510は、図11を参照して説明したステップS6〜S7を実行する。これにより、第2ブローカ510は、メッセージの再送を行い、配信に失敗したか否かを判断する。
ステップS7において、配信に失敗したと判断した場合、通信システム2は、図11に示したステップS8以降と同様に動作する。ただし、配信の失敗を通知された依頼元のエッジサーバ310は、自装置が、移動先マスタサーバであった場合に、ステップS9以降を実行するようにする。もし、配信の失敗を通知された依頼元のエッジサーバ310が、移動先マスタサーバの周辺のエッジサーバ310であった場合、ステップS9以降を実行せずに、動作を終了してもよい。
一方、ステップS5で再配信が成功したと判断した場合、または、ステップS7で配信に失敗していない(すなわち、再送により再配信に成功した)と判断した場合、メッセージ配信部511は、次のように動作する。この場合、メッセージ配信部511は、配信元のエッジサーバ310に対して、再配信完了を通知する(ステップD13)。
そして、メッセージ配信部511は、再配信を完了したメッセージを、メッセージ管理テーブルから削除する(ステップD14)。
次に、エッジサーバ310において、第2ブローカ510から再配信完了の通知を受けた場合(ステップD15でYes)、再配信依頼部313は、他のエッジサーバ310に対して、再配信完了を通知する(ステップD16)。
ここで、再配信完了の通知先となる他のエッジサーバ310は、自装置と共に、該当するメッセージの再配信を依頼されたエッジサーバ310である。例えば、再配信完了の通知を第2ブローカ510から受けたエッジサーバ310において、再配信依頼部313は、自装置と共に再配信の依頼先となった移動先マスタサーバを特定する。なお、自装置が移動先マスタサーバである場合もある。そして、再配信依頼部313は、移動先マスタサーバおよびその周辺に位置するエッジサーバ310のうち自装置以外を表す情報を、エリアマップ管理装置610を参照して取得する。取得された情報の示すエッジサーバ310は、自装置と共に同一のメッセージについて再配信を依頼されたエッジサーバ310である。そして、再配信依頼部313は、これらのエッジサーバ310に対して、再配信完了を通知すればよい。
なお、エッジサーバ310間での再配信完了の通知は、第1ブローカ410における再配信用トピックを介して行われる。
一方、エッジサーバ310において、他のエッジサーバ310から再配信完了の通知を受けた場合(ステップD15でNo、D17でYes)について説明する。この場合、再配信依頼部313は、再配信が依頼されていたメッセージの配信のとりやめを、第2ブローカ510に通知する(ステップD18)。
そして、第2ブローカ510において、メッセージ配信部511は、該当するメッセージを削除して、配信をとりやめる(ステップD14)。
以上で、通信システム2は、メッセージを再配信する動作を終了する。
次に、通信システム2の動作の具体例を、図17〜図21を用いて説明する。
図17〜図21において、デバイス200が移動し得る空間的な範囲は、N個のエリア1〜エリアNに分割されている。Nは正の整数である。また、エリアi(i=1〜N)には、そのエリア内に存在するデバイス200への配信を担当するエッジサーバ310が少なくとも1つ設けられている。なお、エリアによっては、複数のエッジサーバ310が設けられている場合もある。また、エリアiには、そのエリアのエッジサーバ310からそのエリア内に存在するデバイス200に向けて配信されるメッセージを中継する第2ブローカ510が少なくとも1つ設けられている。なお、エリアによっては、複数の第2ブローカ510が設けられている場合もある。
また、図17〜図21において、1つの管理装置100が、デバイス200を管理している。また、管理装置100および各エリアのエッジサーバ310の間を接続するため、1つの第1ブローカ410が設けられている。
また、この具体例において、デバイス200上には、各種のセンサが搭載されている。デバイス200は、自装置に搭載されたセンサに関連するトピックのメッセージを受信するよう構成される。つまり、デバイス200は、自装置が存在するエリアの第2ブローカ510に接続し、自装置および自装置に搭載されたセンサに関連するトピックのサブスクライブを登録する。
このような具体例において、管理装置100が、あるデバイス200に対してそのデバイス200上のあるセンサを管理するためのメッセージを配信することを想定する。配信対象のデバイス200を、デバイス200Aと呼ぶことにする。デバイス200Aは、当初、エリア1に存在しているものとする。対象のセンサを、センサaと呼ぶことにする。また、該当するメッセージを、メッセージm1と呼ぶことにする。
(1)まず、図17において、管理装置100は、デバイス200Aに対してセンサaを管理するためのメッセージm1を、第1ブローカ410を介して、エリア1のエッジサーバ310に対して配信する(図11のステップS1〜S2)。
なお、ここでは、管理装置100は、デバイス200Aが存在するエリアがエリア1であることを表す情報を、外部から取得したものとする。また、通信プロトコルとしてMQTTが採用されており、メッセージm1は、送達保証レベルとして1が設定されて送信されたものとする。
(2)ここで、エリア1のエッジサーバ310は、自装置が担当するエリア1でデバイス200Aの接続を検出していたため、デバイス200Aに関連するトピックのサブスクライブを第1ブローカ410に登録してあるものとする。そこで、エリア1のエッジサーバ320は、メッセージm1を受信する。
(3)次に、デバイス200Aが移動し、エリアAに存在しなくなったとする。ところが、エリア1のエッジサーバ310は、この段階では、エリアAにデバイス200Aが存在しないことを検出していない。
(4)そこで、エリア1のエッジサーバ310は、メッセージm1をデバイス200Aに配信するため、第2ブローカ510に送信する(ステップS3)。ここで、メッセージm1は、送達保証レベルとして1が設定されて送信される。
(5)次に、第2ブローカ510において、メッセージ配信部511は、メッセージm1を受信し、メッセージ管理テーブルに保存する。そして、メッセージ配信部511は、メッセージm1のデバイス200Aへの配信を行う(ステップS4)。ところが、エリアAにデバイス200Aが存在しないため、メッセージ配信部511は、メッセージm1のデバイス200Aへの再送を試みる(S5でNo、S6)。
(6)次に、デバイス200Aは、他のエリアを通過しながら移動し、エリアNで移動を停止する。そして、デバイス200Aは、エリアNの第2ブローカ510に、自装置上のセンサに関連するトピックのサブスクライブを登録したものとする。
(7)次に、図18において、管理装置100は、デバイス200A上の他のセンサbおよびセンサcをそれぞれ管理するためのメッセージm2およびm3を、さらに配信する。この時点でも、管理装置100は、デバイス200Aがエリア1に存在しているという情報を取得しているものとする。そこで、管理装置100は、メッセージm2およびm3を、第1ブローカ410を介して、エリア1のエッジサーバ310に向けて配信する(図11のステップS1〜S2)。ここで、メッセージm2およびm3は、それぞれ送達保証レベルとして1が設定されて送信される。
(8)メッセージm2およびm3についても、それぞれ上述した(2)〜(4)と同様に各機能ブロックが動作し、エリア1の第2ブローカ510では、メッセージ管理テーブルに、メッセージm2およびm3が追加されていく。そして、エリア1の第2ブローカ510の配信状況管理部512は、メッセージm1について、再送回数等に基づいて、配信に失敗したと判断する(ステップS7でYes)。
(9)そこで、配信状況管理部512は、エリア1のエッジサーバ310に配信失敗を通知する(ステップS8)。
(10)また、エリア1の第2ブローカ510の配信状況管理部512は、グルーピング部513を用いて、配信の失敗を検出したデバイス200A宛のメッセージm1〜m3を一括して抽出する(ステップS111、図12のステップA11)。
(11)そして、エリア1の第2ブローカ510の配信状況管理部512は、抽出したメッセージm1〜m3の配信処理を停止するよう、メッセージ配信部511を制御する(ステップA12)。
(12)次に、図19において、配信失敗が通知されたエリア1のエッジサーバ310の依頼先決定部312は、エリアマップ管理装置610に問い合わせを行う。これにより、依頼先決定部312は、依頼先の候補となる他のエッジサーバ310を特定する(図11のステップS121、図13のステップB12)。
(13)次に、エリア1のエッジサーバ310の依頼先決定部312は、依頼先の候補となる他のエッジサーバ310に対して、デバイス200Aの接続履歴の問い合わせる(ステップB13)。このとき、問い合わせの送受信は、第1ブローカ410の再配信用トピックを介して行われる。
(14)次に、第1ブローカ410の重複制御部412は、重複制御情報を参照し、対象のメッセージm1の宛先であるデバイス200Aに関して接続履歴を問い合わせ済みのエッジサーバ310を、問い合わせ先から除外する(ステップB14)。そして、メッセージ配信部411は、問い合わせのメッセージを、問い合わせ先へ配信する(ステップB15)。そして、重複制御部412は、重複制御情報に、対象のメッセージm1の宛先であるデバイス200Aに関する問い合わせ先を追加して記録する(ステップB16)。
(15)次に、図20において、問い合わせを受け取った他のエリアのエッジサーバ310の依頼先決定部312は、デバイス200Aの接続履歴を、第2ブローカ510のトピック管理テーブルから取得する(ステップB17)。そして、他のエリアのエッジサーバ310の依頼先決定部312は、該当するデバイス200Aの接続履歴が得られれば、接続時刻を問い合わせ結果として返信する。接続時刻の返信は、第1ブローカ410の再配信用トピックを介して行われる(ステップB18でYes、B19)。
(16)また、問い合わせのメッセージを受け取った他のエリアのエッジサーバ310の依頼先決定部312は、監視モードとなり、所定間隔でデバイス200Aの接続履歴をチェックする。そして、他のエリアのエッジサーバ310の依頼先決定部312は、新たにデバイス200Aの接続履歴が得られた場合は、その接続時刻を問い合わせ結果として返信する(ステップB20、B21)。
(17)次に、問い合わせ結果を受信したエリア1のエッジサーバ310の依頼先決定部312は、問い合わせ結果に基づいて、依頼先の候補の中から移動先サーバを推定する。例えば、移動先サーバとして、エリア3のエッジサーバ310が推定されたとする(ステップB22)。
(18)エリア1のエッジサーバ310の依頼先決定部312は、移動先サーバであるエリア3のエッジサーバ310に基づき新たな依頼先の候補となる他のエッジサーバ310を、エリアマップ管理装置610に問い合わせることにより特定する。そして、(13)からの動作が繰り返される(ステップB12〜B22)。
そして、繰り返された(17)において、移動先サーバとして、エリアNのエッジサーバ310が推定されることが所定回数連続して続いたとする(ステップB23でYes)。
(19)そこで、エリア1のエッジサーバ310における依頼先決定部312は、エリアNのエッジサーバ310を移動先マスタサーバとする。そして、依頼先決定部312は、エリアNのエッジサーバ310と、その周辺のエッジサーバ310とを、再配信の依頼先として決定する。周辺のエッジサーバ310は、エリアN−2およびエリアN−1のエッジサーバ310であったとする(ステップB24、B25)。
(20)次に、図21において、エリア1のエッジサーバ310の再配信依頼部313は、再配信を依頼するため、第2ブローカ510から、デバイス200A宛のメッセージm1〜m3を一括して取得する(図11のステップS122、図15のステップC11)。
(21)次に、エリア1のエッジサーバ310における再配信依頼部313は、依頼先として決定したエリアN、N−1、N−2の各エッジサーバ310に対して、一括して取得したメッセージm1〜m3のそれぞれの再配信を依頼する(ステップC12)。再配信の依頼は、第1ブローカ410における再配信用トピックを介して行われる。そして、再配信依頼部313は、再配信の依頼の完了を、第2ブローカ510に通知する(ステップC13)。
(22)再配信の依頼の完了を通知された第2ブローカ510では、配信状況管理部512が、メッセージm1〜m3をメッセージ管理テーブルから削除する(図11のステップS112)。
(23)また、再配信が依頼されたメッセージを受信した第1ブローカ410のメッセージ配信部411は、メッセージm1に関連する重複制御情報を削除する(図11のステップS131、図15のステップC14)。
(24)また、第1ブローカ410のメッセージ配信部411は、メッセージm1の宛先であるデバイス200Aの接続履歴をそれまでに問い合わせていた各エッジサーバ310に対して、監視モードの解除を指示する情報を配信する(ステップC15)。
(25)また、第1ブローカ410のメッセージ配信部411は、エリアN、N−1、N−2の各エッジサーバ310に対して、依頼されたメッセージm1〜m3をそれぞれ配信する(ステップC16)。
(26)そして、エリアN、N−1、N−2の各エッジサーバ310のメッセージ送受信部311は、メッセージm1〜m3のそれぞれを、各エリアの第2ブローカ510を介してデバイス200Aに配信する(図16のステップD11、D12)。
(27)そして、エリアNにおいて、メッセージm1〜m3のデバイス200Aへの配信が成功する。そこで、エリアNのエッジサーバ310は、第2ブローカ510から再配信完了の通知を受ける(ステップD13、D15でYes)。そして、エリアNのエッジサーバ310において再配信依頼部313は、自装置と同様にメッセージm1〜m3の再配信を依頼されていた他のエリアN−1、N−2の各エッジサーバ310に対して、再配信完了を通知する(ステップD16)。
(28)そして、エリアN−1、N−2の各エッジサーバ310において再配信依頼部313は、それぞれのエリアの第2ブローカ510に対して、メッセージm1〜m3の配信のとりやめを通知する(ステップD17でYes、D18)。
(29)また、エリアNにおける第2ブローカ510では、配信状況管理部512は、メッセージm1〜m3の配信が完了したため、これらのメッセージをメッセージ管理テーブルから削除する。また、エリアN−2、N−1における第2ブローカ510では、配信状況管理部512は、メッセージm1〜m3の配信がとりやめになったため、メッセージ管理テーブルから、これらのメッセージを削除する(ステップD14)。
以上で、具体例の説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としての通信システムは、多段に構成されるブローカを介したパブリッシュ/サブスクライブ通信において、移動可能なデバイスに対するメッセージの配信をさらに確実に行うことができる。
その理由について説明する。本実施の形態は、本発明の第1の実施の形態と同様に構成されることに加えて、次の構成を備える。すなわち、エッジサーバの依頼先決定部が、エリアマップ情報を参照することにより、自装置の周辺に位置するエッジサーバを、依頼先の候補として抽出する。そして、依頼先決定部が、依頼先の候補となる他のエッジサーバに対して、該当するデバイスへの接続履歴があるか否かを問い合わせ、問い合わせ結果に基づいて、それらの候補の中から移動先サーバを推定する。そして、依頼先決定部が、移動先サーバの周辺に位置するエッジサーバを新たな依頼先の候補として抽出する。そして、依頼先決定部が、依頼先の候補となる他のエッジサーバに対して、上述した問い合わせを行い、問い合わせ結果に基づいて、それらの候補の中から移動先サーバを推定することを繰り返す。そして、依頼先決定部が、所定条件が満たされた時点で推定されている移動先サーバである移動先マスタサーバと、移動先マスタサーバの周辺のエッジサーバとを、再配信の依頼先として決定するからである。
このように、本実施の形態は、エッジサーバが配信を担当するエリア内に存在したはずのデバイスが移動した場合に、移動したデバイスへの配信が可能な他のエッジサーバを、エリアマップ情報に基づく繰り返し処理により精度よく推定する。その結果、本実施の形態は、管理装置から、デバイスに届くことが保証される送達保証レベルで送信されたメッセージを、移動したデバイスにもより確実に配信することができる。
また、本実施の形態は、第2ブローカにおいて保存するメッセージ量を抑制することができる。
その理由について説明する。本実施の形態では、第2ブローカの配信状況管理部が、配信に失敗したと判断したメッセージの再配信が他のエッジサーバに依頼されると、そのメッセージをメモリから削除するからである。
また、本実施の形態は、第2ブローカの負荷を軽減することができる。
その理由について説明する。本実施の形態では、第2ブローカのグルーピング部が、配信に失敗したメッセージと同一の宛先となるデバイス宛のメッセージを一括して抽出する。そして、配信状況管理部が、抽出されたメッセージの配信を停止するからである。これにより、本実施の形態は、デバイスに対するメッセージの配信がデバイスの移動により失敗する場合、そのデバイスに対する第2ブローカからのメッセージの配信を一括して停止することができる。その結果、第2ブローカの負荷が軽減される。
また、本実施の形態は、第1ブローカを介したエッジサーバ間の通信量を抑制することができる。
その理由について説明する。本実施の形態では、エッジサーバの依頼先決定部が、配信に失敗したメッセージの再配信の依頼先を決定するために、接続履歴の問い合わせ先となる候補を、エリアマップ情報を参照することにより絞り込むからである。これにより、問い合わせ対象となる他のエッジサーバの数を抑制することができる。さらに、第1ブローカの重複制御部が、配信に失敗したメッセージの再配信の依頼先を決定するために、エッジサーバ間で送受信される接続履歴の問い合わせのメッセージを、既に送信済のエッジサーバに対して重複して送信しないよう制御するからである。
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第2の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本実施の形態としての通信システム3の機能ブロック構成を図22に示す。図22において、通信システム3は、本発明の第2の実施の形態としての通知システム2に対して次の点が異なる。すなわち、通信システム3は、エッジサーバ310に替えてエッジサーバ320と、エリアマップ管理装置610に替えてロケーション管理装置620とを備える。なお、ロケーション管理装置620およびエッジサーバ320は、ネットワークを介して通信可能に接続される。
ここで、通信システム3を構成する各装置は、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。また、ロケーション管理装置620は、CPU、メモリ、および、ネットワークインタフェースを含む装置によって構成可能である。ただし、通信システム3を構成する各装置のハードウェア構成は、上述の構成に限定されない。
まず、ロケーション管理装置620について説明する。ロケーション管理装置620は、エッジサーバ320の空間的な位置を表すロケーション情報を記憶している。例えば、ロケーション情報の一例を図23に示す。図23では、ロケーション情報は、エッジサーバ320を識別するIDに対して、その位置情報を関連付けた情報である。なお、図23に示すロケーション情報は一例であり、ロケーション情報の内容および形式は限定されない。
また、ロケーション管理装置620は、基準となるエッジサーバ320の識別情報を受信すると、そのエッジサーバ320の位置からの距離に基づき抽出した他のエッジサーバ320の識別情報を返却する。例えば、ロケーション管理装置620は、該当するエッジサーバ320の位置からの距離が短い順に所定個数までの他のエッジサーバ320を抽出してもよい。あるいは、ロケーション管理装置620は、該当するエッジサーバ320の位置からの距離が閾値以内の他のエッジサーバ320を抽出してもよい。なお、ロケーション情報に基づく他のエッジサーバ320の抽出基準は、これらに限らない。
次に、エッジサーバ320の機能ブロックについて説明する。
図22において、エッジサーバ320は、本発明の第2の実施の形態におけるエッジサーバ310に対して、依頼先決定部312に替えて依頼先決定部322を有する点が異なる。
依頼先決定部322は、本発明の第2の実施の形態における依頼先決定部312と略同様に構成される。ただし、依頼先の候補の抽出処理の詳細が異なるよう構成される。
具体的には、依頼先決定部322は、配信に失敗したメッセージの宛先となるデバイス200の接続履歴の問い合わせ先の候補を、ロケーション管理装置620に問い合わせることにより取得する。つまり、依頼先決定部322は、移動先サーバを推定する繰り返し処理において、自装置または移動先サーバの識別情報をロケーション管理装置620に送信する。そして、依頼先決定部322は、ロケーション管理装置620から返却された識別情報が示す他のエッジサーバ320を、移動先の候補とすればよい。
以上のように構成された通信システム3の動作について説明する。
通信システム3の動作は、図11〜図16を参照して説明した通信システム2の動作と略同様である。ただし、図13におけるステップB12およびB24の動作の詳細が異なる。
ステップB12において、依頼先決定部322は、ロケーション管理装置620に対して、移動先サーバの識別情報を送信する。そして、依頼先決定部322は、ロケーション管理装置620から返信された識別情報が示す他のエッジサーバ320を、依頼先の候補として取得する。
また、ステップB24において、依頼先決定部322は、ロケーション管理装置620に対して、移動先マスタサーバの識別情報を送信する。そして、依頼先決定部322は、ロケーション管理装置620から返信された識別情報の示す他のエッジサーバ320を特定する。
以上で、通信システム3の動作の説明を終了する。
次に、本発明の第3の実施の形態の効果について述べる。
本発明の第3の実施の形態の効果は、本発明の第2の実施の形態の効果と略同様である。
ただし、その理由が若干異なる。本発明の第3の実施の形態では、エッジサーバの依頼先決定部が、エッジサーバの空間的な位置を示すロケーション情報に基づいて、配信に失敗したメッセージの再配信の依頼先の候補を決定するからである。
このため、本実施の形態は、デバイスの移動により配信に失敗したメッセージの再配信が可能なエッジサーバを、ロケーション情報に基づいてより精度よく推定し、メッセージの再配信をより確実に実行することができる。
また、本実施の形態は、配信に失敗したメッセージの再配信の依頼先を決定するために他のエッジサーバに対して行う接続履歴の問い合わせ先を、ロケーション情報に基づいて絞り込むため、エッジサーバ間の通信量を抑制することができる。
(第4の実施の形態)
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第2の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本実施の形態としての通信システム4の機能ブロック構成を図24に示す。図24において、通信システム4は、本発明の第2の実施の形態としての通知システム2に対して次の点が異なる。すなわち、通信システム4は、エッジサーバ310に替えてエッジサーバ330と、エリアマップ管理装置610に替えて移動先予測装置630とを備え、さらに、デバイス情報蓄積装置640を備える。なお、移動先予測装置630およびエッジサーバ330は、ネットワークを介して通信可能に接続される。また、移動先予測装置630およびデバイス情報蓄積装置640は、ネットワークを介して通信可能に接続される。
ここで、通信システム4を構成する各装置は、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。また、移動先予測装置630およびデバイス情報蓄積装置640は、それぞれ、CPU、メモリ、および、ネットワークインタフェースを含む装置によって構成可能である。ただし、通信システム4を構成する各装置のハードウェア構成は、上述の構成に限定されない。
まず、デバイス情報蓄積装置640について説明する。デバイス情報蓄積装置640は、通信システム4においてデバイス200から得られる各種の情報を蓄積している。例えば、デバイス200に各種のセンサが搭載されている場合、それらのセンサから取得される情報が、デバイス200の識別情報、センサの識別情報および時刻情報等に関連付けられて、デバイス情報蓄積装置640に蓄積されていく。
例えば、デバイス情報は、生産ラインにおける製品としてのデバイス200に搭載された各種のセンサから得られる温度、湿度、製品の重量等の値であってもよい。また、デバイス情報は、利用者に装着されるウェアラブル機器としてのデバイス200に搭載された各種のセンサから得られる利用者の体温、体内水分量、運動量等の値であってもよい。
次に、移動先予測装置630について説明する。移動先予測装置630は、指定されたデバイス200に関してデバイス情報蓄積装置640に蓄積されたデバイス情報に基づいて、そのデバイス200の移動先での配信を担当するエッジサーバ330を予測する。
例えば、移動先予測装置630は、各エッジサーバ330に関するロケーション情報と、各デバイス200の特徴を表す情報とを記憶しておいてもよい。この場合、移動先予測装置630は、デバイス情報蓄積装置640から得られる該当デバイス200に関するデバイス情報と、そのデバイス200の特徴を表す情報とから、そのデバイス200の移動先の位置を予測してもよい。そして、移動先予測装置630は、予測したデバイス200の位置およびエッジサーバ330のロケーション情報に基づいて、移動先で配信を担当するエッジサーバ330を予測してもよい。
具体例として、例えば、移動先予測装置630は、デバイス200から得られる製品の重量に基づいて、生産ラインにおいてその製品が運ばれるエリアを予測してもよい。また、例えば、移動先予測装置630は、デバイス200としてのウェアラブル機器から得られる体温および体内水分量と、その時点での天候情報とに基づいて、ウェアラブル機器を装着した利用者が自動販売機のエリアに移動することを予測してもよい。その他、移動先予測装置630は、蓄積されるデバイス情報に基づいてデバイス200の移動先を予測する各種の公知の技術を適用してもよい。
次に、エッジサーバ330の機能ブロックについて説明する。
図24において、エッジサーバ330は、本発明の第2の実施の形態におけるエッジサーバ310に対して、依頼先決定部312に替えて依頼先決定部332を有する点が異なる。
依頼先決定部332は、本発明の第2の実施の形態における依頼先決定部312と略同様に構成される。ただし、依頼先の候補の抽出処理の詳細が異なるよう構成される。
具体的には、依頼先決定部332は、配信に失敗したメッセージの宛先となるデバイス200の接続履歴の問い合わせ先の候補を、移動先予測装置630に問い合わせることにより取得する。つまり、依頼先決定部332は、移動先サーバを推定する繰り返し処理において、自装置または移動先サーバの識別情報を移動先予測装置630に送信することにより、返却された識別情報が示す他のエッジサーバ330を、移動先の候補とすればよい。
以上のように構成された通信システム4の動作について説明する。
通信システム4の動作は、図11〜図16を参照して説明した通信システム2の動作と略同様である。ただし、図13におけるステップB12およびB24の動作の詳細が異なる。
ステップB12において、依頼先決定部332は、移動先予測装置630に対して、移動先サーバの識別情報を送信する。そして、依頼先決定部332は、移動先予測装置630から返信された識別情報が示す他のエッジサーバ330を、依頼先の候補として取得する。
また、ステップB24において、依頼先決定部332は、移動先予測装置630に対して、移動先マスタサーバの識別情報を送信する。そして、依頼先決定部332は、移動先予測装置630から返信された識別情報の示す他のエッジサーバ330を特定する。
以上で、通信システム4の動作の説明を終了する。
次に、本発明の第4の実施の形態の効果について述べる。
本発明の第4の実施の形態の効果は、本発明の第2の実施の形態の効果と略同様である。
ただし、その理由が若干異なる。本発明の第4の実施の形態では、エッジサーバの依頼先決定部が、デバイス情報に基づくデバイスの移動先の予測処理結果に基づいて、配信に失敗したメッセージの再配信の依頼先の候補を決定するからである。
このため、本実施の形態は、デバイスの移動により配信に失敗したメッセージの再配信が可能なエッジサーバを、デバイスの移動先の予測処理結果に基づいてより精度よく推定し、メッセージの再配信をより確実に実行することができる。
また、本実施の形態は、配信に失敗したメッセージの再配信の依頼先を決定するために他のエッジサーバに対して行う接続履歴の問い合わせ先を、デバイスの移動先の予測処理結果に基づいて絞り込むため、エッジサーバ間の通信量を抑制できる。
なお、本実施の形態において、通信システムは、デバイス情報蓄積装置を備える代わりに、外部からデバイス情報を取得するよう構成されてもよい。その場合、移動先予測装置は、外部から取得されるデバイス情報に基づいて、デバイスの移動先を予測すればよい。
また、本実施の形態において、移動先予測装置は、デバイス情報に限らず、通信システムにおいて蓄積可能または取得可能なその他の情報に基づいて、その移動先を予測してもよい。その場合、通信システムは、デバイス情報蓄積装置に替えてそれらの情報を蓄積する装置を備えるか、または、外部からそれらの情報を取得すればよい。
また、上述した本発明の第2から第4の実施の形態において、エッジサーバの依頼先決定部が、エリアマップ情報、ロケーション情報、または、移動先予測処理に基づいて、再配信の依頼先の候補となる他のエッジサーバを抽出する例について説明した。これに限らず、依頼先決定部は、その他の情報に基づいて、再配信の依頼先の候補となる他のエッジサーバを抽出してもよい。
また、上述した本発明の第2から第4の実施の形態において、第1ブローカの重複制御部が、図7に一例を示した重複制御情報を用いる例について説明した。ただし、重複制御情報の内容および形式は、限定されない。重複制御情報は、問い合わせのメッセージを同一のエッジサーバに重複して送信することを防止するための情報であればよい。
また、上述した本発明の第2から第4の実施の形態において、第2ブローカが、図8〜図10に一例を示したメッセージ管理テーブル、トピック管理テーブル、および、配信状況テーブルを記憶する例について説明した。ただし、第2ブローカの各機能ブロックがメッセージの配信および配信状況の管理のために記憶される情報の内容および形式は、限定されない。
また、上述した本発明の各実施の形態において、パブリッシュ/サブスクライブ通信が、MQTTに基づいて行われる例について説明した。これに限らず、本発明は、その他のプロトコルに基づきパブリッシュ/サブスクライブ通信を行う通信システムにも適用可能である。
また、上述した本発明の各実施の形態において、管理装置およびエッジサーバの間を、第1ブローカが直接接続する構成について説明した。これに限らず、管理装置および第1ブローカの間、または、第1ブローカおよびエッジサーバの間は、さらに多段のブローカを介して接続されていてもよい。また、エッジサーバおよびデバイスの間を、第2ブローカが直接接続する構成について説明した。これに限らず、エッジサーバおよび第2ブローカの間、または、第2ブローカおよびデバイスの間は、さらに多段のブローカを介して接続されていてもよい。
また、上述した本発明の各実施の形態において、通信システムを構成する各装置の各機能ブロックが、メモリに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、各装置の各機能ブロックは、複数の装置に分散されて実現されてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した各装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておく。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信するメッセージ送受信部と、
前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定する依頼先決定部と、
前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信する再配信依頼部と、
を備えたエッジサーバ。
(付記2)
前記依頼先決定部は、前記依頼先の候補となる他のエッジサーバに対して、前記デバイスへの接続履歴があるか否かを前記第1ブローカを介して問い合わせ、問い合わせ結果に基づいて、前記依頼先のエッジサーバを決定することを特徴とする付記1に記載のエッジサーバ。
(付記3)
前記依頼先決定部は、前記エッジサーバ間の位置関係を表すエリアマップ情報を参照することにより、自装置の周辺に位置するエッジサーバを前記依頼先の候補として抽出し、前記候補に基づいて前記依頼先のエッジサーバを決定することを特徴とする付記1または付記2に記載のエッジサーバ。
(付記4)
前記依頼先決定部は、前記エッジサーバの位置情報を表すロケーション情報を参照することにより、自装置との距離に基づき前記依頼先の候補を抽出し、前記候補に基づいて前記依頼先のエッジサーバを決定することを特徴とする付記1または付記2に記載のエッジサーバ。
(付記5)
前記依頼先決定部は、前記デバイスから取得される情報に基づいて前記デバイスの移動先を予測し、予測した移動先の情報に基づいて前記依頼先の候補を抽出し、前記候補に基づいて前記依頼先のエッジサーバを決定することを特徴とする付記1または付記2に記載のエッジサーバ。
(付記6)
前記依頼先決定部は、前記依頼先の候補の中から、前記デバイスへの配信を前記デバイスの移動先で担当する移動先のエッジサーバを推定し、前記移動先のエッジサーバに基づき新たな依頼先の候補を抽出して該候補の中から次の移動先のエッジサーバを推定することを繰り返し、所定条件が満たされた時点で推定している移動先のエッジサーバに基づいて、前記依頼先のエッジサーバを決定することを特徴とする付記2から付記5のいずれか1つに記載のエッジサーバ。
(付記7)
前記再配信依頼部は、前記第2ブローカにおいて前記配信失敗が検出されたメッセージの宛先となっているデバイス宛のメッセージについて一括して、その再配信を前記依頼先に依頼することを特徴とする付記1から付記6のいずれか1つに記載のエッジサーバ。
(付記8)
付記1から付記7のいずれか1つにおける前記第2ブローカであって、
前記エッジサーバから受信した前記メッセージを前記デバイスに配信するメッセージ配信部と、
前記デバイスに対する前記メッセージの配信失敗を検出して前記エッジサーバに通知する配信状況管理部と、
を備えた第2ブローカ。
(付記9)
前記配信失敗が検出されたメッセージの宛先となっているデバイスに対して配信するメッセージを一括して抽出するグルーピング部をさらに備え、
前記配信状況管理部は、前記グルーピング部によって抽出されたメッセージについてその配信を停止することを特徴とする付記8に記載の第2ブローカ。
(付記10)
前記配信状況管理部は、前記依頼先に再配信が依頼されたメッセージをメモリから削除することを特徴とする付記8または付記9に記載の第2ブローカ。
(付記11)
付記1から付記7のいずれか1つにおける前記第1ブローカであって、
前記エッジサーバから前記他のエッジサーバに対して前記再配信を依頼された前記メッセージを、前記他のエッジサーバに配信するメッセージ配信部を備えた第1ブローカ。
(付記12)
付記2に記載のエッジサーバからの前記問い合わせを、同一の他のエッジサーバに対して重複して送信しないよう制御する重複制御部をさらに備えたことを特徴とする付記11に記載の第1ブローカ。
(付記13)
付記1から付記7のいずれか1つに記載のエッジサーバと、
付記8から付記10のいずれか1つに記載の第2ブローカと、
付記11または付記12に記載の第1ブローカと、
前記管理装置と、
前記デバイスと、
を含む通信システム。
(付記14)
自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、
受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信し、
前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定し、
前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信する方法。
(付記15)
自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信するステップと、
前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定するステップと、
前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信するステップと、
をコンピュータ装置に実行させるプログラム。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2016年2月18日に出願された日本出願特願2016−028551を基礎とする優先権を主張し、その開示の全てをここに取り込む。