JP6525102B2 - 通信システム、エッジサーバ、方法およびプログラム - Google Patents

通信システム、エッジサーバ、方法およびプログラム Download PDF

Info

Publication number
JP6525102B2
JP6525102B2 JP2018500073A JP2018500073A JP6525102B2 JP 6525102 B2 JP6525102 B2 JP 6525102B2 JP 2018500073 A JP2018500073 A JP 2018500073A JP 2018500073 A JP2018500073 A JP 2018500073A JP 6525102 B2 JP6525102 B2 JP 6525102B2
Authority
JP
Japan
Prior art keywords
message
edge server
broker
request
destination
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.)
Active
Application number
JP2018500073A
Other languages
English (en)
Other versions
JPWO2017141807A1 (ja
Inventor
巧 藤原
巧 藤原
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2017141807A1 publication Critical patent/JPWO2017141807A1/ja
Application granted granted Critical
Publication of JP6525102B2 publication Critical patent/JP6525102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • 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/52Network services specially adapted for the location of the user terminal
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Description

本発明は、パブリッシュ/サブスクライブモデルに基づく通信技術に関する。
装置間でメッセージを送受信する際に用いられるパブリッシュ/サブスクライブモデルが知られている。パブリッシュ/サブスクライブモデルでは、サブスクライバは、受信したいトピックをブローカに登録しておく。パブリッシャは、メッセージにトピックを表す情報を含めてブローカに送信する。そして、ブローカは、受信したメッセージに含まれる情報が表すトピックを登録しているサブスクライバに、メッセージを配信する。以降、パブリッシャがブローカを介してメッセージを送信することを、パブリッシュするとも記載する。また、サブスクライバがブローカからメッセージを受信することを、サブスクライブするとも記載する。
例えば、パブリッシュ/サブスクライブモデルを用いた技術の一例が、特許文献1に記載されている。特許文献1に記載された関連技術では、不揮発性ストレージの容量が少ないデバイス上で動作するアプリケーションが、出力するログデータのサイズが閾値に達する度に、そのログデータをブローカにパブリッシュすることを繰り返す。そして、ブローカは、そのログデータに関連するトピックを登録しているサブスクライバに、ログデータを転送する。サブスクライバは、該当するログデータをサブスクライブして分析する。
このようなパブリッシュ/サブスクライブモデルは、IoT(Internet of Things)の分野で採用されることが多い。IoTでは、小型化かつ軽量化されたデバイスやセンサによって管理装置に向けてデータが送信されるため、低電力で軽量な通信を行う必要がある。低電力で軽量な通信には、パブリッシュ/サブスクライブモデルが適しているからである。そのようなパブリッシュ/サブスクライブモデルに基づくプロトコルには、送受信するメッセージのQoS(Quality of Service)として送達保証レベルが設定可能なものがある。一例としては、MQTT(Message Queue Telemetry Transport)が良く知られている。MQTTでは、送達保証レベルとして、0(最大1回)、1(最低1回)、2(正確に1回)の3段階が用意されている。
ところで、IoTを大規模なシステムで活用する場合、多数のデバイスに搭載されるセンサが大量に存在する状況になる。これらのデバイスに搭載されるセンサは、クラウド上の管理装置により一元的に管理される。このとき、管理装置およびデバイス間の通信に、パブリッシュ/サブスクライブモデルが採用されるとする。この場合、クラウド上に配置されるブローカだけでは、多数のデバイスとの間でのメッセージの処理性能に限界がある。このため、クラウド上の管理装置とデバイスとの間を中継するエッジサーバおよびブローカが中間層に配置される。クラウド層のブローカは、管理装置およびエッジサーバ間の通信を制御し、中間層のブローカは、エッジサーバおよびデバイス間の通信を制御する。つまり、IoTにおけるパブリッシュ/サブスクライブモデルでは、ブローカが多段に接続される構成となる。
このようにブローカを多段に構成する技術の一例が、特許文献2に記載されている。特許文献2に記載された関連技術では、サービスを提供するプロバイダと、サービスをリクエストするリクエスタとの間で、ブローカおよびプロバイダが多段に構成されツリー構造をなす。リクエスタは、プロバイダからサービスの提供を受けるために、ブローカに対してリクエストメッセージを送信する。ブローカは、受信したリクエストメッセージを、ツリー構造において下位に接続される他のブローカまたはプロバイダに転送する。また、プロバイダは、受信したリクエストメッセージに応じた処理において他のサービスを呼び出す必要がある場合、リクエストメッセージを、下位に接続される他のブローカに送信する。
特表2009−519509号公報 特開2006−72785号公報
ここで、上述したようなIoTでは、デバイスが移動するケースも多い。したがって、上述のようなブローカが多段に構成されるシステムでは、デバイスが通信可能な中間層のブローカは、そのデバイスの移動により変わり得る。しかしながら、上述した関連技術は、デバイスが移動する場合に対応できないという課題がある。
この課題について詳しく説明する。パブリッシュ/サブスクライブモデルに基づく通信システムにおいてブローカが多段に構成される場合、管理装置からデバイスへの送達保証レベルが保証されないという問題が生じる。具体的には、管理装置およびエッジサーバ間、ならびに、エッジサーバおよびデバイス間でそれぞれ行われるパブリッシュ/サブスクライブモデルに基づく通信において、送達保証レベルが設定されるとする。この場合、それぞれの通信は、設定された送達保証レベルに基づいて処理がなされても、管理装置およびデバイス間では、それぞれの通信で個々に設定された送達保証レベルと同レベルが保証されない。
この問題点をさらに詳しく説明するために、具体例を用いて説明する。ここで、クラウド層の管理装置は、中間層のエッジサーバを経由し、デバイスを管理しているとする。中間層のエッジサーバは、デバイスが存在し得るエリア毎に設置されている。また、管理装置およびエッジサーバ間では、クラウド層のブローカを介してパブリッシュ/サブスクライブモデルに基づく通信が行われる。また、エッジサーバおよびデバイス間では、そのエッジサーバが存在するエリアに設けられた中間層のブローカを介して、パブリッシュ/サブスクライブモデルに基づく通信が行われる。
このとき、管理装置が、エリアAにあるデバイスAに対して管理操作を行うためにメッセージm1を送信することを考える。管理装置は、クラウド層のブローカに対して送達保証レベル1(最低1回送信)で、デバイスA宛てのトピックを指定したメッセージm1をパブリッシュする。次に、中間層にあるエリアAのエッジサーバは、自エリアに存在するデバイスA宛てのトピックのメッセージm1を、クラウド層のブローカからサブスクライブする。このとき、管理装置およびエリアAのエッジサーバ間では、送達保証レベル1が保証される。
次に、エリアAのエッジサーバは、エリアAの中間層のブローカに対して、送達保証レベル1でデバイスA宛てのトピックを指定したメッセージm1をパブリッシュする。しかしながら、この時点で、デバイスAがエリアAからエリアBに移動していたとする。この場合、デバイスAは、エリアBの中間層のブローカからサブスクライブを行うことになる。
そのため、デバイスAがエリアBからエリアAに戻らない限り、エリアAの中間層のブローカからのサブスクライブは行われず、メッセージm1は、デバイスAに配信されないことになる。
このように管理装置、エッジサーバ、およびデバイスがそれぞれ正常に動作しており、それぞれの間の通信で送達保証レベルが1に設定されているにもかかわらず、メッセージが正しく配信されない「メッセージがロストする」という状態が発生する。
また、この場合、エリアAの中間層のブローカは、サブスクライブによってデバイスAへの配信が完了するまでの間、メッセージm1を保存することになる。ここで、デバイスAによるサブスクライブが行われない場合であっても、デバイスAの電源が切れている場合等のように、移動以外の理由も考えられる。したがって、ブローカは、配信されないメッセージm1を、配信が完了するまでまたは一定期間以上となるまで保存する必要があり、中間層の保存領域を圧迫するという問題も発生する。
また、上述のケースで、デバイスAが再びエリアAに戻ってきたとする。この場合、当初の管理装置からのメッセージm1は、デバイスAに対して配信される。しかしながら、他のエリアにおいて、デバイスAが管理装置からの最新のメッセージm2を受信している可能性がある。この場合、エリアAに戻ることにより配信される過去のメッセージm1により、最新の設定が過去の設定で上書きされ、動作不正を起こす問題が発生し得る。
ここで、特許文献1に記載された関連技術において、デバイスとログデータを分析する装置との間で、多段に構成されるブローカを用いてパブリッシュ/サブスクライブモデルに基づく通信が行われるとする。また、デバイスが移動する可能性があるとする。しかしながら、この関連技術は、移動可能なデバイスから分析装置に対してログデータを送信するものであり、移動可能なデバイスに対してメッセージを配信するケースでの上述の課題に対応できない。
また、特許文献2に記載された関連技術では、ブローカの下位に接続されるプロバイダまたは他のブローカは、固定的に接続されていることが前提である。したがって、この関連技術は、移動可能なデバイスに対してメッセージを配信するケースでの上述の課題に対応できない。
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、多段に構成されるブローカを介してパブリッシュ/サブスクライブモデルに基づく通信を行うシステムにおいて、移動可能なデバイスに対するメッセージの配信をより確実に行う技術を提供することを目的とする。
上記目的を達成するために、本発明のエッジサーバは、自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信するメッセージ送受信手段と、前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定する依頼先決定手段と、前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信する再配信依頼手段と、を備える。
また、本発明の第2ブローカは、上述の前記第2ブローカであって、前記エッジサーバから受信した前記メッセージを前記デバイスに配信するメッセージ配信手段と、前記デバイスに対する前記メッセージの配信失敗を検出して前記エッジサーバに通知する配信状況管理手段と、を備える。
また、本発明の第1ブローカは、上述の前記第1ブローカであって、前記エッジサーバから前記他のエッジサーバに対して前記再配信を依頼された前記メッセージを、前記他のエッジサーバに配信するメッセージ配信手段を備える。
また、本発明の通信システムは、上述のエッジサーバと、上述の第2ブローカと、上述の第1ブローカと、前記管理装置と、前記デバイスと、を含む。
また、本発明の方法は、自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信し、前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定し、前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信する。
また、本発明の記憶媒体は、自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信するステップと、前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定するステップと、前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信するステップと、をコンピュータ装置に実行させるプログラムを記憶している。
本発明は、多段に構成されるブローカを介してパブリッシュ/サブスクライブモデルに基づく通信を行うシステムにおいて、移動可能なデバイスに対するメッセージの配信をより確実に行う技術を提供することができる。
本発明の第1の実施の形態としての通信システムの構成を示すブロック図である。 本発明の第1の実施の形態としての通信システムのハードウェア構成の一例を示す図である。 本発明の第1の実施の形態としての通信システムの機能ブロック構成を示す図である。 本発明の第1の実施の形態としての通信システムの動作を説明するフローチャートである。 本発明の第2の実施の形態としての通信システムの機能ブロック構成を示す図である。 本発明の第2の実施の形態におけるエリアマップ情報の一例を示す図である。 本発明の第2の実施の形態における重複制御情報の一例を示す図である。 本発明の第2の実施の形態におけるメッセージ管理テーブルの一例を示す図である。 本発明の第2の実施の形態におけるトピック管理テーブルの一例を示す図である。 本発明の第2の実施の形態における配信状況テーブルの一例を示す図である。 本発明の第2の実施の形態としての通信システムの動作の概略を説明するフローチャートである。 本発明の第2の実施の形態において第2ブローカが配信失敗を検出した際の動作を説明するフローチャートである。 本発明の第2の実施の形態においてエッジサーバが再配信の依頼先を決定する動作を説明するフローチャートである。 本発明の第2の実施の形態においてエッジサーバの監視モードにおける動作を説明するフローチャートである。 本発明の第2の実施の形態においてエッジサーバから管理装置に再配信を依頼する動作を説明するフローチャートである。 本発明の第2の実施の形態において再配信を依頼されたエッジサーバおよび第2ブローカの動作を説明するフローチャートである。 本発明の第2の実施の形態における具体例の動作を説明する模式図である。 図17に続く具体例の動作を説明する模式図である。 図18に続く具体例の動作を説明する模式図である。 図19に続く具体例の動作を説明する模式図である。 図20に続く具体例の動作を説明する模式図である。 本発明の第3の実施の形態としての通信システムの機能ブロック構成を示す図である。 本発明の第3の実施の形態におけるロケーション情報の一例を示す図である。 本発明の第4の実施の形態としての通信システムの機能ブロック構成を示す図である。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第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を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、例えば、工場における生産管理システムに適用可能である。その場合、本発明のデバイスは、生産ライン上で移動するコンテナに搭載されてもよい。また、本発明の管理装置は、デバイス上のセンサから得られる生産ラインの稼働率や環境、成果物の状態を表す情報に基づいて生産内容を制御してもよい。このような生産管理システムにおいて、本発明は、管理装置からの各種のメッセージを、コンテナに搭載したデバイスに確実に配信することができる。
また、本発明は、例えば、農作物管理システムに適用可能である。その場合、本発明のデバイスは、収穫物の運搬に用いられる籠に搭載されてもよい。または、本発明のデバイスは、収穫物そのものにタグとして付けられてもよい。また、本発明のデバイスは、農場の上空を移動するドローンに搭載されてもよい。また、本発明の管理装置は、デバイス上のセンサから得られる農作物の状態や農場の状態に基づいて、農作物を管理してもよい。このような農作物管理システムにおいて、本発明は、管理装置からの各種のメッセージを、籠や農作物に付帯されたデバイスまたはドローンに搭載されたデバイスに、確実に配信することができる。
また、本発明は、例えば、アミューズメントパークにおけるサービス提供システムに適用可能である。その場合、本発明のデバイスは、利用者に携帯されるウェアラブルのチケットや携帯機器として適用されてもよい。また、本発明の管理装置は、利用者に対して、デバイスを用いてサービスに関する情報を提供してもよい。このようなサービス提供システムにおいて、本発明は、移動する利用者に対して、デバイスから得られる情報に基づいて、お勧め情報等のメッセージを確実に配信することができる。
また、本発明は、例えば、スポーツジムにおけるヘルスケアシステムに適用可能である。その場合、本発明のデバイスは、会員によって身に着けられたセンサ機器に適用されてもよい。また、本発明の管理装置は、利用者に対して、デバイスを用いてヘルスケアに関する情報を提供してもよい。このようなヘルスケアシステムにおいて、本発明は、移動する利用者に対して、デバイスから得られる会員の身体情報、利用メニュー、運動量、健康状態(心拍数、体温、水分量)などに基づいて、お勧めのメニューや健康管理情報を、確実に配信することができる。
なお、本発明は、上述した産業上の利用可能性に限らず、管理装置から移動可能なデバイスに対して、より確実にメッセージを配信することが要求される各種の通信システムに適用可能である。
1、2、3、4 通信システム
100 管理装置
200、200A デバイス
300、310、320、330 エッジサーバ
301、311 メッセージ送受信部
302、312、322、332 依頼先決定部
303、313 再配信依頼部
400、410 第1ブローカ
401、411 メッセージ配信部
412 重複制御部
500、510 第2ブローカ
501、511 メッセージ配信部
502、512 配信状況管理部
513 グルーピング部
610 エリアマップ管理装置
620 ロケーション管理装置
630 移動先予測装置
640 デバイス情報蓄積装置
1001、2001、3001、4001、5001 CPU
1002、2002、3002、4002、5002 メモリ
1005、2005、3005、4005、5005 ネットワークインタフェース

Claims (10)

  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項に記載のエッジサーバと
    記管理装置と、
    前記デバイスと、
    を含む通信システム。
  9. 自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、
    受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信し、
    前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定し、
    前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信する方法。
  10. 自装置を含む複数のエッジサーバおよび管理装置の間をパブリッシュ/サブスクライブ通信により接続する第1ブローカから、前記管理装置によって送信される自装置が配信を担当中のデバイス宛のメッセージ、または、他のエッジサーバによって自装置に再配信を依頼されたデバイス宛のメッセージを受信し、受信したメッセージを前記デバイスに配信するため、自装置および前記デバイスの間をパブリッシュ/サブスクライブ通信により接続する第2ブローカに対して送信するステップと、
    前記第2ブローカから、前記デバイスへの前記メッセージの配信失敗を通知されると、前記デバイスへの前記メッセージの再配信の依頼先となる他のエッジサーバを決定するステップと、
    前記依頼先となる他のエッジサーバに対して前記デバイスへの前記メッセージの再配信を依頼するため、前記メッセージを前記第1ブローカに送信するステップと、
    をコンピュータ装置に実行させるプログラ
JP2018500073A 2016-02-18 2017-02-09 通信システム、エッジサーバ、方法およびプログラム Active JP6525102B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016028551 2016-02-18
JP2016028551 2016-02-18
PCT/JP2017/004707 WO2017141807A1 (ja) 2016-02-18 2017-02-09 通信システム、エッジサーバ、第1ブローカ、第2ブローカ、方法および記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2017141807A1 JPWO2017141807A1 (ja) 2018-11-22
JP6525102B2 true JP6525102B2 (ja) 2019-06-05

Family

ID=59625994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018500073A Active JP6525102B2 (ja) 2016-02-18 2017-02-09 通信システム、エッジサーバ、方法およびプログラム

Country Status (4)

Country Link
US (1) US20190052717A1 (ja)
JP (1) JP6525102B2 (ja)
CN (1) CN108701096B (ja)
WO (1) WO2017141807A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11503098B2 (en) * 2019-12-26 2022-11-15 Akamai Technologies, Inc. Embedding MQTT messages in media streams
CN113992741B (zh) * 2020-07-10 2023-06-20 华为技术有限公司 一种发布数据索引方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
CN100458767C (zh) * 2002-03-28 2009-02-04 普里凯许公司 用于在公共预订网络中可靠并且高效地进行基于内容的路由、查询以及响应的方法和设备
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US7793140B2 (en) * 2007-10-15 2010-09-07 International Business Machines Corporation Method and system for handling failover in a distributed environment that uses session affinity
US9537747B2 (en) * 2010-06-11 2017-01-03 International Business Machines Corporation Publish/subscribe overlay network control system
CN102377686B (zh) * 2010-08-10 2015-07-01 阿里巴巴集团控股有限公司 一种消息订阅系统、消息订阅方法及装置
CN102984174B (zh) * 2012-12-21 2016-04-06 北京邮电大学 一种发布订阅系统中可靠性保障方法及系统
JP6311722B2 (ja) * 2013-12-16 2018-04-18 日本電気株式会社 サーバ及びその通信方法
JP6196564B2 (ja) * 2014-02-20 2017-09-13 Kddi株式会社 中継装置及びその制御方法、プログラム
CN103873465B (zh) * 2014-03-04 2016-12-07 上海交通大学 一种适用于移动场景的发布订阅系统的缓存方法
US10042722B1 (en) * 2015-06-23 2018-08-07 Juniper Networks, Inc. Service-chain fault tolerance in service virtualized environments
CN105338086B (zh) * 2015-11-04 2019-06-25 浪潮软件股份有限公司 一种分布式的消息转发方法

Also Published As

Publication number Publication date
WO2017141807A1 (ja) 2017-08-24
CN108701096B (zh) 2021-06-08
CN108701096A (zh) 2018-10-23
JPWO2017141807A1 (ja) 2018-11-22
US20190052717A1 (en) 2019-02-14

Similar Documents

Publication Publication Date Title
US11240332B2 (en) Subscription based event notifications
CN110365748B (zh) 业务数据的处理方法和装置、存储介质及电子装置
US20140229504A1 (en) System and method for managing database in data distribution service
EP3861680A1 (en) Methods and apparatus for analytics function discovery
CN105101456A (zh) 一种用于物联网设备触发的方法、设备与系统
JP6525102B2 (ja) 通信システム、エッジサーバ、方法およびプログラム
US10684901B2 (en) Data store device and data management method
US20220046090A1 (en) System and method for migrating an agent server to an agent client device
US20180167279A1 (en) Policy based routing respecting network conditions
JP2015232820A (ja) サーバ装置、情報共有システム、情報共有方法及びプログラム
US11283876B2 (en) Systems and methods for end-to-end request-response flow routing for geographically distributed client devices
CN114418319A (zh) 一种联动处理方法、装置、设备和存储介质
US11463302B2 (en) Information communicating device, information communicating method, information communicating system, and storage medium
CN112653717A (zh) 一种多云协作分布式系统和应用分发的方法
JP7000934B2 (ja) データ収集システム、データ収集方法、メッセージ配信制御装置、及び、メッセージ配信制御方法
JP2019101965A (ja) 情報配信システム、情報配信方法及びサーバ装置
KR101719426B1 (ko) 지리적 메시지 분배 장치 및 방법
JP2012146113A (ja) 情報通知ノード、情報配信システム、情報通知方法、及び、プログラム
CN115053507A (zh) 物联网通信方法及装置
KR20160052150A (ko) 로컬 네트워크에서의 업데이트 장치 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190422

R150 Certificate of patent or registration of utility model

Ref document number: 6525102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150