JP6101622B2 - 情報配信システム及び情報配信方法 - Google Patents

情報配信システム及び情報配信方法 Download PDF

Info

Publication number
JP6101622B2
JP6101622B2 JP2013256493A JP2013256493A JP6101622B2 JP 6101622 B2 JP6101622 B2 JP 6101622B2 JP 2013256493 A JP2013256493 A JP 2013256493A JP 2013256493 A JP2013256493 A JP 2013256493A JP 6101622 B2 JP6101622 B2 JP 6101622B2
Authority
JP
Japan
Prior art keywords
publisher
node
subscriber
key
state
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
JP2013256493A
Other languages
English (en)
Other versions
JP2015115784A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013256493A priority Critical patent/JP6101622B2/ja
Publication of JP2015115784A publication Critical patent/JP2015115784A/ja
Application granted granted Critical
Publication of JP6101622B2 publication Critical patent/JP6101622B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

この発明は、多数の機器が接続されたネットワークにおいて、パブリッシャ(publisher)が送信したメッセージをサブスクライバ(subscriber)へ届けるサービスを提供する情報配信システム及びこのシステムで用いられる情報配信方法に関する。
多数の機器が接続されたネットワークにおいて、各機器がトピックと呼ばれる論理的なチャネルを指定することで非同期的に通信を行なう形態は「トピックベースpub/sub」と呼ばれる。トピックベースpub/subを構成する機器群は、パブリッシャ及びサブスクライバという2種類の役割のいずれか(または両方)を担う。トピックベースpub/sub とは、パブリッシャがトピックを指定してメッセージを送信すると、同じトピックを指定して事前に受信登録しているサブスクライバに届く仕組みである。
トピックベースpub/subにおいては、パブリッシャが送信したメッセージに付与されているトピックと、サブスクライバによって受信登録されているトピックとのマッチングを行い、メッセージを適切に配送する仕組みが必要となる。一般的には、パブリッシャやサブスクライバとなる機器群の他に単一のサーバを用意し、サーバが上記の処理を行う。しかしながら、サーバに負荷が集中し、スケーラビリティに欠けるという問題がある。
そのため、近年ではサーバを用いずに、パブリッシャやサブスクライバとなる機器群の協調動作によってトピックのマッチングとメッセージの配送を実現する分散トピックベースpub/subが注目されている。分散トピックベースpub/subでは、各機器が他の機器との間に論理的なリンクを張ってオーバレイネットワークを形成する。送信されたメッセージは、オーバレイネットワーク上のノード(機器)間で転送を繰り返してサブスクライバであるノードへと届けられる。
分散トピックベースpub/subでは、系全体の情報(トピックが何種類存在し、それぞれのサブスクライバは誰なのか、等)を持つサーバを置く必要がなく、各ノードが系全体の情報の一部のみを少しずつ分担して保持する。そのため、スケーラビリティに優れる。
分散トピックベースpub/subを実現するため、従来は分散ハッシュテーブル(DHT)を用いたScribeという手法が使われていた。
DHTの中核となる技術は「あるノードがキーを指定して探索を行うと、そのキーのハッシュ値を担当するノードが一意に定まり、クエリが届く」という仕組み(key-based routing)である。すなわち、DHTにおいて複数のノードから同一のキーで探索を実行すると、どのノードのクエリも同一のノードへと辿り着く。そのノードを頂点として、各ノードからの探索経路を逆向きに辿ると、木構造と見做すことができる。
このことから、サブスクライバは、トピック名をキーとしてDHT上で探索を行い、探索経路上の各ノードで探索クエリの転送元を子ノード、転送先を親ノードとして記録することで、サブスクライバを葉ノードとする木構造が完成する。
パブリッシャも、トピック名をキーとして探索することで、上記木構造の根ノードを発見することができる。パブリッシャは、この根ノードのIPアドレスをキャッシュしておく。パブリッシャがメッセージを送信する際は、当該根ノードへメッセージを送信する。以降各ノードが子ノードへとメッセージを転送することで、全てのサブスクライバへメッセージが届く。
http://research.microsoft.com/en-us/um/people/antr/PAST/pastry.pdf http://research.microsoft.com/en-us/um/people/antr/PAST/scribe.pdf http://oceanstore.cs.berkeley.edu/publications/papers/pdf/iptps03-api.pdf
しかしながら、従来の技術には、以下に示す2つの課題が存在する。
1つ目は、配送経路長の長さである。DHTにおける探索経路の長さ(クエリが転送される回数)は、一般的に全ノード数nに対しO(logn)であるから、従来技術による分散トピックベースpub/subにおけるメッセージの配送経路長もO(logn)となる。トピックに参加しているノード数に関係なくこの配送経路長が必要となるため、例えばサブスクライバが1ノードのみのトピックであっても何回もの転送を経る必要がある。そのため、ネットワーク資源の消費及びメッセージ到達遅延の観点で望ましくない。
2つ目は、各ノードが無関係なトピックの中継を担わされる点である。トピック毎の送信頻度に差がある場合、送信頻度の高いトピックの木構造に組み込まれたノードは、自身が送信頻度の低いトピックにしか参加していなくても、高頻度にメッセージの中継を担う必要がある。例えば、「1日1回の温度情報を得るために映像ストリームの転送をし続ける」といった状況が生じ得ることになり、これは負荷配分の公平性の観点から望ましくない。
本発明は、上記事情に着目してなされたもので、その目的は、配送経路長を抑えることが可能であり、かつ、各ノードが無関係なトピックに関する情報の中継を担うことが不要な情報配信システム及びこのシステムで用いられる情報配信方法を提供することにある。
本発明は、上記目的を達成するために、以下のような手段を講じている。
本発明の第1の態様は、複数の通信機器がネットワークに接続されてなる情報配信システムにおいて、前記通信機器に含まれるノードは、トピックを識別可能なキーを生成するキー生成部と、前記キーと、他のノードから通知される前記他のノードについてのキーとを参照し、Multi-key Skip Graphにおける経路表を構築するMKSG経路表維持管理部と、前記経路表に従い、メッセージを送信するパブリッシュ転送部とを備える。
第1の態様によれば、情報配信システムは、転送に係る通信機器数を減らすことが可能となると共に、トピック毎の配送ツリーをトピックへの参加ノードのみで構築することが可能となる。
また、第2の態様では、前記キー生成部は、前記トピックを識別可能な名称に、サブスクライバ及びパブリッシャを含むノード種別を識別可能な名称を付して前記キーを生成し、前記MKSG経路表維持管理部は、前記生成したキーを参照し、前記経路表において、前記サブスクライバ同士が前記トピック毎に隣接するサブスクライバゾーンと、前記パブリッシャ同士が前記トピック毎に隣接するパブリッシャゾーンとを形成する。そして、前記ノードは、前記経路表に基づき、自ノードが、前記サブスクライバゾーンと境界を接するパブリッシャであるランデブーポイントに該当するか否かを判定するランデブーポイント判定部と、自ノードが前記ランデブーポイントである場合、前記経路表に基づき、対象となるキーが割り当てられたサブスクライバの存在/不在を検出するサブスクライバ存在/不在検出部とを備える。
第2の態様によれば、情報配信システムは、各ノードが局所的な情報のみを保持する状況下において、分散pub/subが備えるべきスケーラビリティを損なわずに、トピック毎にサブスクライバの存在/不在を検出することが可能となる。
また、第3の態様では、前記ノードは、前記サブスクライバが不在の状態において、前記サブスクライバ存在/不在検出部により前記サブスクライバの存在が新たに検出される場合、パブリッシュ開始信号を前記パブリッシュゾーンへ発信し、前記サブスクライバが存在する状態において、前記サブスクライバ存在/不在検出部により前記サブスクライバの不在が新たに検出される場合、パブリッシュ停止信号を前記パブリッシュゾーンへ発信するパブリッシュ開始/停止信号転送部を備える。
第3の態様によれば、情報配信システムは、サブスクライバの不在時に、メッセージの配信を停止させることが可能となる。
また、第4の態様では、前記ノードは、パブリッシャとして新たにメッセージの配信に参加する際、自ノードの状態を、前記Multi-key Skip Graphにおいて隣接するパブリッシャの状態に従って決定するパブリッシャ初期状態判定部を備える。
第4の態様によれば、新たにメッセージ配信に参加するパブリッシャは、参加直後からメッセージの配信開始/停止に対応することが可能となる。
また、第5の態様では、前記ノードは、他のパブリッシャから配信されるメッセージを受信した際に、自ノードが前記ランデブーポイントであり、かつ、メッセージの配信を停止する状態にある場合、不整合が発生したと判断する不整合検出部と、前記不整合が検出されると、配信を停止させる旨の不整合是正信号を前記他のパブリッシャへ送信する不整合是正信号転送部とを備える。
第5の態様によれば、情報配信システムは、サブスクライバが不在にも関わらず、メッセージを配信するパブリッシャが存在する場合、このパブリッシャにメッセージの配信を停止させることが可能となる。
また、第6の態様では、前記ノードは、自ノードがメッセージの配信を停止する状態にある場合、前記Multi-key Skip Graphにおいて隣接するパブリッシャに対して動作の状態を問い合わせるパブリッシュ状態確認部と、自ノードの状態と、前記隣接するパブリッシャの状態とに齟齬がある場合、不整合が発生したと判断する不整合検出部と、自ノードが前記ランデブーポイントでない場合、第1の不整合是正信号を前記ランデブーポイントへ送信し、自ノードが前記ランデブーポイントである場合、他のパブリッシャから送信される第1の不整合是正信号に応じ、前記サブスクライバ存在/不在検出部により前記サブスクライバの存在を確認した後、メッセージの配信を開始させる旨の第2の不整合是正信号を前記パブリッシャゾーンへ送信する不整合是正信号転送部とを備える。
第6の態様によれば、情報配信システムは、サブスクライバが存在するにも関わらず、配信を停止しているパブリッシャが存在する場合、このパブリッシャにメッセージの配信を開始させることが可能となる。
すなわちこの発明によれば、配送経路長を抑えることができ、かつ、各ノードが無関係なトピックに関する情報の中継を担うことが不要な情報配信システム及び情報配信方法を提供することができる。
第1の実施形態に係る情報配信システムの構成を示す図である。 図1に示すパブリッシャの機能構成を示すブロック図である。 第1の実施形態に係るMulti-key Skip Graphを示す図である。 図3に示すMulti-key Skip Graphにおける経路表を示す図である。 第2の実施形態に係るパブリッシャの機能構成を示すブロック図である。 トピック名をキーとして用いた際のリストを示す図である。 トピック名にノード種別を識別可能な接尾辞を付したキーを利用した際のリストを示す図である。 図5に示すMKSG経路表維持管理部により構築されるMulti-key Skip Graphを示す図である。 図5に示すMKSG経路表維持管理部により構築されるMulti-key Skip Graphにおけるランデブーポイントを示す図である。 図5に示すパブリッシュ開始/停止信号転送部がパブリッシュ停止信号を送信することで、パブリッシャに配信を停止させる際の図である。 図5に示すパブリッシュ開始/停止信号転送部67がパブリッシュ開始信号を送信することで、パブリッシャに配信を開始させる際の図である。 メッセージ配信に、新たなパブリッシャが参加することを示す図である。 サブスクライバの不在時にメッセージが送信される不整合を示す図である。 図13に示す不整合に対する対応を示す図である。 サブスクライバの存在時にメッセージの送信が停止されてしまう不整合を示す図である。 図15に示す不整合に対する対応を示す図である。 ノードがメッセージ配信に参加する際の動作を示すフローチャートである。 図17に示すフローチャートにおいて動作する構成要素を示す図である。 サブスクライバの不在を検知し、パブリッシャによるメッセージの送信を停止する際の動作を示すシーケンス図である。 図19に示すシーケンスにおいて動作する構成要素を示す図である。 サブスクライバの存在を検知し、パブリッシャ及びパブリッシャによるメッセージの送信を開始する際の動作を示すシーケンス図である。 図21に示すシーケンスにおいて動作する構成要素を示す図である。 サブスクライバ不在時の不整合を解消する際の動作を示すシーケンス図である。 図23に示すシーケンスにおいて動作する構成要素を示す図である。 サブスクライバ存在時の不整合を解消する際の動作を示すシーケンス図である。 図25に示すシーケンスにおいて動作する構成要素を示す図である。
以下、図面を参照してこの発明に係わる実施形態を説明する。
(第1の実施形態)
図1は、第1の実施形態に係る情報配信システムの構成を示す模式図である。図1において、ネットワークには複数の通信機器が接続される。通信機器は、パブリッシャ及びサブスクライバの役割のいずれか、又は、両方を担う。図1では、トピックTを配信するパブリッシャ10、トピックTの受信登録をしているサブスクライバ20,30、トピックTを配信するパブリッシャ40及びトピックTの受信登録をしているサブスクライバ50を例に記載している。
図2は、図1に示すパブリッシャ10の機能構成を示すブロック図である。なお、パブリッシャ及びサブスクライバは、通信機器が担う役割であるため、パブリッシャ10,40及びサブスクライバ20,30,50の構成はそれぞれ同様なものとする。
図2に示すパブリッシャ10は、キー生成部11、MKSG(Multi-Key Skip Graph)経路表維持管理部12及びパブリッシュ転送部13を具備する。
キー生成部11は、Multi-key Skip Graphを構築するため、自ノードに対して1つ以上のキーを生成する。このとき、キーは、例えば、トピックを識別可能な名称であるとする。Multi-key Skip Graphとは、データ構造であるskip listをP2Pネットワークに適用したオーバレイネットワークであり、このオーバレイネットワークを、通信機器毎に保持する複数のキーと1対1に対応させた仮想的なノードにより構築したものである。以下では、仮想的なノードを仮想ノードと称する。
MKSG経路表維持管理部12は、キー生成部11で生成されたキーと、他のパブリッシャ及び/又はサブスクライバに設けられるMKSG経路表維持管理部12から通知される他のノードについてのキーとを参照し、Multi-key Skip Graphにおける経路表の構築、更新及び保管を担う。
図3は、第1の実施形態に係るMulti-key Skip Graphの例を示す図である。図3では、トピック名をt,t,…として、このトピック名をキーとしてMulti-key Skip Graphを構築している。トピックtに関する配送経路長は、トピックtが割り当てられたパブリッシャ数とサブスクライバ数との合計をm(全通信機器数n>合計値m)とすると、O(logm)となる。これは、全通信機器数をnとしたときの配送経路長O(logn)よりも小さい値となる。
パブリッシュ転送部13は、MKSG経路表維持管理部12で保管される経路表に従い、メッセージを送信する。
図4は、図3に示すMulti-key Skip Graphにおける経路表の例を示す図である。トピックtの配信に携わるノードは、図4に示すように、トピックtがキーとして割り当てられた通信機器のみである。このため、トピックtに関係のない通信機器がトピックtについてのメッセージを転送することがなくなる。
以上のように、第1の実施形態では、キー生成部11は、各トピック名をキーとして生成する。そして、MKSG経路表維持管理部12は、パブリッシャの役割又はサブスクライバの役割が割り当てられたノードに対し、生成されたキーを参照してMulti-key Skip Graphを構築するようにしている。すなわち、情報配信システムは、分散トピックベースpub/subにおいて、Multi-key Skip Graphを構築するようにしている。これにより、情報配信システムは、キーであるトピックを指定して、メッセージのマルチキャストを実現することが可能となる。すなわち、情報配信システムは、転送に係る通信機器数を減らすことが可能となる。また、情報配信システムは、トピック毎の配送ツリーをトピックへの参加ノードのみで構築することが可能となる。
したがって、第1の実施形態に係る情報配信システムによれば、配送経路長を抑えることができ、かつ、無関係なトピックに関する情報の中継を避けることができる。
なお、Multi-key Skip Graphを用いてトピック名をキーとすることで、トピック毎の配送はそのトピックのパブリッシャにも届く。そのため、第1の実施形態に係る情報配信システムでは、根ノードにおいて子孫ノードとの情報交換によりサブスクライバの不在を検出すれば、検出した情報をパブリッシャへ通知することが可能である。
(第2の実施形態)
図5は、第2の実施形態に係るパブリッシャ60の機能構成を示すブロック図である。なお、パブリッシャ及びサブスクライバは、通信機器が担う役割であるため、パブリッシャ及びサブスクライバの構成はそれぞれ同様なものとする。
図5に示すパブリッシャ60は、キー生成部61、MKSG経路表維持管理部62、パブリッシャ初期状態判定部63、パブリッシャ状態管理部64、ランデブーポイント判定部65、サブスクライバ存在/不在検出部66、パブリッシュ開始/停止信号転送部67、パブリッシュ転送部68、パブリッシュ状態確認部69、不整合検出部610及び不整合是正信号転送部611を具備する。
キー生成部61は、Multi-key Skip Graphを構築するため、自ノードに対して1つ以上のキーを生成する。このとき、キー生成部61は、各トピック名にパブリッシャ及びサブスクライバを識別可能な名称を付したものをキーとして用いる。パブリッシャ及びサブスクライバを識別可能な名称とは、例えば、パブリッシャとサブスクライバとで異なる予約語による接尾辞である。例えば、トピックtのサブスクライバの接尾辞には「_1」を付してキーを「t_1」とし、パブリッシャの接尾辞には「_2」を付してキーを「t_2」とする、というようにルールを決めておく。これにより、トピック名をキーとしてノード間の順序を定めることに加え、パブリッシャとサブスクライバとの間にキー(トピック名)よりも低いプライオリティで順序関係を持たせることが可能となる。
MKSG経路表維持管理部62は、キー生成部61で生成されたキーと、他のパブリッシャ及び/又はサブスクライバに設けられるMKSG経路表維持管理部62から通知される他のノードについてのキーとを参照し、Multi-key Skip Graphにおける経路表の構築、更新及び保管を担う。
トピック名をキーとして用いるのみの場合、図6で示すように、トピック名毎にノードがMulti-key Skip Graph上で隣接する。そのため、各トピックをノードのグループとみなすと、グループ単位でソートされている形となり、グループ内の順序は不定である。
一方、トピック名にノード種別(パブリッシャ又はサブスクライバ)を識別可能な接尾辞を付した場合、図7に示すように、グループ単位でソートされた上で、さらにグループ内でノード種別によってソートされている形となる。図7において、各トピックを表す箱の内部で、パブリッシャを示す白丸同士と、サブスクライバを示す黒丸同士とが必ずそれぞれ隣接する。
これにより、Multi-key Skip Graph上でトピック毎にサブスクライバ同士、又は、パブリッシャ同士が隣接する配置となる。以下では、サブスクライバが隣接する領域をサブスクライバゾーンと称し、パブリッシャが隣接する領域をパブリッシャゾーンと称する。図8は、図5に示すMKSG経路表維持管理部62により構築されるMulti-key Skip Graphの例を示す図である。
また、搭載されるノードがトピック毎のメッセージ配信にパブリッシャとして新たに参加する場合、MKSG経路表維持管理部62は、双方向リンクを形成するために通信を行うノードにパブリッシャが存在するかを判断する。通信するノードにパブリッシャが存在する場合、MKSG経路表維持管理部62は、そのパブリッシャが送信を停止しているか否かの情報を、そのパブリッシャに搭載されるMKSG経路表維持管理部62から取得する。隣接するパブリッシャが送信を停止しているか否かの情報を、以下では初期状態情報と称する。MKSG経路表維持管理部62は、取得した初期状態情報をパブリッシャ初期状態判定部63へ出力する。
また、MKSG経路表維持管理部62は、隣接するノードが変化した際、Multi-key Skip Graphについての経路表をランデブーポイント判定部65へ出力する。
なお、パブリッシャであると同時にサブスクライバでもある場合、MKSG経路表維持管理部62は、サブスクライバとしてのキー「t_1」のみをMulti-key Skip Graphに挿入する。その上で、同一トピックのサブスクライバゾーンを対象としてメッセージの配信を実行し続ける。これにより、ノードは、自身を含め当該トピックについて存在するサブスクライバのみへデータを送信することとなる。
このようなノードは、自身が存在する限り、パブリッシャもサブスクライバも存在する状況となる。そのため、下記に示すように、サブスクライバの不在を検知したり、サブスクライバの不在を他のパブリッシャへ通知したり、あるいは他のパブリッシャからサブスクライバの不在を通知されたりといった処理が不要となる。
ランデブーポイント判定部65は、MKSG経路表維持管理部62から供給される経路表に基づき、自ノードがランデブーポイントに該当するか否かを判定する。ここで、ランデブーポイントとは、サブスクライバゾーンと境界を接するパブリッシャノードである。図9は、図5に示すMKSG経路表維持管理部62により構築されるMulti-key Skip Graphにおけるランデブーポイントを示す図である。
サブスクライバ存在/不在検出部66は、自ノードがランデブーポイントである際に、MKSG経路表維持管理部62から供給される経路表に基づき、対象となるキーが割り当てられたサブスクライバが存在するか否かを判定する。サブスクライバ存在/不在検出部66は、判定結果をパブリッシュ開始/停止信号転送部67へ出力する。
各トピックについて、パブリッシャが1つ以上存在する場合、サブスクライバの存在/不在を認知可能なノードが必ず存在することが保証される。この理由は以下である。なお、この説明において、各ノードは左右2つの隣接ノードを持つこととする。また、「隣接」とはMulti-key Skip Graphのレベル0における双方向リスト上の隣接を意味するものとする。
ノードXの左隣接ノードをXとし、右隣接ノードをXとすると、これらノードのキーの大小関係はX≦X≦Xとなる。各ノードが隣接ノードについて持つ情報は、隣接ノードのキー、及び、これらキーと自身のキーとの大小関係である。また、サブスクライバゾーンと、パブリッシャゾーンとの順序関係は予め定義されているため、パブリッシャゾーンの下端又は上端のどちらが同一のキーが割り当てられたサブスクライバゾーンと接するかを各ノードは知っている。本説明では、パブリッシャゾーンの下端がサブスクライバゾーンと接するものとする。
あるキーが割り当てられたパブリッシャが1つ以上存在する場合、パブリッシャゾーンが存在すること、及び、パブリッシャゾーンに唯一つの下端点が存在することは自明である。各ノードは、自ノードが下端点か否かを判断することができる。すなわち、パブリッシャであるノードXは、X<Xであるとき、パブリッシャゾーンの下端点である。
本実施形態において、各トピックのサブスクライバゾーンと、パブリッシャゾーンとは、必ず隣接する。すなわち、相隣接するサブスクライバゾーン及びパブリッシャゾーン以外の場所に、同一のキーが割り当てられたサブスクライバ及びパブリッシャが配置されることは無い。
したがって、サブスクライバが1つ以上存在する場合は、それらの中の1つが必ず、パブリッシャゾーンの下端点であるノードの左隣接ノードである。サブスクライバが存在しない場合は、異なるキーが割り当てられたノードが必ず、パブリッシャゾーンの下端点であるノードの左隣接ノードとなる。以上のことより、パブリッシャが1つ以上存在するとき、パブリッシャゾーンの下端点であるノードが唯一つ存在し、このノードのサブスクライバ存在/不在検出部66は、自身の左隣接ノードが同一のキーが割り当てられたサブスクライバであるか否かを見ることで、サブスクライバの存在/不在を判断する。
なお、複数のパブリッシャが存在する場合には、ランデブーポイント以外のノードでもサブスクライバの出現(不在→存在への変化)を検出が可能となる場合が存在する。具体的には、自ノードがパブリッシュ停止状態であるときに、新たに出現したサブスクライバノードがMulti-key Skip Graphのレベル1以上の双方向リストにおいて偶然隣接する可能性がある。その場合、新たに出現したサブスクライバノードと、レベル1以上の双方向リストにおいて隣接するパブリッシャノードのサブスクライバ存在/不在検出部66は、サブスクライバが存在すると判断することが可能である。
一方、サブスクライバの消滅(存在→不在への変化)をランデブーポイント以外のパブリッシャノードが検出することは不可能である。Multi-key Skip Graphにおいて,レベル1以上の双方向リストでは各ノードがどのノードと隣接する(=リンクを張る)かは乱数に基づいて決まる。そのため、自身の経路表にサブスクライバが存在しないときに「サブスクライバは存在するが自身の経路表には無いこと」と、「サブスクライバは存在せず自身の経路表にも無いこと」とを判断することが不可能となる。なお、レベル0のリストでは全てのノードが連結されているため、ランデブーポイントはレベル0における隣接ノードを見ることでサブスクライバの存在/不在を断言することが可能となっている。
パブリッシュ開始/停止信号転送部67は、サブスクライバ存在/不在検出部66から通知される、対象となるキーが割り当てられたサブスクライバが存在するか否かの判定結果に基づき、パブリッシュ開始信号又はパブリッシュ停止信号を発信する。パブリッシュ開始信号とは、パブリッシャにメッセージの配信を開始させる信号である。パブリッシュ停止信号とは、パブリッシャにメッセージの配信を停止させる信号である。また、パブリッシュ開始/停止信号転送部67は、他のノードから送信されるパブリッシュ開始信号又はパブリッシュ停止信号を受信した場合、受信した信号を他のノードへ転送する。また、パブリッシュ開始/停止信号転送部67は、他のノードから送信されるパブリッシュ開始信号又はパブリッシュ停止信号を受信した場合、受信した信号についての情報をパブリッシャ状態管理部64へ通知する。
例えば、あるトピックについて、ランデブーポイントに搭載されるサブスクライバ存在/不在検出部66により、サブスクライバが全て離脱してサブスクライバ数が0となったことが検出されると、ランデブーポイントのパブリッシュ開始/停止信号転送部67は、パブリッシュゾーンに対してパブリッシュ停止信号をマルチキャストする。マルチキャストは、Multi-key Skip Graphの範囲検索機構をそのまま用いることで実現可能である。図10は、図5に示すパブリッシュ開始/停止信号転送部67がパブリッシュ停止信号を送信することで、パブリッシャに配信を停止させる際の模式図を示す。
また、ランデブーポイントに搭載されるサブスクライバ存在/不在検出部66により、サブスクライバが不在のトピックに新たにサブスクライバが加入されたことが検出されると、ランデブーポイントのパブリッシュ開始/停止信号転送部67は、パブリッシュゾーンに対してパブリッシュ開始信号をマルチキャストする。図11は、図5に示すパブリッシュ開始/停止信号転送部67がパブリッシュ開始信号を送信することで、パブリッシャに配信を開始させる際の模式図を示す。
パブリッシャ初期状態判定部63は、搭載されるノードがトピック毎のメッセージ配信にパブリッシャとして新たに参加する場合、MKSG経路表維持管理部62から出力される初期状態情報に基づき、初期状態としてパブリッシュ開始及びパブリッシュ停止のいずれの状態を選択すべきかを判定する。 パブリッシャ初期状態判定部63は、判定結果をパブリッシャ状態管理部64へ通知する。
図12は、あるトピックについてのメッセージ配信に、新たなパブリッシャが参加する場合の模式図を示す。パブリッシャは、参加直後からメッセージの配信を行なうか否かを判断する必要がある。参加するトピックメッセージ配信に既にパブリッシャが存在する場合、新規パブリッシャは、Multi-key Skip Graphへのノード挿入処理の過程で少なくとも1つの既存パブリッシャとメッセージのやり取りを行う。そこで、既存パブリッシャは、新規パブリッシャへ送信するメッセージに、自ノードがパブリッシュ停止中か否かの情報を上乗せし、メッセージを送信する。パブリッシャ初期状態判定部63は、既存パブリッシャがパブリッシュ停止の状態である場合、自ノードをパブリッシュ停止状態とし、既存パブリッシャがパブリッシュ開始の状態である場合、自ノードをパブリッシュ開始状態とする。
なお、既存のパブリッシャが存在しない場合、新規パブリッシャ自身がランデブーポイントとなるため、ランデブーポイント判定部65、サブスクライバ存在/不在検出部66及びパブリッシュ開始/停止信号転送部67により、挿入完了後にパブリッシュを開始するか否かを判断する。
パブリッシャ状態管理部64は、自ノードについてパブリッシュ開始/パブリッシュ停止についての状態情報を管理する。パブリッシャ状態管理部64は、各部からの通知に基づいて状態情報を更新する。パブリッシャ状態管理部64は、状態情報がパブリッシュ停止になった場合、パブリッシュ停止になった旨をパブリッシュ転送部68へ通知する。パブリッシャ状態管理部64は、状態情報がパブリッシュ開始になった場合、パブリッシュ開始になった旨をパブリッシュ状態確認部69へ通知する。また、パブリッシャ状態管理部64は、不整合検出部610及びパブリッシュ状態確認部69からの要求に応じて状態情報を提示する。
パブリッシュ転送部68は、自ノードで発生したメッセージを送信する。
また、パブリッシュ転送部68は、他のノードから送信されたメッセージを受信する。パブリッシュ転送部68は、受信したメッセージを隣接するパブリッシャ及び/又はサブスクライバへ転送する。パブリッシャ状態管理部64からパブリッシュ停止である旨の通知を受けた場合、パブリッシュ転送部68は、メッセージの配信を停止する。
パブリッシュ転送部68がランデブーポイントに搭載されている場合、パブリッシュ転送部68は、他のノードから送信されたメッセージを受信した旨を、不整合検出部610へ通知する。
パブリッシュ状態確認部69は、パブリッシュ停止状態にある場合、Multi-key Skip Graphのレベル0リストにおいて隣接するパブリッシャへパブリッシュの状態を所定の周期で問い合わせる。パブリッシュ状態確認部69は、隣接ノードから応答される問合結果を、不整合検出部610へ出力する。パブリッシュ状態確認部69は、パブリッシャ状態管理部64からパブリッシュ開始である旨の通知を受信した場合、隣接パブリッシャへの問合せを停止する。
また、パブリッシュ状態確認部69は、隣接するパブリッシャからパブリッシュの状態の問い合わせを受ける。問い合わせを受けた場合、パブリッシュ状態確認部69は、パブリッシャ状態管理部64から状態情報を引き出し、問合せの要求元へ応答信号を送信する。
不整合検出部610は、パブリッシュ転送部68から、メッセージを受信した旨の通知を受けた場合、メッセージ配信の不整合が生じているか否かを判断する。この処理は、急なノードの離脱により生じる、図13に示す不整合に対応するためのものである。図13は、サブスクライバの不在時にメッセージが送信される不整合を示す図である。
図13に示す不整合は、ランデブーポイントでは発生することはなく、その他のパブリッシャノードにおいて発生の可能性がある。図13に示す不整合は、ランデブーポイントのパブリッシュ開始/停止信号転送部67から送信されるパブリッシュ開始信号/パブリッシュ停止信号が不達となった場合(転送経路上のノードが急に離脱した場合)に発生するからである。したがって、通知の発信元であるランデブーポイント自身に対し、パブリッシュ開始信号及びパブリッシュ停止信号が不達となることは起こり得ない。
なお、ランデブーポイント自身が急に離脱した場合、新たにランデブーポイントとなるノードに搭載されるMKSG経路表維持管理部62は、Multi-key Skip Graphのアルゴリズムに沿って経路表を更新する。新たにランデブーポイントとなったパブリッシャは、経路表が更新されたタイミングで、サブスクライバの存在/不在をチェックする。これにより、ランデブーポイント自身が急に離脱した場合であっても、不整合の発生を容易に防ぐことが可能となる。
ランデブーポイント以外のパブリッシャがサブスクライバ不在時にメッセージを送信した場合、そのメッセージは、図14に示すように、必ずランデブーポイントを経由する。ランデブーポイントに搭載されるパブリッシュ転送部68は、隣接するパブリッシャからのメッセージを受信した場合、受信した旨を自ノードに搭載される不整合検出部610へ出力する。不整合検出部610は、パブリッシュ転送部68からメッセージを受信した旨の通知を受けた場合、ランデブーポイント判定部65による自ノードがランデブーポイントであるとの判断と、パブリッシャ状態管理部64から読み出される状態情報とに基づき、不整合を検出する。不整合検出部610は、状態情報により自ノードがパブリッシュ停止状態にあると管理されている場合、不整合が発生したと判断する。不整合検出部610は、検出結果を不整合是正信号転送部611へ出力する。不整合是正信号転送部611は、不整合検出部610から検出結果を受け取ると、メッセージの送り元のパブリッシャへ不整合是正信号を送信する。このとき、不整合是正信号は、パブリッシュを停止させる信号である。
メッセージの送り元のパブリッシャに搭載される不整合是正信号転送部611は、ランデブーポイントからの不整合是正信号を受信すると、パブリッシュを停止させる旨をパブリッシャ状態管理部64へ通知する。
また、不整合検出部610は、隣接するパブリッシャから定期的に通知されるパブリッシャの状態情報に基づいてメッセージ配信の不整合が生じているか否かを判断する。この処理は、急なノードの離脱により生じる、図15に示す不整合に対応するためのものである。図15は、サブスクライバの存在時にメッセージの送信が停止されてしまう不整合を示す図である。
図15に示す不整合は、図13に示す不整合と同様に、ランデブーポイントでは発生することはなく、その他のパブリッシャノードにおいて発生の可能性がある。
パブリッシャに搭載されるパブリッシュ状態確認部69は、自ノードがパブリッシュを停止している際に、図16で示すように、Multi-key Skip Graphのレベル0リストにおける隣接ノードに対し、パブリッシュ停止状態であるか否かを定期的に問い合わせる。隣接ノードに搭載されるパブリッシュ状態確認部69は、問合せに対する応答信号を、問合せ元のノードへ送信する。不整合検出部610は、応答信号と、自ノードの状態とを比較し、自ノードと隣接ノードとの間でパブリッシュの状態に齟齬がないかを確認することで、不整合を検出する。不整合検出部610は、自ノードがパブリッシュ停止状態にある一方で、隣接ノードがパブリッシュ開始状態にある場合、不整合が発生したと判断する。不整合検出部610は、検出結果を不整合是正信号転送部611へ出力する。不整合是正信号転送部611は、不整合検出部610から検出結果を受け取ると、ランデブーポイントへ不整合是正信号を送信する。このとき、不整合是正信号は、全てのパブリッシャへパブリッシュを開始する指示の送信を要求する信号である。
ランデブーポイントに搭載される不整合是正信号転送部611は、パブリッシャから不整合是正信号を受信すると、サブスクライバ存在/不在検出部66により、サブスクライバの存在を確認する。サブスクライバが存在する場合、不整合是正信号転送部611は、全てのパブリッシャへ不整合是正信号を送信する。このとき、不整合是正信号は、パブリッシュを開始させる信号である。
ランデブーポイントから不整合是正信号を受信したパブリッシャは、パブリッシュを開始させる旨をパブリッシャ状態管理部64へ通知する。
次に、以上のように構成される情報配信システムの動作を詳細に説明する。
図17は、第2の実施形態における情報配信システムにおいて、ノードAがメッセージ配信に参加する際の動作を示すフローチャートである。また、図18は、図17に示すフローを実行する際に動作する構成要素を示す図である。
まず、ノードAは、トピックT及びノードの役割を指定する。役割は「サブスクライバ」、「パブリッシャ」及び「サブスクライバかつパブリッシャ」のいずれかである。ノードAに搭載されるキー生成部61は、トピック及び役割からキーを生成する。キー生成部61は、役割が「サブスクライバ」であるか否かを判断する(ステップS171)。サブスクライバである場合(ステップS171のYes)、キー生成部61は、トピックTに接尾辞「1」を付したキー「T_1」を生成する(ステップS172)。サブスクライバではない場合(ステップS171のNo)、キー生成部61は、トピックTに接尾辞「2」を付したキー「T_2」を生成する(ステップS173)。これにより、役割が「サブスクライバ」又は「サブスクライバかつパブリッシャ」の場合、キー「T_1」が付され、役割が「パブリッシャ」の場合、キー「T_2」が付されることとなる。
MKSG経路表維持管理部62は、Multi-key Skip Graphを用い、仮想ノードAの挿入箇所を探索する(ステップS174)。このとき、ノードAが他のトピックに既に参加している場合、MKSG経路表維持管理部62は、自身の仮想ノードAを起点として探索を行う。一方、ノードAがどのトピックにも参加していない場合、MKSG経路表維持管理部62は、例えば、トピックとは無関係な仮想ノードB〜Eを全てのノードB〜Eが予め挿入しておくことで、仮想ノードB〜Eを起点とした探索を行えるようにしておいても良い。また、ノードAがどのトピックにも参加していない場合、MKSG経路表維持管理部62は、既にMulti-key Skip Graph上に仮想ノードを挿入済みのノードの情報を何らかの方法で入手し、そのノードを起点として探索を行っても良い。
続いて、MKSG経路表維持管理部62は、仮想ノードAのキーが「T_1」であるか否かを判断する(ステップS175)。仮想ノードAのキーが「T_1」である場合(ステップS175のYes)、MKSG経路表維持管理部62は、Multi-key Skip Graphのアルゴリズムに沿って、仮想ノードAの挿入処理を実施する(ステップS176)。仮想ノードAのキーが「T_2」である場合(ステップS175のNo)、MKSG経路表維持管理部62は、Multi-key Skip Graphのアルゴリズムに沿って、仮想ノードAの挿入処理を実施する(ステップS177)。
ステップS176にて挿入処理を実行した後、ノードAは、役割に応じた処理を開始する。すなわち、パブリッシュ転送部68は、役割が「サブスクライバかつパブリッシャ」であるか否かを判断する(ステップS178)。役割が「サブスクライバかつパブリッシャ」である場合(ステップS178のYes)、パブリッシュ転送部68は、メッセージの配信を開始する(ステップS179)。役割が「サブスクライバ」である場合(ステップS178のNo)、ノードAは、メッセージが配信されるまで待機する(ステップS1710)。
ステップS177にて挿入処理を実行した後、MKSG経路表維持管理部62は、双方向リンクを形成するために通信を行うノードにキー「T_2」が割り当てられたパブリッシャが存在するかを判断する(ステップS1711)。双方向リンクを形成するために通信を行うノードにキー「T_2」が割り当てられたパブリッシャが存在する場合(ステップS1711のYes)、MKSG経路表維持管理部62は、そのパブリッシャから初期状態情報を取得する(ステップS1712)。パブリッシャ初期状態判定部63は、MKSG経路表維持管理部62で取得された初期状態情報に基づき、初期状態としてパブリッシュ開始状態とするか否かを判断する(ステップS1713)。パブリッシュ開始状態とする場合(ステップS1713のYes)、パブリッシャ状態管理部64は、パブリッシャの状態をパブリッシュ開始状態とする(ステップS1714)。パブリッシュ転送部68は、パブリッシャ状態管理部64におけるパブリッシュ開始状態に基づき、メッセージの配信を開始する(ステップS1715)。
初期状態としてパブリッシュ停止状態とする場合(ステップS1713のNo)、パブリッシャ状態管理部64は、パブリッシャの状態をパブリッシュ停止状態とする(ステップS1716)。ノードAは、パブリッシュ開始信号があるまでメッセージの配信を停止する(ステップS1717)。
ステップS1711において、双方向リンクを形成するために通信を行うノードにキー「T_2」が割り当てられたパブリッシャが存在しない場合(ステップS1711のNo)、ランデブーポイント判定部65は、自ノードがランデブーポイントに該当すると判定する(ステップS1718)。サブスクライバ存在/不在検出部66は、レベル0における隣接ノードにキー「T_1」が割り当てられたノードが存在するか否かを判断する(ステップS1719)。レベル0における隣接ノードにキー「T_1」が割り当てられたノードが存在する場合(ステップS1719のYes)、パブリッシュ開始/停止信号転送部67は、パブリッシャ状態管理部64へパブリッシャの状態がパブリッシュ開始状態である旨を通知する(ステップS1720)。パブリッシュ転送部68は、パブリッシャ状態管理部64におけるパブリッシュ開始状態に基づき、メッセージの配信を開始する(ステップS1721)。
キー「T_1」が割り当てられたサブスクライバが隣接しない場合(ステップS1719のNo)、パブリッシュ開始/停止信号転送部67は、パブリッシャ状態管理部64へパブリッシャの状態がパブリッシュ停止状態である旨を通知する(ステップS1722)。ノードAは、パブリッシュ開始信号があるまでメッセージの配信を停止する(ステップS1723)。
図19は、第2の実施形態における情報配信システムにおいて、サブスクライバS1の不在を検知し、パブリッシャP1及びパブリッシャP2によるメッセージの送信を停止する際の動作を示すシーケンス図である。また、図20は、図19に示すシーケンスを実行する際に動作する構成要素を示す図である。
まず、サブスクライバS1は、トピックTのメッセージ配信についての登録を解除する(シーケンスS191)。サブスクライバS1のMKSG経路表維持管理部62は、Multi-key Skip Graphを用い、サブスクライバS1の離脱処理を実施する(シーケンスS192)。MKSG経路表維持管理部62は、サブスクライバS1の離脱によるリンクの張り替えを、サブスクライバS1と隣接するパブリッシャP1のMKSG経路表維持管理部62へ通知する(シーケンスS193)。
パブリッシャP1のMKSG経路表維持管理部62は、サブスクライバS1から通知される情報に基づいて経路表を更新する(シーケンスS194)。パブリッシャP1のランデブーポイント判定部65は、自ノードがランデブーポイントに該当すると判定する(シーケンスS195)。サブスクライバ存在/不在検出部66は、レベル0における自身の隣接ノードにキー「T_1」が割り当てられたノードが存在する状態から存在しない状態になったか否かを判断する(シーケンスS196)。キー「T_1」が割り当てられたノードが存在する状態のままである場合(シーケンスS196のNo)、パブリッシュ開始/停止信号転送部67は、処理を終了させる。キー「T_1」が割り当てられたノードが存在する状態から存在しない状態になった場合(シーケンスS196のYes)、パブリッシュ開始/停止信号転送部67は、パブリッシャ状態管理部64へパブリッシャの状態がパブリッシュ停止状態となる旨を通知すると共に(ステップS197)、パブリッシュ停止信号をキー「T_2」が割り当てられたノードへマルチキャストする(ステップS198)。パブリッシュ転送部68は、パブリッシャ状態管理部64で管理されるパブリッシュ停止状態に基づき、メッセージの配信を停止する(ステップS199)。
パブリッシャP2は、ランデブーポイントであるパブリッシャP1からマルチキャストされるパブリッシュ停止信号を、パブリッシュ開始/停止信号転送部67により受信する。パブリッシュ開始/停止信号転送部67は、パブリッシャP2の状態がパブリッシュ停止状態となったことを、パブリッシャ状態管理部64へ通知する(シーケンスS1910)。パブリッシュ転送部68は、パブリッシャ状態管理部64で管理されるパブリッシュ停止状態に基づき、メッセージの配信を停止する(ステップS1911)。
図21は、第2の実施形態における情報配信システムにおいて、サブスクライバS1の存在を検知し、パブリッシャP1及びパブリッシャP2によるメッセージの送信を開始する際の動作を示すシーケンス図である。また、図22は、図21に示すシーケンスを実行する際に動作する構成要素を示す図である。
まず、サブスクライバS1は、トピックTについてのメッセージが配信されるように受信登録を行う(シーケンスS211)。サブスクライバS1のMKSG経路表維持管理部62は、Multi-key Skip Graphを用い、サブスクライバS1の挿入処理を実施する(シーケンスS212)。MKSG経路表維持管理部62は、サブスクライバS1の挿入によるリンクの張り替えを、サブスクライバS1と隣接するパブリッシャP1のMKSG経路表維持管理部62へ通知する(シーケンスS213)。
パブリッシャP1のMKSG経路表維持管理部62は、サブスクライバS1から通知される情報に基づいて経路表を更新する(シーケンスS214)。パブリッシャP1のランデブーポイント判定部65は、自ノードがランデブーポイントに該当すると判定する(シーケンスS215)。サブスクライバ存在/不在検出部66は、レベル0における自身の隣接ノードにキー「T_1」が割り当てられたノードが存在しない状態から存在する状態になったか否かを判断する(シーケンスS216)。キー「T_1」が割り当てられたノードが存在しない状態のままである場合(シーケンスS216のNo)、パブリッシュ開始/停止信号転送部67は、処理を終了させる。キー「T_1」が割り当てられたノードが存在しない状態から存在する状態になった場合(シーケンスS216のYes)、パブリッシュ開始/停止信号転送部67は、パブリッシャ状態管理部64へパブリッシャの状態がパブリッシュ開始状態となる旨を通知すると共に(ステップS217)、パブリッシュ開始信号をキー「T_2」が割り当てられたノードへマルチキャストする(ステップS218)。パブリッシュ転送部68は、パブリッシャ状態管理部64で管理されるパブリッシュ開始状態に基づき、メッセージの配信を開始する(ステップS219)。
パブリッシャP2は、ランデブーポイントであるパブリッシャP1からマルチキャストされるパブリッシュ開始信号を、パブリッシュ開始/停止信号転送部67により受信する。パブリッシュ開始/停止信号転送部67は、パブリッシャP2の状態がパブリッシュ開始状態となったことを、パブリッシャ状態管理部64へ通知する(シーケンスS2110)。パブリッシュ転送部68は、パブリッシャ状態管理部64で管理されるパブリッシュ開始状態に基づき、メッセージの配信を開始する(ステップS2111)。
図23は、第2の実施形態における情報配信システムにおいて、サブスクライバ不在時の不整合を解消する際の動作を示すシーケンス図である。また、図24は、図23に示すシーケンスを実行する際に動作する構成要素を示す図である。
まず、パブリッシャP1は、トピックTについてのメッセージを配信する(シーケンスS231)。
パブリッシャP2は、パブリッシュ転送部68により、パブリッシャP1からのメッセージを受信する(シーケンスS232)。パブリッシャP2のランデブーポイント判定部65は、自ノードがランデブーポイントに該当すると判定する(シーケンスS233)。不整合検出部610は、パブリッシャ状態管理部64から状態情報を読み出し(シーケンスS234)、自ノードの状態がパブリッシュ停止状態であるか否かを判断する(シーケンスS235)。自ノードの状態がパブリッシュ停止状態である場合(シーケンスS235のYes)、不整合検出部610は、不整合が発生したと判断し(シーケンスS236)、不整合是正信号転送部611に、パブリッシュを停止させる旨の不整合是正信号をパブリッシャP1へ送信させる(シーケンスS237)。自ノードの状態がパブリッシュ開始状態である場合(シーケンスS235のNo)、不整合検出部610は、処理を終了させる。
パブリッシャP1の不整合是正信号転送部611は、ランデブーポイントからの不整合是正信号を受信すると、パブリッシュを停止させる旨をパブリッシャ状態管理部64へ通知する(シーケンスS238)。パブリッシュ転送部68は、パブリッシャ状態管理部64で管理されるパブリッシュ停止状態に基づき、メッセージの配信を停止する(ステップS239)。
図25は、第2の実施形態における情報配信システムにおいて、サブスクライバ存在時の不整合を解消する際の動作を示すシーケンス図である。また、図26は、図25に示すシーケンスを実行する際に動作する構成要素を示す図である。
まず、トピックTについてのメッセージ配信に参加し、かつ、メッセージの配信を停止しているパブリッシャP1は、パブリッシュ状態確認部69により、Multi-key Skip Graphのレベル0における隣接ノードのうちキー「T_2」が付されたノードに対し、パブリッシュ停止状態か否かの問い合わせを定期的に実施する(シーケンスS251)。
パブリッシャP2は、パブリッシュ状態確認部69により、パブリッシャP1から送信される問合せを受信する(シーケンスS252)。パブリッシュ状態確認部69は、パブリッシャ状態管理部64から状態情報を読み出し(シーケンスS253)、問合せに対する応答信号を、パブリッシャP1へ送信する(シーケンスS254)。
パブリッシャP1における不整合検出部610は、自ノードの状態がパブリッシュ停止状態であるのに対し、応答信号により示されるパブリッシャP2の状態がパブリッシュ開始状態である場合、パブリッシャP1及びパブリッシャP2間の不整合を検出する(シーケンスS255)。不整合検出部610は、パブリッシュを開始させる指示の全てのパブリッシャへの通知を要求する旨の不整合是正信号を、不整合是正信号転送部611にパブリッシャP3へ送信させる(シーケンスS256)。
パブリッシャP3は、パブリッシャP2から不整合是正信号を受信すると、ランデブーポイント判定部65により、自ノードがランデブーポイントであると判定する(シーケンスS257)。サブスクライバ存在/不在検出部66は、レベル0における隣接ノードにキー「T_1」が割り当てられたノードが存在するか否かを判断する(シーケンスS258)。レベル0における隣接ノードにキー「T_1」が割り当てられたノードが存在する場合(シーケンスS258のYes)、不整合検出部610は、不整合が発生したと判断し(シーケンスS259)、不整合是正信号転送部611に、パブリッシュを開始させる信号である不整合是正信号を全てのパブリッシャへ送信させる(シーケンスS2510)。レベル0における隣接ノードにキー「T_1」が割り当てられたノードが存在しない場合(シーケンスS258のNo)、不整合検出部610は、処理を終了させる。
パブリッシャP1の不整合是正信号転送部611は、パブリッシャP3からの不整合是正信号を受信し、パブリッシャ状態管理部64へパブリッシャの状態がパブリッシュ開始状態である旨を通知する(シーケンスS2511)。パブリッシュ転送部68は、パブリッシャ状態管理部64におけるパブリッシュ開始状態に基づき、メッセージの配信を開始する(シーケンスS2512)。
以上のように、第2の実施形態では、キー生成部61は、各トピック名をキーとして生成する。そして、MKSG経路表維持管理部62は、パブリッシャの役割又はサブスクライバの役割が割り当てられたノードに対し、生成されたキーを参照してMulti-key Skip Graphを構築するようにしている。すなわち、情報配信システムは、分散トピックベースpub/subにおいて、Multi-key Skip Graphを構築するようにしている。これにより、情報配信システムは、キーであるトピックを指定して、メッセージのマルチキャストを実現することが可能となる。すなわち、情報配信システムは、転送に係る通信機器数を減らすことが可能となる。また、情報配信システムは、トピック毎の配送ツリーをトピックへの参加ノードのみで構築することが可能となる。
したがって、第2の実施形態に係る情報配信システムによれば、配送経路長を抑えることができ、かつ、無関係なトピックに関する情報の中継を避けることができる。
また、従来の技術では、以下に示す課題も存在する。すなわち、従来の技術では、サブスクライバの不在時にメッセージの配信を停止できない。そのため、パブリッシャは、サブスクライバの不在を検知する術が無いため、サブスクライバの存在/不在に関わらず、まずはメッセージを根ノードに送る必要がある。送信頻度が高いトピックの場合、サブスクライバが不在にも関わらずメッセージが送信され続けるのはネットワーク資源の浪費となり望ましくない。
また、根ノードにおいて子ノードの存在/不在からサブスクライバの不在を検出可能であるが、根ノードに全パブリッシャへのリンクを持たせると負荷が集中してしまうため、スケーラビリティが失われてしまう。
そこで、第2の実施形態では、キー生成部61は、各トピック名にパブリッシャとサブスクライバとで異なる予約語を接尾辞として付したものをキーとして生成する。MKSG経路表維持管理部62は、生成されたキーを参照し、Multi-key Skip Graph上でトピック毎にサブスクライバ同士、又は、パブリッシャ同士が隣接するようにノードを配置する。そして、サブスクライバゾーンと境界を接するパブリッシャノードであるランデブーポイントに搭載されるサブスクライバ存在/不在検出部66は、サブスクライバの存在/不在を検出するようにしている。これにより、情報配信システムは、各ノードが局所的な情報のみを保持する状況下において、分散pub/subが備えるべきスケーラビリティを損なわずに、トピック毎にサブスクライバの存在/不在を検出することが可能となる。
また、第2の実施形態では、ランデブーポイントに搭載されるパブリッシュ開始/停止信号転送部67は、サブスクライバ存在/不在検出部66で検出されたサブスクライバの存在/不在に基づき、パブリッシュ開始信号又はパブリッシュ停止信号を、トピックに係る全てのパブリッシャへ送信する。これにより、情報配信システムは、サブスクライバの不在時に、メッセージの配信を停止させることが可能となる。
また、第2の実施形態では、パブリッシャ初期状態判定部63は、自ノードがパブリッシャとしてメッセージ配信に新たに参加する場合、隣接されるパブリッシャの状態に基づき、パブリッシュ開始及びパブリッシュ停止のいずれかを初期状態として選択するようにしている。これにより、新たにメッセージ配信に参加するパブリッシャは、参加直後からメッセージの配信開始/停止に対応することが可能となる。
また、第2の実施形態では、不整合検出部610は、パブリッシュ転送部68からメッセージを受信した旨の通知を受けた際に、自ノードがランデブーポイントであり、かつ、パブリッシュ停止状態にある場合、不整合が発生したと判断する。そして、不整合是正信号転送部611は、不整合が検出されると、配信を停止させる旨の不整合是正信号を、メッセージの送り元へ送信するようにしている。これにより、情報配信システムは、サブスクライバが不在にも関わらず、メッセージを配信するパブリッシャが存在する場合、このパブリッシャにメッセージの配信を停止させることが可能となる。
また、第2の実施形態では、パブリッシュ状態確認部69は、自ノードがパブリッシュを停止している場合、隣接ノードに対してパブリッシュ停止状態であるか否かを定期的に問い合わせる。そして、不整合検出部610は、隣接ノードがパブリッシュ開始状態である場合、不整合を検出する。そして、ランデブーポイントに搭載される不整合是正信号転送部611は、隣接ノードにて不整合が生じている場合、メッセージの配信を開始する旨の不整合是正信号を他のパブリッシャへ送信するようにしている。これにより、情報配信システムは、サブスクライバが存在するにも関わらず、配信を停止しているパブリッシャが存在する場合、このパブリッシャにメッセージの配信を開始させることが可能となる。
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
また、本発明の情報配信システムは、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
10,40,60…パブリッシャ、11…キー生成部、12…MKSG経路表維持管理部、13…パブリッシュ転送部、20,30,50…サブスクライバ、61…キー生成部、62…MKSG経路表維持管理部、63…パブリッシャ初期状態判定部、64…パブリッシャ状態管理部、65…ランデブーポイント判定部、66…サブスクライバ存在/不在検出部、67…パブリッシュ開始/停止信号転送部、68…パブリッシュ転送部、69…パブリッシュ状態確認部、610…不整合検出部、611…不整合是正信号転送部

Claims (6)

  1. 複数の通信機器がネットワークに接続されてなる情報配信システムにおいて、
    前記通信機器に含まれるノードは、
    トピックを識別可能な名称に、サブスクライバ及びパブリッシャを含むノード種別を識別可能な名称を付してキーを生成するキー生成部と、
    前記キーと、他のノードから通知される前記他のノードについてのキーとを参照し、前記サブスクライバ同士が前記トピック毎に隣接するサブスクライバゾーンと、前記パブリッシャ同士が前記トピック毎に隣接するパブリッシャゾーンとが形成された、Multi-key Skip Graphにおける経路表を構築するMKSG経路表維持管理部と、
    前記経路表に基づき、自ノードが、前記サブスクライバゾーンと境界を接するパブリッシャであるランデブーポイントに該当するか否かを判定するランデブーポイント判定部と、
    自ノードが前記ランデブーポイントである場合、前記経路表に基づき、対象となるキーが割り当てられたサブスクライバの存在/不在を検出するサブスクライバ存在/不在検出部と、
    前記経路表に従い、メッセージを送信するパブリッシュ転送部と
    を備える情報配信システム。
  2. 前記ノードは、
    前記サブスクライバが不在の状態において、前記サブスクライバ存在/不在検出部により前記サブスクライバの存在が新たに検出される場合、パブリッシュ開始信号を前記パブリッシゾーンへ発信し、前記サブスクライバが存在する状態において、前記サブスクライバ存在/不在検出部により前記サブスクライバの不在が新たに検出される場合、パブリッシュ停止信号を前記パブリッシゾーンへ発信するパブリッシュ開始/停止信号転送部を備える請求項記載の情報配信システム。
  3. 前記ノードは、
    パブリッシャとして新たにメッセージの配信に参加する際、自ノードの状態を、前記Multi-key Skip Graphにおいて隣接するパブリッシャの状態に従って決定するパブリッシャ初期状態判定部を備える請求項又は記載の情報配信システム。
  4. 前記ノードは、
    他のパブリッシャから配信されるメッセージを受信した際に、自ノードが前記ランデブーポイントであり、かつ、メッセージの配信を停止する状態にある場合、不整合が発生したと判断する不整合検出部と、
    前記不整合が検出されると、配信を停止させる旨の不整合是正信号を前記他のパブリッシャへ送信する不整合是正信号転送部と
    を備える請求項乃至のいずれかに記載の情報配信システム。
  5. 前記ノードは、
    自ノードがメッセージの配信を停止する状態にある場合、前記Multi-key Skip Graphにおいて隣接するパブリッシャに対して動作の状態を問い合わせるパブリッシュ状態確認部と、
    自ノードの状態と、前記隣接するパブリッシャの状態とに齟齬がある場合、不整合が発生したと判断する不整合検出部と、
    自ノードが前記ランデブーポイントでない場合、第1の不整合是正信号を前記ランデブーポイントへ送信し、自ノードが前記ランデブーポイントである場合、他のパブリッシャから送信される第1の不整合是正信号に応じ、前記サブスクライバ存在/不在検出部により前記サブスクライバの存在を確認した後、メッセージの配信を開始させる旨の第2の不整合是正信号を前記パブリッシャゾーンへ送信する不整合是正信号転送部と
    を備える請求項乃至のいずれかに記載の情報配信システム。
  6. 複数の通信機器がネットワークに接続されてなる情報配信システムで用いられる情報配信方法において、
    前記通信機器に含まれるノード毎に、トピックを識別可能な名称に、サブスクライバ及びパブリッシャを含むノード種別を識別可能な名称を付したキーを生成し、
    前記キーと、他のノードから通知される前記他のノードについてのキーとを参照し、前記サブスクライバ同士が前記トピック毎に隣接するサブスクライバゾーンと、前記パブリッシャ同士が前記トピック毎に隣接するパブリッシャゾーンとが形成された、Multi-key Skip Graphにおける経路表を構築し、
    前記経路表に基づき、自ノードが、前記サブスクライバゾーンと境界を接するパブリッシャであるランデブーポイントに該当するか否かを判定し、
    自ノードが前記ランデブーポイントである場合、前記経路表に基づき、対象となるキーが割り当てられたサブスクライバの存在/不在を検出し、
    前記経路表に従い、メッセージを送信する情報配信方法。
JP2013256493A 2013-12-11 2013-12-11 情報配信システム及び情報配信方法 Active JP6101622B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013256493A JP6101622B2 (ja) 2013-12-11 2013-12-11 情報配信システム及び情報配信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013256493A JP6101622B2 (ja) 2013-12-11 2013-12-11 情報配信システム及び情報配信方法

Publications (2)

Publication Number Publication Date
JP2015115784A JP2015115784A (ja) 2015-06-22
JP6101622B2 true JP6101622B2 (ja) 2017-03-22

Family

ID=53529210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013256493A Active JP6101622B2 (ja) 2013-12-11 2013-12-11 情報配信システム及び情報配信方法

Country Status (1)

Country Link
JP (1) JP6101622B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114650101B (zh) * 2020-12-21 2024-08-30 科大国盾量子技术股份有限公司 量子通信网络的域间路由方法、装置、量子通信网络及路由系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006073969A2 (en) * 2005-01-06 2006-07-13 Tervela, Inc. Intelligent messaging application programming interface

Also Published As

Publication number Publication date
JP2015115784A (ja) 2015-06-22

Similar Documents

Publication Publication Date Title
JP5049344B2 (ja) ランデブーフェデレーション内の近傍域間通信
EP1703701B1 (en) APIs to build peer to peer messaging applications
CN101529809B (zh) 链路状态协议控制的网络中路由选择信息的分布式存储
EP2215770B1 (en) Merging of overlay networks in distributed data structures
Rehena et al. A modified SPIN for wireless sensor networks
US9363179B2 (en) Multi-publisher routing protocol for named data networks
KR101141126B1 (ko) P2p 네트워크에서 노드들이 비정상인지 아닌지를 진단하기 위한 방법, 장치 및 시스템
Banno et al. Designing overlay networks for handling exhaust data in a distributed topic-based pub/sub architecture
Mahambre et al. A taxonomy of qos-aware, adaptive event-dissemination middleware
WO2011029315A1 (zh) 多媒体消息广播方法及系统
Tahir et al. A three-dimensional clustered peer-to-peer overlay protocol for mobile ad hoc networks
JP6101622B2 (ja) 情報配信システム及び情報配信方法
Aguilera et al. An architecture for automatic service composition in MANET using a distributed service graph
CN101605094A (zh) 基于点对点网络的环模型及其路由算法
Lavanya et al. Secured backup routing protocol for ad hoc networks
Chae et al. Fast discovery scheme using DHT-like overlay network for a large-scale DDS
Khazael et al. Distributed coordination protocol for event data exchange in IoT monitoring applications
Wongsaardsakul et al. A structured mesh overlay network for p2p applications on mobile ad hoc networks
Aguilera et al. A parameter-based service discovery protocol for mobile ad-hoc networks
Ismail et al. Discovery in SOA-governed industrial middleware with mDNS and DNS-SD
KR101613688B1 (ko) 노드 간 삼각관계를 이용한 피어 투 피어 소셜 네트워킹 서비스 제공방법
US8892777B2 (en) Method for address transmission
Mastouri et al. Opportunistic routing in the context of publishsubscribe model for VANET
JP2019049950A (ja) 通信装置及び通信方法
Kummer et al. Building multicast trees in ad-hoc networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170206

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: 20170221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170227

R150 Certificate of patent or registration of utility model

Ref document number: 6101622

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150