JP2014038483A - データ配信システム、データ配信方法、およびプログラム - Google Patents
データ配信システム、データ配信方法、およびプログラム Download PDFInfo
- Publication number
- JP2014038483A JP2014038483A JP2012180413A JP2012180413A JP2014038483A JP 2014038483 A JP2014038483 A JP 2014038483A JP 2012180413 A JP2012180413 A JP 2012180413A JP 2012180413 A JP2012180413 A JP 2012180413A JP 2014038483 A JP2014038483 A JP 2014038483A
- Authority
- JP
- Japan
- Prior art keywords
- distribution
- data
- node
- destination
- queue
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
【課題】データの配信頻度やサブスクライバが増えた場合であっても、円滑にデータを配信すること。
【解決手段】ブローカーノード100は、キューノード200に配信する配信データを複製せずに、ただ1つだけの配信データを送信する。そして、キューノード200は、必要がある場合に、ブローカーノード100から受信した配信データを複製し、各サブスクライバ400に対応する各受信データ格納用キュー204に格納する。
【選択図】図1
【解決手段】ブローカーノード100は、キューノード200に配信する配信データを複製せずに、ただ1つだけの配信データを送信する。そして、キューノード200は、必要がある場合に、ブローカーノード100から受信した配信データを複製し、各サブスクライバ400に対応する各受信データ格納用キュー204に格納する。
【選択図】図1
Description
本発明は、データ配信システム、データ配信方法、およびプログラムに関する。
近年、例えばマイクロブログや地理情報を活用した広告配信システムにおいて、あるトピックに対するデータが配信者(パブリッシャ)から配信されたとき、当該トピックを購読しているクライアント(サブスクライバ)にデータを配送するものがある。このシステムには、パブリッシャから受信した配信データをサブスクライバに配信する装置(ブローカー)が用いられる。このブローカーは、パブリッシャから配信データを受信して、受信した配信データに紐付けられたトピックを示すトピック情報を元に、当該トピックを購読している各サブスクライバ用のキューに当該データを登録することで、各サブスクライバに対して購読しているトピックに属するデータの配信を行う。
例えば、ブローカーがエージェントを介して複数のセグメントに対し一斉にブロードキャストするブロードキャストシステムがある(例えば、特許文献1参照)。ブローカーは、要求されたブロードキャストを、対象セグメント毎にエージェントにユニキャストで送信する。各セグメントでは、ブローカーからのブロードキャスト要求を受けたエージェントがそれぞれのセグメント内の他のエージェントに対してUDPブロードキャストによって送信する。
また、各種のコンテンツを保持する1以上のコンテンツプロバイダサーバと、インターネットに接続されたユーザ端末と、このコンテンツプロバイダサーバとインターネットを介して接続されるブローカーサーバとを備えるシステムがある(例えば、特許文献2参照)。このブローカーサーバは、ユーザ端末が購入したコンテンツのインデックス情報をユーザ毎に記憶しておき、このインデックス情報を用いて、各ユーザ端末に購入したコンテンツを配信する。
さらに、配信文書をクライアントに配信する際に、配信文書がフィルタリング条件を満たしているか否かの判定を行い、フィルタリング条件を満たしていると判定された場合に、配信文書の表示を行うためのHTMLドキュメントを作成し、配信するものがある(例えば、特許文献3参照)。
また、接続先グループ同士の階層構造を階層情報テーブルに登録するものがある(例えば、特許文献4参照)。
また、接続先グループ同士の階層構造を階層情報テーブルに登録するものがある(例えば、特許文献4参照)。
しかしながら、データの配信頻度やサブスクライバが増えたときに、円滑にデータを配信することが困難になるおそれがあった。
特に、多くのサブスクライバから購読されているトピックについてのデータを配信する場合、同一のデータが大量に複製され、各サブスクライバに配信される。このため、大量の配信データがブローカーとキューの間の帯域を圧迫し、データの配信頻度やサブスクライバが増えたときに性能上のボトルネックになるという問題があった。
特に、多くのサブスクライバから購読されているトピックについてのデータを配信する場合、同一のデータが大量に複製され、各サブスクライバに配信される。このため、大量の配信データがブローカーとキューの間の帯域を圧迫し、データの配信頻度やサブスクライバが増えたときに性能上のボトルネックになるという問題があった。
本発明は、上記課題を解決することができるデータ配信システム、データ配信方法、およびプログラムを提供することを目的とする。
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ配信システムは、配信元通信機器から配信データを受信するブローカーノードと、前記ブローカーノードから受信した前記配信データを配信先通信機器に送信するキューノードとを備えるデータ配信システムであって、前記ブローカーノードは、指定された種類の前記配信データの転送先として予め決められている前記キューノードを検出するための転送先検出情報を用いて、前記配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するデータ転送先絞り込み装置と、前記データ転送先絞り込み装置によって検出された前記キューノードに前記配信データを送信するデータ転送装置とを備え、前記キューノードは、当該配信先通信機器に配信するための前記配信データを格納する記憶領域を前記配信先通信機器毎に備える記憶装置と、前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、前記ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するデータ配信先決定装置と、検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するデータ配信先振り分け装置と、を備える。
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ配信方法は、配信元通信機器から配信データを受信するブローカーノードと、前記ブローカーノードから受信した前記配信データを配信先通信機器に送信するキューノードとを備えるデータ配信システムにおいて利用されるデータ配信方法であって、前記ブローカーノードが、指定された種類の前記配信データの転送先として予め決められている前記キューノードを検出するための転送先検出情報を用いて、前記配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するステップと、前記ブローカーノードが、検出された前記キューノードに前記配信データを送信するステップと、前記キューノードが、前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、前記ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するステップと、前記キューノードが、当該配信先通信機器に配信するための前記配信データを格納する前記配信先通信機器ごとの記憶領域のうち、検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するステップと、を備える。
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるプログラムは、コンピュータを、指定された種類の前記配信データの転送先として予め決められているキューノードを検出するための転送先検出情報を用いて、配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するデータ転送先絞り込み手段、前記データ転送先絞り込み手段によって検出された前記キューノードに前記配信データを送信するデータ転送手段、当該配信先通信機器に配信するための前記配信データを格納する記憶領域を前記配信先通信機器毎に備える記憶手段、前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するデータ配信先決定手段、検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するデータ配信先振り分け手段、として機能させるためのプログラムである。
この発明によれば、データの配信頻度やサブスクライバが増えた場合であっても円滑なデータ配信を実現することができる。
以下、本発明の一実施形態を、図面を参照して説明する。
図1は、本発明の一実施形態に係るデータ配信システム1の構成の一例を示すブロック図である。
図1に示す通り、本実施形態に係るデータ配信システム1は、ブローカーノード100と、複数のキューノード200と、複数のパブリッシャ300と、複数のサブスクライバ400とを備える。
本実施形態に係るデータ配信システム1は、特にあるトピックに対して、データ配信者(パブリッシャ300)により当該トピックに関するデータが配信されたとき、当該トピックを購読するよう登録された任意の数のクライアント(サブスクライバ400)に対して当該データを配送するため、購読する配信データの登録状況や配送の進捗状況を当該データの配信先ごとに管理するようなデータ配送基盤に関する。
ここでトピックとは、サブスクライバ400に対して共通の話題を提供するようなチャンネルである。また、配送の進捗状況とは各サブスクライバ400によってデータの受信状況が異なっても、配信されたデータが正しく配送出来るように設けられる管理機構で、構造は特に決められていないが一般的にはキュー構造が用いられるため、以下の説明では便宜上キューとする。
図1は、本発明の一実施形態に係るデータ配信システム1の構成の一例を示すブロック図である。
図1に示す通り、本実施形態に係るデータ配信システム1は、ブローカーノード100と、複数のキューノード200と、複数のパブリッシャ300と、複数のサブスクライバ400とを備える。
本実施形態に係るデータ配信システム1は、特にあるトピックに対して、データ配信者(パブリッシャ300)により当該トピックに関するデータが配信されたとき、当該トピックを購読するよう登録された任意の数のクライアント(サブスクライバ400)に対して当該データを配送するため、購読する配信データの登録状況や配送の進捗状況を当該データの配信先ごとに管理するようなデータ配送基盤に関する。
ここでトピックとは、サブスクライバ400に対して共通の話題を提供するようなチャンネルである。また、配送の進捗状況とは各サブスクライバ400によってデータの受信状況が異なっても、配信されたデータが正しく配送出来るように設けられる管理機構で、構造は特に決められていないが一般的にはキュー構造が用いられるため、以下の説明では便宜上キューとする。
ブローカーノード100は、データ転送装置101と、データ配信先絞り込み装置102とを備える。
データ転送装置101は、配信データの転送先としてデータ配信先絞り込み装置102によって検出されたキューノード200に、パブリッシャ300から受信した配信データを送信する。このデータ転送装置101は、データ配信先絞り込み装置102によって配信データの転送先として対応付けられているキューノード200が検出された場合、データ転送装置101は、検出したキューノード200に対しては1つの配信データを送信する。例えば、キューノード200を介して配信データを配信するサブスクライバ400が複数ある場合であっても、データ転送装置101は、パブリッシャ300から受信した配信データを複製して各サブスクライバ400に転送することなく、各キューノード200に対して1つの配信データを送信する。これにより、ブローカーノード100とキューノード200間のデータ伝送量を削減することができる。
データ転送装置101は、配信データの転送先としてデータ配信先絞り込み装置102によって検出されたキューノード200に、パブリッシャ300から受信した配信データを送信する。このデータ転送装置101は、データ配信先絞り込み装置102によって配信データの転送先として対応付けられているキューノード200が検出された場合、データ転送装置101は、検出したキューノード200に対しては1つの配信データを送信する。例えば、キューノード200を介して配信データを配信するサブスクライバ400が複数ある場合であっても、データ転送装置101は、パブリッシャ300から受信した配信データを複製して各サブスクライバ400に転送することなく、各キューノード200に対して1つの配信データを送信する。これにより、ブローカーノード100とキューノード200間のデータ伝送量を削減することができる。
データ配信先絞り込み装置102は、例えば、サブスクライバ400によって指定されたトピック(種類)の配信データを要求するキューノード200を検出するための転送先検出情報を用いて、パブリッシャ300から受信した配信データに基づき、受信した配信データの種類の転送先として対応付けられているキューノード200を検出する。このデータ転送装置101は、受信した配信データの種類の転送先として対応付けられているキューノード200を検出した場合、検出結果をデータ転送装置101に出力する。
この転送先検出情報としては、例えば、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とを対応づけるテーブルであってもよく、Bloom filterのようなデータ構造であってもよい。
この転送先検出情報としては、例えば、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とを対応づけるテーブルであってもよく、Bloom filterのようなデータ構造であってもよい。
キューノード200は、データ配信先振り分け装置201と、データ配信先決定装置202と、受信トピック決定装置203と、受信データ格納用キュー204とを備える。
データ配信先振り分け装置201は、データ配信先決定装置202によって、ブローカーノード100から受信した配信データの振り分け先が決定された場合、決定された振り分け先であるサブスクライバ400に対応する受信データ格納用キュー204に、配信データを格納する。
データ配信先振り分け装置201は、データ配信先決定装置202によって、ブローカーノード100から受信した配信データの振り分け先が決定された場合、決定された振り分け先であるサブスクライバ400に対応する受信データ格納用キュー204に、配信データを格納する。
データ配信先決定装置202は、サブスクライバ400から指定された配信データのトピック(種類)を示す配信先指定情報を参照して、ブローカーノード100から受信した配信データのうち、サブスクライバ400から指定されたトピック(種類)の配信データを検索する。サブスクライバ400から指定されたトピック(種類)の配信データを検索により得た場合、データ配信先決定装置202は、それぞれ対応するサブスクライバ400と受信データ格納用キュー204とを示す対応関係情報を参照して、検索により得た配信データの振り分け先である受信データ格納用キュー204を決定する。
配信先指定情報は、例えば、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とをそれぞれ対応づけるテーブルである。
対応関係情報は、例えば、サブスクライバ400を示す情報と、このサブスクライバ400用の記憶領域である受信データ格納用キュー204を示す情報とをそれぞれ対応づけるテーブルである。
配信先指定情報は、例えば、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とをそれぞれ対応づけるテーブルである。
対応関係情報は、例えば、サブスクライバ400を示す情報と、このサブスクライバ400用の記憶領域である受信データ格納用キュー204を示す情報とをそれぞれ対応づけるテーブルである。
受信トピック決定装置203は、サブスクライバ400からユーザが購読を要求するトピックが指定された場合、このトピックを示す情報と、キューノード200を示す情報とをそれぞれ紐付けた情報を、ブローカーノード100に出力する。
受信データ格納用キュー204は、例えば、サブスクライバ400毎、あるいはトピック毎に割り当てられる記憶領域を備える記憶装置である。なお、ここで本発明に接続するとき、サブスクライバが直接的に接続する物理的なノードは当該サブスクライバ用の受信データ格納用キュー204を作れるのであれば、ブローカーノード、キューノードまたは他のノードのどれであっても構わない。
受信データ格納用キュー204は、例えば、サブスクライバ400毎、あるいはトピック毎に割り当てられる記憶領域を備える記憶装置である。なお、ここで本発明に接続するとき、サブスクライバが直接的に接続する物理的なノードは当該サブスクライバ用の受信データ格納用キュー204を作れるのであれば、ブローカーノード、キューノードまたは他のノードのどれであっても構わない。
サブスクライバ400がネットワーク等を介してキューノード200に接続すると、キューノード200に当該サブスクライバ400用の受信データ格納用キュー204が作成される。その後、サブスクライバ400が、どのトピックを購読するかをキューノード200に通知すると、キューノード200のデータ配信先決定装置202に、当該トピックと当該サブスクライバ400用の受信データ格納用キューを紐付ける索引情報(配信先指定情報)が作成される。また、ここで、当該サブスクライバ400用の受信データ格納用キュー204は、トピックごとや優先度ごとに複数作成されても構わない。
そして、キューノード200の受信トピック決定装置202は、ブローカーノード100のデータ配信先絞り込み装置102に、当該トピックの配信データを受け取る旨を通知する。ブローカーノード100のデータ配信先絞り込み装置102は、各トピックについてどのキューノード200に当該トピックに属する配信データを配送するかを記録する。
そして、キューノード200の受信トピック決定装置202は、ブローカーノード100のデータ配信先絞り込み装置102に、当該トピックの配信データを受け取る旨を通知する。ブローカーノード100のデータ配信先絞り込み装置102は、各トピックについてどのキューノード200に当該トピックに属する配信データを配送するかを記録する。
パブリッシャ300がブローカーノード100にネットワーク等を介して接続し、トピック情報が紐付いたデータを送信すると、ブローカーノード100はデータ配信先絞り込み装置102によって絞り込まれた全てのキューノード200に対して、データ転送装置101を用いてトピック情報とともに配信データを転送する。当該配信データを受け取ったキューノード200はデータ配信先決定装置201により、当該トピックを購読しているサブスクライバ400用の受信データ格納用キュー204を確定し、データ配信先振り分け装置201によって当該配信データを当該受信データ格納用キュー204に格納する。
各サブスクライバ400は、任意のタイミングで個別に割り当てられた受信データ格納用キュー204から購読しているトピックに属するデータを読み出す。
各サブスクライバ400は、任意のタイミングで個別に割り当てられた受信データ格納用キュー204から購読しているトピックに属するデータを読み出す。
次に、図2を参照して、本実施形態に係る配信登録処理の一例について説明する。例えば、サブスクライバ400AのユーザAが、トピック1の配信データの購読要求を登録する際の配信登録処理の一例について説明する。図2は、本実施形態に係る配信登録処理の一例を説明するためのシーケンス図である。
(ステップST1)
サブスクライバ400が、ネットワーク等を介してキューノード200に接続する。
(ステップST2)
キューノード200は、サブスクライバ400が接続されると、サブスクライバ400用の受信データ格納用キュー204を作成する。なお、キューノード200は、サブスクライバ400に割り当てられた固有の識別情報(例えば、IPアドレスや無線基地局ID等)を受信することにより、サブスクライバ400を特定することができる。ここで、キューノード200のデータ配信先決定装置202は、サブスクライバ400を示す情報と、このサブスクライバ400用の記憶領域である受信データ格納用キュー204を示す情報とをそれぞれ対応づける対応関係情報を作成し、自身の記憶領域に格納する。
サブスクライバ400が、ネットワーク等を介してキューノード200に接続する。
(ステップST2)
キューノード200は、サブスクライバ400が接続されると、サブスクライバ400用の受信データ格納用キュー204を作成する。なお、キューノード200は、サブスクライバ400に割り当てられた固有の識別情報(例えば、IPアドレスや無線基地局ID等)を受信することにより、サブスクライバ400を特定することができる。ここで、キューノード200のデータ配信先決定装置202は、サブスクライバ400を示す情報と、このサブスクライバ400用の記憶領域である受信データ格納用キュー204を示す情報とをそれぞれ対応づける対応関係情報を作成し、自身の記憶領域に格納する。
(ステップST3)
そして、サブスクライバ400のユーザが、購読を希望するトピックを指定する。例えば、このユーザが、サブスクライバ400の操作部(図示せず)を介して、トピック1の購読を指定する。サブスクライバ400は、この操作入力に基づき、トピック1の購読を希望することを示す情報をキューノード200に送信する。
(ステップST4)
そして、キューノード200の受信トピック決定装置203は、サブスクライバ400からトピック1の購読を希望することを示す情報を受信すると、トピック1の配信データの配信先にサブスクライバ400が含まれていることを示す配信先指定情報を作成し、自身の記憶領域(図示せず)に格納する。この配信先指定情報は、サブスクライバ400によって指定されたトピック1と、サブスクライバ400用の受信データ格納用キュー204とを紐付ける索引情報である。
なお、配信先指定情報(索引情報)の構造は、転置インデックスや木構造などのいずれのものであってもよく、また、サブスクライバ400用の受信データ格納用キュー204は、トピックごとあるいは優先度ごとに複数作成されても構わない。
そして、サブスクライバ400のユーザが、購読を希望するトピックを指定する。例えば、このユーザが、サブスクライバ400の操作部(図示せず)を介して、トピック1の購読を指定する。サブスクライバ400は、この操作入力に基づき、トピック1の購読を希望することを示す情報をキューノード200に送信する。
(ステップST4)
そして、キューノード200の受信トピック決定装置203は、サブスクライバ400からトピック1の購読を希望することを示す情報を受信すると、トピック1の配信データの配信先にサブスクライバ400が含まれていることを示す配信先指定情報を作成し、自身の記憶領域(図示せず)に格納する。この配信先指定情報は、サブスクライバ400によって指定されたトピック1と、サブスクライバ400用の受信データ格納用キュー204とを紐付ける索引情報である。
なお、配信先指定情報(索引情報)の構造は、転置インデックスや木構造などのいずれのものであってもよく、また、サブスクライバ400用の受信データ格納用キュー204は、トピックごとあるいは優先度ごとに複数作成されても構わない。
(ステップST5)
そして、受信トピック決定装置203は、キューノード200がトピック1の配信データの受信を要求することを示す情報をブローカーノード100に出力する。つまり、キューノード200は、受信トピック決定装置203を介して、ブローカーノード100のデータ配信先絞り込み装置102に、サブスクライバ400によって指定されたトピック1の配信データを受け取る旨を通知する。
そして、受信トピック決定装置203は、キューノード200がトピック1の配信データの受信を要求することを示す情報をブローカーノード100に出力する。つまり、キューノード200は、受信トピック決定装置203を介して、ブローカーノード100のデータ配信先絞り込み装置102に、サブスクライバ400によって指定されたトピック1の配信データを受け取る旨を通知する。
(ステップST6)
ブローカーノード100のデータ配信先絞り込み装置102は、各トピックについてどのキューノード200に当該トピックに属する配信データを配送するかを記録する。例えば、データ配信先絞り込み装置102は、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とを対応づけるテーブルである転送先検出情報を作成し、自身の記憶領域(図示せず)に格納する。
また、データ配信先絞り込み装置102は、トピックからキューノード200を特定しなくてはならないが、本発明では厳密な特定を行わず、偽陰性を許容せずかつ偽陽性を許容するフィルタを用いてトピックからキューノード200を検出する。例えば、キューノード200ごとに配送するトピックを示す情報を用いて作成したBloom filterやCounting filterを用意する。データ配信先絞り込み装置102は、パブリッシャ300から受信する配信データに紐付いているトピックを示す情報を用いて、Bloom filterやCounting filterの積分値に合致するキューノード200を求めることが考えられる。また、この偽陰性を許容せずかつ偽陽性を許容するフィルタを階層化するなどの工夫をしても構わない。このような構成を採ることで、空間効率や時間効率を改善させることができ、キューノード200の数が増えても、管理用のメモリ消費を抑えることができる。
ブローカーノード100のデータ配信先絞り込み装置102は、各トピックについてどのキューノード200に当該トピックに属する配信データを配送するかを記録する。例えば、データ配信先絞り込み装置102は、配信データのトピックを示す情報と、このトピックの配信データを配信するキューノード200を示す情報とを対応づけるテーブルである転送先検出情報を作成し、自身の記憶領域(図示せず)に格納する。
また、データ配信先絞り込み装置102は、トピックからキューノード200を特定しなくてはならないが、本発明では厳密な特定を行わず、偽陰性を許容せずかつ偽陽性を許容するフィルタを用いてトピックからキューノード200を検出する。例えば、キューノード200ごとに配送するトピックを示す情報を用いて作成したBloom filterやCounting filterを用意する。データ配信先絞り込み装置102は、パブリッシャ300から受信する配信データに紐付いているトピックを示す情報を用いて、Bloom filterやCounting filterの積分値に合致するキューノード200を求めることが考えられる。また、この偽陰性を許容せずかつ偽陽性を許容するフィルタを階層化するなどの工夫をしても構わない。このような構成を採ることで、空間効率や時間効率を改善させることができ、キューノード200の数が増えても、管理用のメモリ消費を抑えることができる。
次に、図3を参照して、本実施形態に係る配信処理の一例について説明する。例えば、パブリッシャ300がトピック1の配信データを配信する際の配信処理の一例について説明する。図3は、本実施形態に係る配信処理の一例を説明するためのシーケンス図である。
(ステップST11)
パブリッシャ300が、ネットワーク等を介してブローカーノード100に接続する。
(ステップST12)
次いで、パブリッシャ300は、配信する配信データをブローカーノード100に送信する。なお、パブリッシャ300が送信する配信データには、配信データの属するトピックを示すトピック情報が紐付けられている。例えば、パブリッシャ300は、トピック1に属する配信データD1をブローカーノード100に送信する。
(ステップST11)
パブリッシャ300が、ネットワーク等を介してブローカーノード100に接続する。
(ステップST12)
次いで、パブリッシャ300は、配信する配信データをブローカーノード100に送信する。なお、パブリッシャ300が送信する配信データには、配信データの属するトピックを示すトピック情報が紐付けられている。例えば、パブリッシャ300は、トピック1に属する配信データD1をブローカーノード100に送信する。
(ステップST13)
ブローカーノード100は、パブリッシャ300からトピック1に属する配信データD1を受信する。
(ステップST14)
そして、ブローカーノード100はデータ配信先絞り込み装置102は、配信先指定情報を参照して、パブリッシャ300から受信したトピック1に属する配信データD1に基づき、トピック1の配信データの転送先として対応付けられているキューノード200を検出する。
ブローカーノード100は、パブリッシャ300からトピック1に属する配信データD1を受信する。
(ステップST14)
そして、ブローカーノード100はデータ配信先絞り込み装置102は、配信先指定情報を参照して、パブリッシャ300から受信したトピック1に属する配信データD1に基づき、トピック1の配信データの転送先として対応付けられているキューノード200を検出する。
(ステップST15)
例えば、トピック1の配信データの転送先として対応付けられているキューノード200を検出した場合、ブローカーノード100のデータ配信先絞り込み装置102は、検出したキューノード200に配信データD1を転送するようデータ転送装置101に指示する。データ転送装置101は、データ配信先絞り込み装置102によって検出されたキューノード200に、ブローカーノード100から受信した配信データD1を送信する。なお、データ転送装置101は、配信データD1とともにトピック情報もキューノード200に送信する。
例えば、トピック1の配信データの転送先として対応付けられているキューノード200を検出した場合、ブローカーノード100のデータ配信先絞り込み装置102は、検出したキューノード200に配信データD1を転送するようデータ転送装置101に指示する。データ転送装置101は、データ配信先絞り込み装置102によって検出されたキューノード200に、ブローカーノード100から受信した配信データD1を送信する。なお、データ転送装置101は、配信データD1とともにトピック情報もキューノード200に送信する。
(ステップST16)
キューノード200のデータ配信先振り分け装置201は、配信データD1とトピック情報を受信する。
(ステップST17)
次いで、キューノード200のデータ配信先振り分け装置201は、データ配信先決定装置202に記憶されている配信先指定情報を参照して、ブローカーノード100から受信したトピック情報に基づき、キューノード200が有する受信データ格納用キュー204に対応する複数のサブスクライバ400のうち、トピック1の配信データD1の配信先として決められているサブスクライバ400を検索する。すなわち、データ配信先振り分け装置201は、キューノード200が有する複数の受信データ格納用キュー204のうち、トピック1の配信データの配信先として決められているサブスクライバ400に対応づけられている受信データ格納用キュー204を検索する。
キューノード200のデータ配信先振り分け装置201は、配信データD1とトピック情報を受信する。
(ステップST17)
次いで、キューノード200のデータ配信先振り分け装置201は、データ配信先決定装置202に記憶されている配信先指定情報を参照して、ブローカーノード100から受信したトピック情報に基づき、キューノード200が有する受信データ格納用キュー204に対応する複数のサブスクライバ400のうち、トピック1の配信データD1の配信先として決められているサブスクライバ400を検索する。すなわち、データ配信先振り分け装置201は、キューノード200が有する複数の受信データ格納用キュー204のうち、トピック1の配信データの配信先として決められているサブスクライバ400に対応づけられている受信データ格納用キュー204を検索する。
(ステップST18)
トピック1の配信データD1の配信先を検索により得た場合、データ配信先振り分け装置201は、検索により得た配信先のサブスクライバ400に対応する受信データ格納用キュー204に、トピック1の配信データD1を格納する。
ここで、データ配信先決定装置202は、どの受信データ格納用キュー204も購読していないデータを受け取った場合、つまり、トピック1の配信データの配信先を検索により得られなかった場合、そのデータの破棄を行う。
これは、ブローカーノード100のデータ配信先絞り込み装置102が偽陽性を許容するため、どの受信データ格納用キュー204にも紐付いていないトピックに属する配信データもキューノード200に配送されることがあるためである。
(ステップST19)
そして、各サブスクライバ400は任意のタイミングで個別に割り当てられた受信データ格納用キュー204から、購読しているトピックに属する配信データを読み出す。
トピック1の配信データD1の配信先を検索により得た場合、データ配信先振り分け装置201は、検索により得た配信先のサブスクライバ400に対応する受信データ格納用キュー204に、トピック1の配信データD1を格納する。
ここで、データ配信先決定装置202は、どの受信データ格納用キュー204も購読していないデータを受け取った場合、つまり、トピック1の配信データの配信先を検索により得られなかった場合、そのデータの破棄を行う。
これは、ブローカーノード100のデータ配信先絞り込み装置102が偽陽性を許容するため、どの受信データ格納用キュー204にも紐付いていないトピックに属する配信データもキューノード200に配送されることがあるためである。
(ステップST19)
そして、各サブスクライバ400は任意のタイミングで個別に割り当てられた受信データ格納用キュー204から、購読しているトピックに属する配信データを読み出す。
上述の通り、本実施形態に係るデータ配信システム1では、キューノード200中の複数の受信データ格納用キュー204が、それぞれ同一のトピックについての配信データを受け取る場合に、ブローカーノード100は、これら複数の受信データ格納用キュー204があるキューノード200に対して、1つの配信データを送信する。つまり、ブローカーノード100は、キューノード200に配信する配信データを複製せずに、ただ1つだけの配信データを送信する。そして、キューノード200は、必要がある場合に、ブローカーノード100から受信した配信データを複製し、各サブスクライバ400に対応する各受信データ格納用キュー204に格納する。これにより、データ配信システム1では、各受信データ格納用キュー204に格納する配信データの配信をキューノード200毎に纏め上げることができ、ブローカーノード100とキューノード200の間の転送量を削減できるため、性能上のボトルネックを緩和できる。
また、本実施形態に係るデータ配信システム1では、ブローカーノード100が各サブスクライバ400に配信データを配信するのではなく、ブローカーノード100が各キューノード200に配信データを配信するようにした。これにより、ブローカーノード100は、配信データを転送するために必要な情報として、配信する配信データのトピックとキューノード200とを対応付ける情報(転送先検出情報)を記憶領域に格納すれがよい。よって、キューノード200の数より多数となることが想定されるサブスクライバ400とトピックとを対応づける情報を記憶することに比べて、トピックと組み合わせの数を少なくさせることができる。
なお、サブスクライバの数が多くなれば、ブローカーが持つトピックと転送先のサブスクライバの組み合わせの表(データテーブル)のデータ量が増大する。このため、トピック数やサブスクライバが増えたときに、ブローカーの消費メモリが増え、拡張性に対するボトルネックになるという問題があった。本発明によれば、ブローカーノード100が保持しなくてはならないデータ量を削減でき、拡張性に対するボトルネックを解消できる。
なお、サブスクライバの数が多くなれば、ブローカーが持つトピックと転送先のサブスクライバの組み合わせの表(データテーブル)のデータ量が増大する。このため、トピック数やサブスクライバが増えたときに、ブローカーの消費メモリが増え、拡張性に対するボトルネックになるという問題があった。本発明によれば、ブローカーノード100が保持しなくてはならないデータ量を削減でき、拡張性に対するボトルネックを解消できる。
なお、本発明はこれに限られず、以下のような処理を実行するものであってもよい。ブローカーノード100とキューノード200のそれぞれに含まれる機能構成は同様であるため、同一の符号を付して、詳細な説明は省略する。
各機能構成について簡単に説明すると、ブローカーノード100のデータ転送装置101は、キューノード200に配信データを転送する。ブローカーノード100のデータ配信先絞り込み装置102は、配信データを送るべきキューノード200を決定する。
キューノード200のデータ配信先振り分け装置201は、データ配信先決定装置202の決定にしたがって配信データを受信データ格納キュー204に送信する。キューノード200のデータ配信先決定装置202は、ブローカーノード100から受信したデータをトピックに基づいてどの受信データ格納キュー204に配送するべきかを管理する。キューノード200の受信トピック決定装置203は、当該キューノード200が受け取るべきトピックを示す情報(つまり、トピックに対応する配信データを配信するキューノード200を検出するための転送先検出情報)を作成し、ブローカーノード100に送信する。キューノード200の受信データ格納キュー204は、サブスクライバ400によって配信データの受信状況が異なっても配信されたデータが正しく配送出来るように設けられる管理機構である。
ブローカーノード100のデータ配信先絞り込み装置102は、キューノード200によって作成された転送先検出情報を受信し、この転送先検出情報を記憶する。ブローカーノード100のデータ転送先絞り込み装置102は、パブリッシャ300から配信データを受信した場合、転送先検出情報を参照して、受信した配信データのトピックの配信先として決められているキューノード200を検出する。データ転送装置101は、データ転送先絞り込み装置102によってキューノード200が検出された場合、検出されたキューノード200に配信データを送信する。
各機能構成について簡単に説明すると、ブローカーノード100のデータ転送装置101は、キューノード200に配信データを転送する。ブローカーノード100のデータ配信先絞り込み装置102は、配信データを送るべきキューノード200を決定する。
キューノード200のデータ配信先振り分け装置201は、データ配信先決定装置202の決定にしたがって配信データを受信データ格納キュー204に送信する。キューノード200のデータ配信先決定装置202は、ブローカーノード100から受信したデータをトピックに基づいてどの受信データ格納キュー204に配送するべきかを管理する。キューノード200の受信トピック決定装置203は、当該キューノード200が受け取るべきトピックを示す情報(つまり、トピックに対応する配信データを配信するキューノード200を検出するための転送先検出情報)を作成し、ブローカーノード100に送信する。キューノード200の受信データ格納キュー204は、サブスクライバ400によって配信データの受信状況が異なっても配信されたデータが正しく配送出来るように設けられる管理機構である。
ブローカーノード100のデータ配信先絞り込み装置102は、キューノード200によって作成された転送先検出情報を受信し、この転送先検出情報を記憶する。ブローカーノード100のデータ転送先絞り込み装置102は、パブリッシャ300から配信データを受信した場合、転送先検出情報を参照して、受信した配信データのトピックの配信先として決められているキューノード200を検出する。データ転送装置101は、データ転送先絞り込み装置102によってキューノード200が検出された場合、検出されたキューノード200に配信データを送信する。
次に、動作フローについて説明する。
サブスクライバ400がネットワーク等を介してキューノード200に接続すると、キューノード200にサブスクライバ400用の受信データ格納用キュー204が作成される。その後、サブスクライバ400がどのトピックを購読するかをキューノード200に通知すると、キューノード200のデータ配信先決定装置202に、当該トピックと当該サブスクライバ400用の受信データ格納用キュー204を紐付ける配信先指定情報(索引情報)が作成される。また、ここで当該サブスクライバ400用の受信データ格納用キュー204は、トピックごとや優先度ごとに複数作成されても構わない。
そして、当該トピックの配信データを受け取る旨を、キューノード200の受信トピック決定装置203が、ブローカーノード100のデータ配信先絞り込み装置102に通知する。このとき、キューノード200は、受け取るトピック情報を送るのではなく、当該キューノード200が受け取る全てのトピック情報を用いて受信トピック決定装置203が転送先検出情報(例えば、Bloom filterなど)を作成し、その転送先検出情報をブローカーノード100のデータ配信先絞り込み装置102に通知する。
このようにすることで、ブローカーノード100が集中的に転送先検出情報の更新を行う必要がなくなり、代わりに必要なだけ追加できるキューノード200に転送先検出情報の更新処理を任せることができるため、より高い拡張性を期待できる。
サブスクライバ400がネットワーク等を介してキューノード200に接続すると、キューノード200にサブスクライバ400用の受信データ格納用キュー204が作成される。その後、サブスクライバ400がどのトピックを購読するかをキューノード200に通知すると、キューノード200のデータ配信先決定装置202に、当該トピックと当該サブスクライバ400用の受信データ格納用キュー204を紐付ける配信先指定情報(索引情報)が作成される。また、ここで当該サブスクライバ400用の受信データ格納用キュー204は、トピックごとや優先度ごとに複数作成されても構わない。
そして、当該トピックの配信データを受け取る旨を、キューノード200の受信トピック決定装置203が、ブローカーノード100のデータ配信先絞り込み装置102に通知する。このとき、キューノード200は、受け取るトピック情報を送るのではなく、当該キューノード200が受け取る全てのトピック情報を用いて受信トピック決定装置203が転送先検出情報(例えば、Bloom filterなど)を作成し、その転送先検出情報をブローカーノード100のデータ配信先絞り込み装置102に通知する。
このようにすることで、ブローカーノード100が集中的に転送先検出情報の更新を行う必要がなくなり、代わりに必要なだけ追加できるキューノード200に転送先検出情報の更新処理を任せることができるため、より高い拡張性を期待できる。
ブローカーノード100のデータ配信先絞り込み装置102は、各トピックについてどのキューノード200に当該トピックに属する配信データを配送するのかを示す転送先検出情報を受信し、自身の記憶領域に記録する。パブリッシャ300がブローカーノード100にネットワーク等を介して接続し、トピック情報が紐付いた配信データを送信する。トピック情報が紐付いた配信データを受信したブローカーノード100のデータ配信先絞り込み装置102は、転送先検出情報を参照して、トピック情報に基づき、配信データの転送先であるキューノード200を検出する。ブローカーノード100のデータ転送装置101は、検出されたキューノード200に対して、トピック情報とともに配信データを転送する。当該配信データを受け取ったキューノード200は、データ配信先決定装置202により、当該トピックを購読しているサブスクライバ400用の受信データ格納用キュー204を確定し、データ配信先振り分け装置201によってブローカーノード100から受信した当該配信データを当該受信データ格納用キュー204に格納する。
各サブスクライバ400は、任意のタイミングで個別に割り当てられた受信データ格納用キュー204から購読しているトピックに属する配信データを読み出す。
各サブスクライバ400は、任意のタイミングで個別に割り当てられた受信データ格納用キュー204から購読しているトピックに属する配信データを読み出す。
[第2実施形態]
次に、図4を参照して、本実施形態に係るデータ配信システム2の構成の一例を示すブロック図である。
図4に示す通り、本実施形態に係るデータ配信システム2は、ブローカーノード100と、パブリッシャ300とを備える。また、このデータ配信システム2は、複数のキューノード200Aおよびキューノード200Bを備える。さらに、データ配信システム2は、複数のサブスクライバ400A、サブスクライバ400B、サブスクライバ400C、およびサブスクライバ400Dを備える。
ブローカーノード100は、データ転送装置101と、データ配信先絞り込み装置102とを備える。
キューノード200Aは、データ配信先振り分け装置201Aと、データ配信先決定装置202Aと、受信トピック決定装置203Aと、受信データ格納用キュー204Aとを備える。
キューノード200Bは、データ配信先振り分け装置201Bと、データ配信先決定装置202Bと、受信トピック決定装置203Bと、受信データ格納用キュー204Bとを備える。
なお、各機能構成については、第1実施形態に記載の機能構成と同様の機能を有し、同一の名称を付して、詳細な説明は省略する。
次に、図4を参照して、本実施形態に係るデータ配信システム2の構成の一例を示すブロック図である。
図4に示す通り、本実施形態に係るデータ配信システム2は、ブローカーノード100と、パブリッシャ300とを備える。また、このデータ配信システム2は、複数のキューノード200Aおよびキューノード200Bを備える。さらに、データ配信システム2は、複数のサブスクライバ400A、サブスクライバ400B、サブスクライバ400C、およびサブスクライバ400Dを備える。
ブローカーノード100は、データ転送装置101と、データ配信先絞り込み装置102とを備える。
キューノード200Aは、データ配信先振り分け装置201Aと、データ配信先決定装置202Aと、受信トピック決定装置203Aと、受信データ格納用キュー204Aとを備える。
キューノード200Bは、データ配信先振り分け装置201Bと、データ配信先決定装置202Bと、受信トピック決定装置203Bと、受信データ格納用キュー204Bとを備える。
なお、各機能構成については、第1実施形態に記載の機能構成と同様の機能を有し、同一の名称を付して、詳細な説明は省略する。
本実施形態において、サブスクライバ400Aは、トピック1とトピック2についての配信データの購読(配信)を要求するユーザの端末である。サブスクライバ400Bは、トピック2とトピック3についての配信データの購読(配信)を要求するユーザの端末である。サブスクライバ400Cは、トピック1についての配信データの購読(配信)を要求するユーザの端末である。サブスクライバ400Dは、トピック1とトピック4についての配信データの購読(配信)を要求するユーザの端末である。
例えば、サブスクライバ400Aがキューノード200Aに接続すると、キューノード200Aは、サブスクライバ400Aに対応するサブスクライバ400A用の受信データ格納用キュー204Aaを作成する(割り当てる)。
また、サブスクライバ400Bがキューノード200Aに接続すると、キューノード200Aは、サブスクライバ400Bに対応するサブスクライバ400B用の受信データ格納用キュー204Abを作成する(割り当てる)。
さらに、サブスクライバ400Cがキューノード200Bに接続すると、キューノード200Bは、サブスクライバ400Cに対応するサブスクライバ400C用の受信データ格納用キュー204Bcを作成する(割り当てる)。
また、サブスクライバ400Dがキューノード200Bに接続すると、キューノード200Bは、サブスクライバ400Dに対応するサブスクライバ400D用の受信データ格納用キュー204Bdを作成する(割り当てる)。
なお、キューノード200Aは、サブスクライバ400A、400Bに対応する受信データ格納用キュー204Aa、204Abを作成した場合、サブスクライバ400A、400Bと受信データ格納用キュー204Aa、204Abとの対応関係を示す対応関係情報をデータ配信先決定部202Aの記憶領域(図示せず)に格納する。キューノード200Aは、サブスクライバ400C、400Dに対応する受信データ格納用キュー204Bc、204Bdを作成した場合、サブスクライバ400C、400Dと受信データ格納用キュー204Bc、204Bdとの対応関係を示す対応関係情報をデータ配信先決定部202Bの記憶領域(図示せず)に格納する。
また、サブスクライバ400Bがキューノード200Aに接続すると、キューノード200Aは、サブスクライバ400Bに対応するサブスクライバ400B用の受信データ格納用キュー204Abを作成する(割り当てる)。
さらに、サブスクライバ400Cがキューノード200Bに接続すると、キューノード200Bは、サブスクライバ400Cに対応するサブスクライバ400C用の受信データ格納用キュー204Bcを作成する(割り当てる)。
また、サブスクライバ400Dがキューノード200Bに接続すると、キューノード200Bは、サブスクライバ400Dに対応するサブスクライバ400D用の受信データ格納用キュー204Bdを作成する(割り当てる)。
なお、キューノード200Aは、サブスクライバ400A、400Bに対応する受信データ格納用キュー204Aa、204Abを作成した場合、サブスクライバ400A、400Bと受信データ格納用キュー204Aa、204Abとの対応関係を示す対応関係情報をデータ配信先決定部202Aの記憶領域(図示せず)に格納する。キューノード200Aは、サブスクライバ400C、400Dに対応する受信データ格納用キュー204Bc、204Bdを作成した場合、サブスクライバ400C、400Dと受信データ格納用キュー204Bc、204Bdとの対応関係を示す対応関係情報をデータ配信先決定部202Bの記憶領域(図示せず)に格納する。
次に、サブスクライバ400Aがトピック1とトピック2を購読することをキューノード200Aに通知すると、データ配信先決定装置202Aは、サブスクライバ400Aがトピック1とトピック2を購読することを記録する。つまり、キューノード200Aは、トピック1の配信データの配信先とトピック2の配信データの配信先に、サブスクライバ400Aが含まれていることを示す配信先指定情報を作成し、自身の記憶領域(図示せず)に格納する。そして、キューノード200Aの受信トピック決定装置203Aは、キューノード200Aがトピック1とトピック2の配信データの受信を要求することを示す情報を、ブローカーノード100に送信する。
また、サブスクライバ400Bがトピック2とトピック3を購読することをキューノード200Aに通知すると、データ配信先決定装置202Aは、サブスクライバ400Bがトピック2とトピック3を購読することを記録する。つまり、キューノード200Aは、トピック2の配信データの配信先とトピック3の配信データの配信先に、サブスクライバ400Bが含まれていることを示す配信先指定情報を作成し、自身の記憶領域(図示せず)に格納する。そして、キューノード200Aの受信トピック決定装置203Aは、キューノード200Aがトピック2とトピック3の配信データの受信を要求することを示す情報を、ブローカーノード100に送信する。
さらに、サブスクライバ400Cがトピック1を購読することをキューノード200Bに通知すると、データ配信先決定装置202Bは、サブスクライバ400Cがトピック1を購読することを記録する。つまり、キューノード200Bは、トピック1の配信データの配信先に、サブスクライバ400Cが含まれていることを示す配信先指定情報を、自身の記憶領域(図示せず)に格納する。そして、キューノード200Bの受信トピック決定装置203Bは、キューノード200Bがトピック1の配信データの受信を要求することを示す情報を、ブローカーノード100に送信する。
また、サブスクライバ400Dがトピック1とトピック4を購読することをキューノード200Bに通知すると、データ配信先決定装置202Bは、サブスクライバ400Dがトピック1とトピック4を購読することを記録する。つまり、キューノード200Bは、トピック1の配信データの配信先とトピック4の配信データの配信先に、サブスクライバ400Dが含まれていることを示す配信先指定情報を、自身の記憶領域(図示せず)に格納する。そして、キューノード200Bの受信トピック決定装置203Bは、キューノード200Bがトピック1とトピック4の配信データの受信を要求することを示す情報を、ブローカーノード100に送信する。
そして、ブローカーノード100のデータ配信先絞り込み装置102は、キューノード200Aおよびキューノード200Bから受信した情報に基づき、転送先検出情報としてBloom filterを作成する。
例えば、トピック1、トピック2、トピック3、トピック4のそれぞれハッシュ値が、010101、100100、110010、001001であるとする。
データ配信先絞り込み装置102は、キューノード200Aから受信した情報に基づき、キューノード200A用のBloom filter FAを作成する。ここで、ブローカーノード100は、キューノード200Aから、キューノード200Aがトピック1〜3の配信データの受信を要求することを示す情報を受信している。よって、データ配信先絞り込み装置102は、キューノード200Aが受信を要求する全てのトピック1〜3のハッシュ値に基づき、キューノード200A用のBloom filter FAとして、「110111」を作成する。
例えば、トピック1、トピック2、トピック3、トピック4のそれぞれハッシュ値が、010101、100100、110010、001001であるとする。
データ配信先絞り込み装置102は、キューノード200Aから受信した情報に基づき、キューノード200A用のBloom filter FAを作成する。ここで、ブローカーノード100は、キューノード200Aから、キューノード200Aがトピック1〜3の配信データの受信を要求することを示す情報を受信している。よって、データ配信先絞り込み装置102は、キューノード200Aが受信を要求する全てのトピック1〜3のハッシュ値に基づき、キューノード200A用のBloom filter FAとして、「110111」を作成する。
また、データ配信先絞り込み装置102は、キューノード200Bから受信した情報に基づき、キューノード200B用のBloom filter FBを作成する。ここで、ブローカーノード100は、キューノード200Bから、キューノード200Bがトピック1とトピック4の配信データの受信を要求することを示す情報を受信している。よって、データ配信先絞り込み装置102は、キューノード200Bが受信を要求する全てのトピック1、4のハッシュ値に基づき、キューノード200B用のBloom filter FBとして、「011101」を作成する。
図5は、転送先検出情報であるBloom filter FAとBloom filter FBの一例を示す図である。図示に示す通り、データ配信先絞り込み装置102は、キューノード200A、200Bが受信を要求する全てのトピックのハッシュ値に基づき、キューノード200A、200B用のBloom filter FAあるいはBloom filter FBを、それぞれ作成する。
図5は、転送先検出情報であるBloom filter FAとBloom filter FBの一例を示す図である。図示に示す通り、データ配信先絞り込み装置102は、キューノード200A、200Bが受信を要求する全てのトピックのハッシュ値に基づき、キューノード200A、200B用のBloom filter FAあるいはBloom filter FBを、それぞれ作成する。
その後、パブリッシャ300がブローカーノード100に接続し、トピック3に属する配信データD3を送信したとする。ここでブローカーノード100は、配信データD3とあわせて、トピック3を示すトピック情報としてハッシュ値「110010」を受信する。ブローカーノード100のデータ転送装置101は、データ配信先絞り込み装置102に記録されている全てのBloom filter FAおよびBloom filter FBと、トピック情報であるハッシュ値「110010」との照合をそれぞれ行う。
具体的に説明すると、データ転送装置101は、パブリッシャ300から受信したトピック3を示すハッシュ値「110010」と、キューノード200A用のBloom filter FA「110111」との論理積を算出する。そして、データ転送装置101は、算出した論理積がトピック3のハッシュ値と一致するか否かを判定する。一致すると判定した場合、データ転送装置101は、配信データD3をキューノード200Aに送信する。
ここで、トピック3を示すハッシュ値「110010」と、キューノード200A用のBloom filter FA「110111」との論理積は、110010である。つまり、算出した論理積がトピック3のハッシュ値と一致するため、データ転送装置101は、配信データD3をキューノード200Aに送信する。
ここで、トピック3を示すハッシュ値「110010」と、キューノード200A用のBloom filter FA「110111」との論理積は、110010である。つまり、算出した論理積がトピック3のハッシュ値と一致するため、データ転送装置101は、配信データD3をキューノード200Aに送信する。
また、データ転送装置101は、パブリッシャ300から受信したトピック3を示すハッシュ値「110010」と、キューノード200B用のBloom filter FB「011101」との論理積を算出する。トピック3を示すハッシュ値「110010」と、キューノード200B用のBloom filter FB「011101」との論理積は、010000である。つまり、算出した論理積がトピック3のハッシュ値と一致しないため、データ転送装置101は、配信データD3をキューノード200Bに送信しない。
トピック3に属する配信データD3を受信したキューノード200Aのデータ配信先振り分け装置201Aは、データ配信決定装置202Aにピック3を示すトピック情報(ハッシュ値)を出力する。
データ配信決定装置202Aは、自身の記憶領域(図示せず)に格納されている配信先指定情報を参照して、トピック3の配信データの配信先であるサブスクライバ400を検索する。ここで、データ配信決定装置202Aには、トピック1の配信データの配信先とトピック2の配信データの配信先にサブスクライバ400Aが含まれていることを示す配信先指定情報と、トピック2の配信データの配信先とトピック3の配信データの配信先にサブスクライバ400Bが含まれていることを示す配信先指定情報と、が記憶されている。よって、データ配信先決定装置202Aは、この配信先指定情報を参照して、トピック情報に基づき、サブスクライバ400Bがトピック3の配信データの配信先であると判定する。また、データ配信決定装置202Aは、自身の記憶領域(図示せず)に格納されている対応関係情報を参照して、トピック3の配信データの配信先であると判定されたサブスクライバ400Bに対応付けられている受信データ格納用キュー204Abを検出する。
そして、データ配信決定装置202Aは、トピック3の配信データの配信先であると判定されたサブスクライバ400Bに対応付けられている受信データ格納用キュー204Abを示す情報をデータ配信先振り分け装置201Aに出力する。このデータ配信振り分け装置201Aは、データ配信決定装置202Aから入力する情報に基づき、サブスクライバ400Bと対応付けられている受信データ格納用キュー204Abに、トピック3の配信データD3を格納する。
サブスクライバ400Bは任意のタイミングで受信データ格納用キュー204Abから配信データD3を読み出す。
データ配信決定装置202Aは、自身の記憶領域(図示せず)に格納されている配信先指定情報を参照して、トピック3の配信データの配信先であるサブスクライバ400を検索する。ここで、データ配信決定装置202Aには、トピック1の配信データの配信先とトピック2の配信データの配信先にサブスクライバ400Aが含まれていることを示す配信先指定情報と、トピック2の配信データの配信先とトピック3の配信データの配信先にサブスクライバ400Bが含まれていることを示す配信先指定情報と、が記憶されている。よって、データ配信先決定装置202Aは、この配信先指定情報を参照して、トピック情報に基づき、サブスクライバ400Bがトピック3の配信データの配信先であると判定する。また、データ配信決定装置202Aは、自身の記憶領域(図示せず)に格納されている対応関係情報を参照して、トピック3の配信データの配信先であると判定されたサブスクライバ400Bに対応付けられている受信データ格納用キュー204Abを検出する。
そして、データ配信決定装置202Aは、トピック3の配信データの配信先であると判定されたサブスクライバ400Bに対応付けられている受信データ格納用キュー204Abを示す情報をデータ配信先振り分け装置201Aに出力する。このデータ配信振り分け装置201Aは、データ配信決定装置202Aから入力する情報に基づき、サブスクライバ400Bと対応付けられている受信データ格納用キュー204Abに、トピック3の配信データD3を格納する。
サブスクライバ400Bは任意のタイミングで受信データ格納用キュー204Abから配信データD3を読み出す。
トピック3に属する配信データD3を受信したキューノード200Bのデータ配信先振り分け装置201Bは、データ配信決定装置202Bにピック3を示すトピック情報(ハッシュ値)を出力する。
データ配信決定装置202Bは、自身の記憶領域(図示せず)に格納されている配信先指定情報を参照して、トピック3の配信データの配信先であるサブスクライバ400を検索する。ここで、データ配信決定装置202Bには、トピック1の配信データの配信先にサブスクライバ400Cが含まれていることを示す配信先指定情報と、トピック1の配信データの配信先とトピック4の配信データの配信先にサブスクライバ400Dが含まれていることを示す配信先指定情報と、が記憶されている。よって、データ配信先決定装置202Bは、この配信先指定情報を参照して、トピック情報に基づき、トピック3の配信データの配信先がないと判定する。言い換えると、データ配信先決定装置202Bは、トピック3の配信データの配信先として、いずれもサブスクライバ400も検索により得ることができない。データ配信先決定装置202Bは、この判定結果をデータ配信先振り分け装置201Bに出力する。データ配信先振り分け装置201Bは、この判定結果を示す情報を入力し、トピック3の配信データD3を破棄する。
データ配信決定装置202Bは、自身の記憶領域(図示せず)に格納されている配信先指定情報を参照して、トピック3の配信データの配信先であるサブスクライバ400を検索する。ここで、データ配信決定装置202Bには、トピック1の配信データの配信先にサブスクライバ400Cが含まれていることを示す配信先指定情報と、トピック1の配信データの配信先とトピック4の配信データの配信先にサブスクライバ400Dが含まれていることを示す配信先指定情報と、が記憶されている。よって、データ配信先決定装置202Bは、この配信先指定情報を参照して、トピック情報に基づき、トピック3の配信データの配信先がないと判定する。言い換えると、データ配信先決定装置202Bは、トピック3の配信データの配信先として、いずれもサブスクライバ400も検索により得ることができない。データ配信先決定装置202Bは、この判定結果をデータ配信先振り分け装置201Bに出力する。データ配信先振り分け装置201Bは、この判定結果を示す情報を入力し、トピック3の配信データD3を破棄する。
また、本実施の形態に係るブローカーノード100およびキューノード200は、内部にコンピュータシステムを有している。そして、動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいう「コンピュータシステム」とは、CPU及び各種メモリやOS、周辺機器等のハードウェアを含むものである。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、各ステップを実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、また、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、検出対象物の形状情報の推定値を算出する処理を行ってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
なお、本発明の実施の形態の基本的な構成を図示すると図6に示すようなものとなる。すなわち、本発明の一実施形態に係るデータ配信システム1は、配信元通信機器(パブリッシャ300)から配信データを受信するブローカーノード100と、ブローカーノード100から受信した配信データを配信先通信機器(サブスクライバ400)に送信するキューノード200とを備えるデータ配信システムである。このデータ配信システム1において、ブローカーノード100は、指定された種類の配信データの転送先として予め決められているキューノード200を検出するための転送先検出情報を用いて、配信元通信機器から受信した配信データに基づき、受信した配信データの種類の転送先として予め決められているキューノード200を検出するデータ転送先絞り込み装置102と、データ転送先絞り込み装置102によって検出されたキューノード200に配信データを送信するデータ転送装置101とを備える。また、このデータ配信システム1において、キューノード200は、配信先通信機器に配信するための配信データを格納する記憶領域(受信データ格納用キュー204)を配信先通信機器毎に備える記憶装置と、配信先通信機器から指定された配信データの種類を示す配信先指定情報を参照して、ブローカーノード100から受信した配信データのうち、配信先通信機器から指定された種類の配信データを検索するデータ配信先決定装置202と、検索により得られた配信データを、対応する配信先通信機器の記憶領域(受信データ格納用キュー204)に格納するデータ配信先振り分け装置201と、を備える。
100…ブローカーノード
101…データ転送装置
102…データ転送先絞り込み装置
200…キューノード
201…データ配信先振り分け装置
202…データ配信先決定装置
203…受信トピック決定装置
204…受信データ格納用キュー
300…パブリッシャ
400…サブスクライバ
101…データ転送装置
102…データ転送先絞り込み装置
200…キューノード
201…データ配信先振り分け装置
202…データ配信先決定装置
203…受信トピック決定装置
204…受信データ格納用キュー
300…パブリッシャ
400…サブスクライバ
Claims (8)
- 配信元通信機器から配信データを受信するブローカーノードと、前記ブローカーノードから受信した前記配信データを配信先通信機器に送信するキューノードとを備えるデータ配信システムであって、
前記ブローカーノードは、
指定された種類の前記配信データの転送先として予め決められている前記キューノードを検出するための転送先検出情報を用いて、前記配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するデータ転送先絞り込み装置と、
前記データ転送先絞り込み装置によって検出された前記キューノードに前記配信データを送信するデータ転送装置とを備え、
前記キューノードは、
当該配信先通信機器に配信するための前記配信データを格納する記憶領域を前記配信先通信機器毎に備える記憶装置と、
前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、前記ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するデータ配信先決定装置と、
検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するデータ配信先振り分け装置と、
を備えることを特徴とするデータ配信システム。 - 前記キューノードの前記データ配信先振り分け装置は、
前記配信データの種類として同一種類を指定する前記配信先通信機器が複数ある場合、前記ブローカーノードから受信した前記配信データを複製して、当該同一種類を指定する前記配信先通信機器に前記配信データを配信するための前記記憶領域に複製した前記配信データをそれぞれ格納することを特徴とする請求項1に記載のデータ配信システム。 - 前記キューノードは、
前記配信先機器から配信を要求する前記配信データの種類が指定された場合、指定された種類の前記配信データの配信を当該キューノードが要求していることを示す情報を前記ブローカーノードに送信する決定装置をさらに備え、
前記ブローカーノードのデータ転送先絞り込み装置は、
前記キューノードから受信した前記情報に基づき、前記転送先検出情報を作成することを特徴とする請求項1または2に記載のデータ配信システム。 - 前記ブローカーノードは、
前記転送先検出情報として、前記配信データの種類を示す固有の識別情報を入力して当該識別情報に対応する前記配信データを前記キューノードに送信するか否かを判定するためのデータ構造を用いることを特徴とする請求項1から3のうちいずれか一項に記載のデータ配信システム。 - 前記ブローカーノードは、
前記転送先検出情報として、偽陰性を許容せずかつ偽陽性を許容するフィルタを用いることを特徴とする請求項1から4のうちいずれか一項に記載のデータ配信システム。 - 前記ブローカーノードは、
前記転送先検出情報として、偽陰性を許容せずかつ偽陽性を許容するフィルタを階層的化したことを特徴とする請求項1から5のうちいずれか一項に記載のデータ配信システム。 - 配信元通信機器から配信データを受信するブローカーノードと、前記ブローカーノードから受信した前記配信データを配信先通信機器に送信するキューノードとを備えるデータ配信システムにおいて利用されるデータ配信方法であって、
前記ブローカーノードが、
指定された種類の前記配信データの転送先として予め決められている前記キューノードを検出するための転送先検出情報を用いて、前記配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するステップと、
前記ブローカーノードが、
検出された前記キューノードに前記配信データを送信するステップと、
前記キューノードが、
前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、前記ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するステップと、
前記キューノードが、
当該配信先通信機器に配信するための前記配信データを格納する前記配信先通信機器ごとの記憶領域のうち、検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するステップと、
を備えることを特徴とするデータ配信方法。 - コンピュータを
指定された種類の前記配信データの転送先として予め決められているキューノードを検出するための転送先検出情報を用いて、配信元通信機器から受信した前記配信データに基づき、受信した前記配信データの種類の転送先として予め決められている前記キューノードを検出するデータ転送先絞り込み手段、
前記データ転送先絞り込み手段によって検出された前記キューノードに前記配信データを送信するデータ転送手段、
当該配信先通信機器に配信するための前記配信データを格納する記憶領域を前記配信先通信機器毎に備える記憶手段、
前記配信先通信機器から指定された前記配信データの種類を示す配信先指定情報を参照して、ブローカーノードから受信した前記配信データのうち、前記配信先通信機器から指定された種類の前記配信データを検索するデータ配信先決定手段、
検索により得られた前記配信データを、対応する前記配信先通信機器の前記記憶領域に格納するデータ配信先振り分け手段、
として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012180413A JP2014038483A (ja) | 2012-08-16 | 2012-08-16 | データ配信システム、データ配信方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012180413A JP2014038483A (ja) | 2012-08-16 | 2012-08-16 | データ配信システム、データ配信方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014038483A true JP2014038483A (ja) | 2014-02-27 |
Family
ID=50286580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012180413A Pending JP2014038483A (ja) | 2012-08-16 | 2012-08-16 | データ配信システム、データ配信方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014038483A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102015013581A1 (de) | 2014-10-21 | 2016-04-21 | Fanuc Corporation | Numerische Steuerung |
JP2017220132A (ja) * | 2016-06-09 | 2017-12-14 | 富士通株式会社 | 過去情報提供プログラム、過去情報提供方法及び過去情報提供装置 |
JP2018525761A (ja) * | 2015-08-07 | 2018-09-06 | サトリ ワールドワイド リミテッド ライアビリティ カンパニー | スケーラブルなリアルタイムメッセージングシステム |
JPWO2017094774A1 (ja) * | 2015-12-04 | 2018-09-13 | 株式会社リコー | 制御システム、通信制御方法、及びプログラム |
JP2018531472A (ja) * | 2015-08-07 | 2018-10-25 | サトリ ワールドワイド リミテッド ライアビリティ カンパニー | スケーラブルなリアルタイムメッセージングシステム |
WO2019087786A1 (ja) * | 2017-11-06 | 2019-05-09 | 日本電信電話株式会社 | 情報分散記憶システム、方法およびプログラム |
-
2012
- 2012-08-16 JP JP2012180413A patent/JP2014038483A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102015013581B4 (de) | 2014-10-21 | 2021-08-26 | Fanuc Corporation | Numerische Steuerung |
CN105527923A (zh) * | 2014-10-21 | 2016-04-27 | 发那科株式会社 | 数值控制装置 |
JP2016078207A (ja) * | 2014-10-21 | 2016-05-16 | ファナック株式会社 | 指定時刻に加工を中断する数値制御装置 |
DE102015013581A1 (de) | 2014-10-21 | 2016-04-21 | Fanuc Corporation | Numerische Steuerung |
US10018992B2 (en) | 2014-10-21 | 2018-07-10 | Fanuc Corporation | Numerical control device |
CN105527923B (zh) * | 2014-10-21 | 2018-08-24 | 发那科株式会社 | 数值控制装置 |
JP2018525761A (ja) * | 2015-08-07 | 2018-09-06 | サトリ ワールドワイド リミテッド ライアビリティ カンパニー | スケーラブルなリアルタイムメッセージングシステム |
JP2018531472A (ja) * | 2015-08-07 | 2018-10-25 | サトリ ワールドワイド リミテッド ライアビリティ カンパニー | スケーラブルなリアルタイムメッセージングシステム |
JPWO2017094774A1 (ja) * | 2015-12-04 | 2018-09-13 | 株式会社リコー | 制御システム、通信制御方法、及びプログラム |
JP2017220132A (ja) * | 2016-06-09 | 2017-12-14 | 富士通株式会社 | 過去情報提供プログラム、過去情報提供方法及び過去情報提供装置 |
JPWO2019087786A1 (ja) * | 2017-11-06 | 2020-04-02 | 日本電信電話株式会社 | 情報分散記憶システム、方法およびプログラム |
WO2019087786A1 (ja) * | 2017-11-06 | 2019-05-09 | 日本電信電話株式会社 | 情報分散記憶システム、方法およびプログラム |
US11381642B2 (en) | 2017-11-06 | 2022-07-05 | Nippon Telegraph And Telephone Corporation | Distributed storage system suitable for sensor data |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5270697B2 (ja) | publish/subscribeメッセージ・ブローカ | |
CN106031130B (zh) | 具有边缘代理的内容传送网络架构 | |
US8838703B2 (en) | Method and system for message processing | |
CN101449559B (zh) | 分布式存储器 | |
JP2014038483A (ja) | データ配信システム、データ配信方法、およびプログラム | |
US10270726B2 (en) | Selective distribution of messages in a scalable, real-time messaging system | |
US8819080B2 (en) | System and method for collection, retrieval, and distribution of data | |
JP4938074B2 (ja) | リソースの位置情報の要求方法、当該方法のためのユーザノードおよびサーバ | |
CN102333029B (zh) | 一种服务器集群系统中的路由方法 | |
JP5847185B2 (ja) | コンテンツ中心のネットワーク環境でグループ変更に関する情報を用いるコンテンツ共有方法及び装置 | |
US7882248B2 (en) | Content delivering system, server, and content delivering method | |
CN101674257B (zh) | 一种消息存储方法、装置及一种消息处理系统 | |
CN101147380B (zh) | 用于高效扩展p2p网络的方法和装置 | |
KR20130088774A (ko) | 분할 콘텐트 전달 시스템 및 방법 | |
KR20090080051A (ko) | P2p 네트워크에서 가상 피어를 호스팅하는 스폰서 노드, 및 방법 | |
AU2010202782B1 (en) | Cloud data persistence engine | |
CN103338252A (zh) | 一种分布式数据库并发存储虚拟请求机制 | |
CN101673272B (zh) | 搜索信息的方法、系统、装置及垂直搜索引擎注册的方法 | |
US10063663B2 (en) | Subscribing to multiple resources through a common connection | |
Nordström et al. | Haggle: Opportunistic mobile content sharing using search | |
CN103477335A (zh) | 用于内容递送网络的资产管理架构 | |
KR101950050B1 (ko) | 이벤트 데이터 획득을 위한 스케일 아웃 시스템 | |
US20060149826A1 (en) | Index server support to file sharing applications | |
CN114866854B (zh) | 视频接入方式动态分配方法、系统、电子设备和存储介质 | |
US20140025775A1 (en) | Content delivery system and method based on information-centric networking |