(57)【特許請求の範囲】
【請求項１】
ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークに参加可能なノードであって、
前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、
受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継する、中継ノードとして機能させる、
子ノードを、
前記ネットワークに参加可能な前記複数の子ノードの中から、
選出する、
中継ノード選出部を備える、ノード。
【請求項２】
請求項１に記載のノードであって、
前記中継ノード選出部は、上記選出の直近において前記非同期メッセージを発信した子ノードの中から、前記中継ノードとして機能させる上記子ノードを選出する、
ノード。
【請求項３】
請求項１又は２に記載のノードであって、
前記中継ノードとして機能可能な前記子ノードは、前記非同期メッセージの中継に利用可能なバッファを有し、
前記中継ノード選出部は、前記中継ノードとして機能させる上記子ノードの数を、上記選出の直近における前記非同期メッセージの前記ネットワーク全体の発信頻度に基づいて決定する、
ノード。
【請求項４】
請求項３に記載のノードであって、
前記中継ノード選出部は、前記ルートノードのバッファが溢れそうになったら、上記の選出を実行する、
ノード。
【請求項５】
請求項３又は４に記載のノードであって、
前記中継ノード選出部は、前記中継ノードとして機能させる上記子ノードの上記バッファが溢れそうになったら、上記の選出を再実行する、
ノード。
【請求項６】
請求項３〜５の何れかに記載のノードであって、
前記中継ノード選出部は、前記中継ノードとして機能させる上記子ノードの上記バッファが一定時間、利用されなかったら、上記の選出を再実行する、
ノード。
【請求項７】
請求項３〜６の何れかに記載のノードであって、
前記中継ノード選出部は、一定時間毎に、上記の選出を実行する、
ノード。
【請求項８】
ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークにおいて、前記複数の子ノードから前記ルートノード宛に発信された非同期メッセージを前記ルートノードへ向けて中継する、非同期メッセージ中継方法であって、
前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継する、中継ノードとして機能させる子ノードを、前記ネットワークに参加可能な前記複数の子ノードの中から、選出する、中継ノード選出ステップを含む、
非同期メッセージ中継方法。
【請求項９】
ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークに参加可能なノードに、
前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継する、中継ノードとして機能させる、子ノードを、前記ネットワークに参加可能な前記複数の子ノードの中から、選出する、中継ノード選出部としての機能を発揮させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はノード、子ノード、非同期メッセージ中継方法、及び、プログラムに関する。
【背景技術】
【０００２】
近年、携帯電話、ＰＤＡ、及び車載端末などの移動端末が普及し、移動しながら音声や映像などの大容量コンテンツをネットワークを利用して交換したいという要望がユーザの間で高まっている。また、街角監視カメラや、各種センサが生成した情報なども合わせてネットワークに流通させて活用したいといった要望もある。
【０００３】
このような要望に対応するには、特に、様々な種類かつ多量のコンテンツが流通する中において、コンテンツの鮮度を損なわずに、コンテンツの情報をユーザにリアルタイムで届けることが重要となる。
【０００４】
そこで、コンテンツが今どうなっているのか、どう更新されたか、という情報をメタデータとして流通させる更新情報配信システムが重要になる。この更新情報配信システムはコンテンツの更新情報を小さいメッセージに含め、ユーザが利用する利用者装置を論理ツリー構造にして、そのコンテンツの情報を所望するユーザへリアルタイムに配信する。
【０００５】
ところで、昨今、上記のようなメッセージ配信者からユーザへの下り情報流通に加えて、ユーザからメッセージ配信者への上り情報流通も重要となっている。この上り情報流通としては、例えば、現在のコンテンツ情報の配信依頼に関するものや、コンテンツ更新情報の配信の遅延量の報告に関するもの、その他の各種コミュニケーションのためのものなどが考えられる。そして、これらの上り情報流通は、上記の下り情報流通とは非同期に行われるのが実情としてある。
【０００６】
このような上り情報流通と下り情報流通の双方は、一般に、ユーザが利用する複数のクライアントと、メッセージ配信者が利用するサーバと、を例えば特許文献１に開示のようにオーバーレイネットワーク上に構築されたツリー型トポロジや公知のスター型トポロジで接続することで実現されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２９９５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、クライアントからサーバーに非同期に送信されるメッセージとしての非同期メッセージの送信頻度は、非同期であるが故、変動することがある。従って、上記のスター型トポロジで複数のクライアントとサーバーを接続すると、短時間で大量の非同期メッセージがサーバーに送信された場合、非同期メッセージを一時的に蓄積しておくバッファが溢れ、この結果、所謂メッセージ落ちが発生してしまう虞がある。
【０００９】
一方、上記のツリー型トポロジでは、そのツリーの構造に従って非同期メッセージがクライアントからサーバーに向かって順々に転送されるようになっている。そして、各ノードは、サーバーを含む上位のノードのバッファが溢れそうになると、そのバッファ溢れを抑えるように、転送する非同期メッセージをバッファリングするようになっており、もって、各ノードのバッファ溢れが効果的に抑制されるようになっている。しかし、上記のツリー型トポロジでは、ツリーの下位に位置するクライアントからサーバー宛に非同期メッセージを送信しようとすると、ホップ数が大きいので、非同期メッセージがクライアントから発信され、実際にサーバーに到達するまでの時間が長くなってしまう。
【００１０】
本願発明の目的は、子ノードからルートノードへの非同期メッセージの送信に要する時間を短縮することができる、ノード、子ノード、非同期メッセージ中継方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本願発明の第一の観点によれば、ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークに参加可能なノードは、以下のように構成される。即ち、前記ノードは、中継ノードとして機能させる子ノードを前記ネットワークに参加可能な前記複数の子ノードの中から選出する中継ノード選出部を備える。ここで、中継ノードとは、前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継するものである。
【００１２】
本願発明の第二の観点によれば、ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークにおいて、前記複数の子ノードから前記ルートノード宛に発信された非同期メッセージを前記ルートノードへ向けて中継する、非同期メッセージの中継は、以下のような方法で行われる。即ち、前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継する、中継ノードとして機能させる子ノードを、前記ネットワークに参加可能な前記複数の子ノードの中から、選出する、中継ノード選出ステップを含む。
【００１３】
本願発明の第三の観点によれば、ルートノードから複数の子ノードに情報を配信するためにオーバーレイネットワーク上でツリー状に構築されたネットワークに参加可能なノードに、以下の機能を発揮させるプログラムが提供させる。即ち、前記ノードに、前記複数の子ノードのうち何れかから前記ルートノード宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記ルートノードへ向けて中継する場合と比較して少ないホップ数となるように前記ルートノードへ向けて中継する、中継ノードとして機能させる、子ノードを、前記ネットワークに参加可能な前記複数の子ノードの中から、選出する、中継ノード選出部としての機能を発揮させる。
【発明の効果】
【００１４】
本願発明によれば、子ノードからルートノードへの非同期メッセージの送信に要する時間を短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る更新情報配信システム１の構成例を示す概念図である。
【図２】本実施形態の利用者装置１００の構成を示すブロック図である。
【図３】本実施形態の中継装置情報データベース１２１のデータ構成を示す概念図である。
【図４】本実施形態の利用者装置情報データベース１２２のデータ構成を示す概念図である。
【図５】本実施形態のコンテンツ情報データベース１２３のデータ構成を示す概念図である。
【図６】本実施形態の更新情報配信サーバ２００の構成を示すブロック図である。
【図７】本実施形態による利用者装置１００がツリー管理メッセージを受信した場合の動作を示すフローチャートである。
【図８】本実施形態による利用者装置１００が定期的にツリー管理メッセージを送信する場合の動作を示すフローチャートである。
【図９】本実施形態による利用者装置１００が更新情報メッセージを受信した場合の動作を示すフローチャートである。
【図１０】本実施形態による利用者装置１００が中継装置周知メッセージを受信した場合の動作を示すフローチャートである。
【図１１】本実施形態による利用者が非同期メッセージを送信するよう操作した場合の動作を示すフローチャートである。
【図１２】本実施形態による利用者装置１００が定期的に集約済みの非同期メッセージを送信する場合の動作を示すフローチャートである。
【図１３】本実施形態による利用者装置１００が非同期メッセージを受信した場合の動作を示すフローチャートである。
【図１４】本実施形態による利用者装置１００が定期的にバッファ１５３の使用量を確認する場合の動作を示すフローチャートである。
【図１５】本実施形態による利用者装置１００において予め定められた時間中、常にバッファ１５３の利用がなかった場合の動作を示すフローチャートである。
【図１６】本実施形態による更新情報配信サーバ２００内でコンテンツ情報データベース２２３が更新された場合の動作を示すフローチャートである。
【図１７】本実施形態による更新情報配信サーバ２００が非同期メッセージを受信した場合の動作を示すフローチャートである。
【図１８】本実施形態による更新情報配信サーバ２００が定期的にバッファ２４２の使用量を確認する場合の動作を示すフローチャートである。
【図１９】本実施形態による更新情報配信サーバ２００が定期的に中継装置タイマ２４４を動作させる動作を示すフローチャートである。
【図２０】本実施形態による更新情報配信サーバ２００がバッファ状況通知メッセージを受信した場合の動作を示すフローチャートである。
【図２１】本実施形態による中継装置選出の動作を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を、図面を参照して説明する。
【００１７】
図１は、本実施に係る更新情報配信システム１の構成例を示す概念図である。図１において、更新情報配信システム１は、複数の利用者装置１００、１００、…（子ノード）と、更新情報配信サーバ２００（ルートノード）とを有し、論理ネットワーク（オーバーレイネットワーク）を構成している。ある１つのコンテンツに付き１つの更新情報配信システム１が構成されており、複数のコンテンツが存在する場合には、コンテンツ毎に、それぞれ別の更新情報配信システム１が論理ネットワーク上に構成される。
【００１８】
すなわち、更新情報配信システム１を論理ネットワーク上で複数組み合わせることにより、多種多様なコンテンツの更新情報（情報）を、利用者装置１００に配信する大規模なシステムを構築することができる。図１の下の更新情報配信システム１の構成例では、更新情報配信サーバ２００（ノードｎ１０）を頂点とし、更新情報配信サーバ２００の配下に利用者装置１００であるノードｎ８、ノードｎ１１があり、ノードｎ８の配下にノードｎ３及びノードｎ４４、ノードｎ１１の配下にノードｎ２２があるというような、ツリー構造の状態で接続されている。
【００１９】
利用者装置１００は、更新情報配信サーバ２００、もしくは１つまたは複数の利用者装置１００と接続する。各利用者装置１００は、接続している更新情報配信サーバ２００、もしくは１つまたは複数の利用者装置１００から更新情報を受信した場合に、更新情報配信システム１での下流にある利用者装置１００に更新情報を転送する。論理ネットワーク上にある利用者装置１００は、所望するコンテンツを論理ネットワーク上で検索し、そのコンテンツを有する更新情報配信サーバ２００または、そのコンテンツを有する更新情報配信サーバ２００が構成するツリーに接続している利用者装置１００に接続することによって更新情報配信システム１に参加することができる。
【００２０】
さらに利用者装置１００（子ノード）は、更新情報配信サーバ２００（ルートノード）に対して非同期にメッセージを送信することができる。この非同期メッセージは、例えば、ユーザが現在のコンテンツ情報の通知を依頼したり、メッセージ配信システムのリアルタイム性を保証するためにユーザからメッセージ配信の遅延量を通知してもらったり、ユーザからメッセージ配信者へのコミュニケーションのために利用され、更新情報配信サーバ２００へ直接、または、他の利用者装置１００を中継装置（中継ノード）として利用した上で送信される。更新情報配信サーバ２００は、自身へ送られてくる非同期メッセージの傾向を判断して、適宜ひとつまたは複数の利用者装置１００を中継装置として選出する。中継装置として選出された利用者装置１００は、他の利用者装置１００からの非同期メッセージを中継して、更新情報配信サーバ２００へ非同期メッセージを送信する。
【００２１】
図２は、本実施形態の利用者装置１００の構成を示すブロック図である。図２において、利用者装置１００は、主制御部１１０と、ネットワークインターフェイス１２０と、中継装置情報データベース１２１と、利用者装置情報データベース１２２と、コンテンツ情報データベース１２３と、を有する。主制御部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、及びＯＳ（OperatingSystem）などで構成されたコンピュータの主要部であり、主制御部１１０の中に、動作するプログラムとして構成されている送受信部１６０と、更新情報配信システムクライアント部１３０と、非同期通信クライアント部１４０と、中継装置機能部１５０と、を有する。更新情報配信システムクライアント部１３０は、更新情報配信システム１のツリー構造の管理および更新情報メッセージの送受信を実施する機能部で、ツリー管理機能部１３１と、コンテンツクライアント部１３２と、を有する。非同期通信クライアント部１４０は、非同期メッセージの送受信を実施する機能部で、非同期通信機能部１４１と、中継装置選択部１４２と、を有する。中継装置機能部１５０は、更新情報配信サーバ２００から中継装置として選出された場合に中継装置の機能を実施する機能部で、非同期メッセージ集約部１５１と、集約タイマ１５２と、バッファ１５３と、バッファ監視部１５４と、バッファ状況通知部１５５と、を有する。
【００２２】
ここで、まず、中継装置情報データベース１２１と、利用者装置情報データベース１２２と、コンテンツ情報データベース１２３と、のデータ構成について説明する。
【００２３】
図３は、本実施形態の中継装置情報データベース１２１のデータ構成を示す概念図である。中継装置情報データベース１２１は、自装置が参加している更新情報配信システム１における中継装置情報を保存する。中継装置情報とは、中継装置を一意に識別するクライアントＩＤ、ＩＰアドレス、ポート番号など中継装置へ非同期メッセージを送信するために必要な情報である。この中継装置情報には更新情報配信システム１のツリー構造の頂点にある更新情報配信サーバ２００の情報もルートノードとして含まれる。
【００２４】
図４は、本実施形態の利用者装置情報データベース１２２のデータ構成を示す概念図である。利用者装置情報データベース１２２は、コンテンツ情報データベース１２３に保存しているコンテンツ毎に、更新情報配信システム１における利用者装置情報を保存する。利用者装置情報とは、利用者装置１００を一意に識別するクライアントＩＤ、ＩＰアドレス、ポート番号など他の利用者装置１００とメッセージを送受信するために必要な情報であり、更新情報配信システム１のツリー構造において自装置より上及び下にある利用者装置１００の情報である。
【００２５】
図５は、本実施形態のコンテンツ情報データベース１２３のデータ構成を示す概念図である。コンテンツ情報データベース１２３は、自装置が参加している更新情報配信システム１のコンテンツに関するメタデータを保存している。メタデータとは、コンテンツに付随する情報であって、例えば、コンテンツＩＤ、ＵＲＩ、タイトル、作成者、作成場所、作成時間、キーワードなどである。さらにメタデータに加えてコンテンツ本体の情報を保持することもできる。
【００２６】
送受信部１６０は、ネットワークインターフェイス１２０を介して、更新情報配信サーバ２００、または他の利用者装置１００からのメッセージを受信して処理する。送受信部は、受信したメッセージがツリー管理メッセージであった場合には、ツリー管理メッセージをツリー管理機能部１３１へ送る。
【００２７】
また、送受信部１６０は、受信したメッセージが更新情報メッセージであった場合には、更新情報メッセージをコンテンツクライアント部１３２へ送る。
【００２８】
さらに、送受信部１６０は、受信したメッセージが中継装置周知メッセージであった場合には、中継装置周知メッセージを非同期通信機能部１４１へ送る。
【００２９】
さらに、送受信部１６０は、受信したメッセージが非同期メッセージであった場合には、非同期メッセージを非同期メッセージ集約部１５１へ送る。
【００３０】
さらに、送受信部１６０は、ツリー管理機能部１３１、コンテンツクライアント部１３２、非同期通信機能部１４１、非同期メッセージ集約部１５１、バッファ状況通知部１５５からメッセージを受け取り、メッセージに記載されている宛先である更新情報配信サーバ２００、または、他の利用者装置１００にネットワークインターフェイス１２０を介してメッセージを送信する。
【００３１】
ツリー管理機能部１３１は、更新情報配信サーバ２００または、ひとつまたは複数の利用者装置１００とツリー管理メッセージを送受信することによって更新情報配信システム１を管理する。ツリー管理メッセージを受信した場合には、ツリー管理メッセージに記載の更新情報配信サーバ２００または利用者装置１００の利用者装置情報を参照し、利用者装置情報データベース１２２を更新する。また、図２に記載はないが、タイマを利用して定期的に利用者装置情報データベース１２２を参照して、ツリー管理メッセージを作成し、更新情報配信サーバ２００または利用者装置１００に対しツリー管理メッセージを送信する。
【００３２】
コンテンツクライアント部１３２は、更新情報配信サーバ２００または利用者装置１００から更新情報メッセージを受信すると、更新情報メッセージに記載されたメタデータを参照し、コンテンツ情報データベース１２３を更新する。さらに、利用者装置情報データベース１２２を参照し、更新情報配信システム１のツリー構造において自装置より下の利用者装置がひとつまたは複数存在する場合、更新情報メッセージを該当するひとつまたは複数の利用者装置１００に転送する。
【００３３】
非同期通信機能部１４１は、中継装置周知メッセージを受信すると、中継装置周知メッセージに記載の中継装置情報を参照し、中継装置情報データベース１２１を更新する。さらに、利用者装置情報データベース１２２を参照し、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在する場合、中継装置周知メッセージを該当するひとつまたは複数の利用者装置１００に転送する。
【００３４】
さらに、非同期通信機能部１４１は、利用者から非同期通信を実行するように操作されると、中継装置選択部１４２を起動し、非同期メッセージを送信するあて先とする中継装置情報を得る。そして、その中継装置をあて先として非同期メッセージを作成し、非同期メッセージを送信する。
【００３５】
中継装置選択部１４２は、非同期通信機能部１４１からの呼び出しを契機に起動する。中継装置選択部１４２は、中継装置情報データベース１２１を参照し、非同期メッセージを転送すべき中継装置を選択する。中継装置を選択するに際しては、自利用者装置１００の更新情報配信システム１のツリー構造における位置と、中継装置情報データベース１２１に記載のひとつまたは複数の中継装置の位置と、更新情報配信サーバ２００の位置と、を比較することによって中継装置を選択する。例えば、更新情報配信システム１のツリー構造において自利用者装置１００から見て最もホップ数の少ない位置にある中継装置、または更新情報配信サーバ２００を選択し、あるいは更新情報配信システム１のツリー構造において、更新情報配信サーバ２００からのホップ数が極力少ない中継装置を選択する、などがある。
【００３６】
非同期メッセージ集約部１５１は、非同期メッセージを受信すると非同期メッセージを集約処理する。集約処理とは、非同期メッセージを最終的に受信する更新情報配信サーバ２００の負荷を軽減する目的で、例えば、非同期メッセージのヘッダを統一する、統計情報を事前計算する、などがある。この集約処理中に非同期メッセージを受信した場合は、バッファ１５３にメッセージを保存しておき、集約処理が終了次第、バッファ１５３に保存しておいた非同期メッセージの集約処理を実施する。
【００３７】
非同期メッセージ集約部１５１は、集約タイマ１５２からのアラームを契機に、更新情報配信サーバ２００へ集約済みの非同期メッセージを直接的に、換言すれば１ホップで送信する。更に換言すれば、非同期メッセージ集約部１５１は、更新情報配信サーバ２００へ集約済みの非同期メッセージを、ツリーを順々に遡って更新情報配信サーバ２００に中継するよりも少ないホップ数となるように更新情報配信サーバ２００へ向けて中継する。要するに、非同期メッセージ集約部１５１は、更新情報配信サーバ２００へ集約済みの非同期メッセージを更新情報配信サーバ２００へ中継する際、ツリー構造における位置の如何に拘わらず、他の利用者装置１００を一切経由することなく、ダイレクトに更新情報配信サーバ２００へ中継する。
【００３８】
また、非同期メッセージ集約部１５１は、非同期メッセージを送信してきた利用者装置１００の情報を、予め定められた量だけリスト化しておく。このリストはバッファ状況通知部１５５からの呼び出しを受けてリストをバッファ状況通知部１５５に渡す。
【００３９】
バッファ１５３は、非同期メッセージの中継に利用可能なものであって、有限のメッセージ一時保存機能を提供し、非同期メッセージ集約部１５１から、非同期メッセージを受け取り保存する。また非同期メッセージ集約部１５１からの呼び出しを受けて保存していた非同期メッセージを非同期メッセージ集約部１５１へ渡す。
【００４０】
バッファ監視部１５４は、バッファ１５３の利用状況を監視する。バッファ１５３が溢れそうになった場合、具体的には、バッファ１５３の利用量が予め定められた閾値を超えた場合、バッファ状況通知部１５５へその旨を知らせるアラームを出す。また、予め定められた時間（一定時間）中、常にバッファ１５３の利用がなかった場合、バッファ状況通知部１５５へその旨を知らせるアラームを出す。
【００４１】
バッファ状況通知部１５５は、バッファ監視部１５４からの２種のアラームを受けて、バッファ状況通知メッセージにアラーム情報を記載して、更新情報配信サーバ２００へバッファ状況通知メッセージを送信する。ここで、通知されたアラームが、バッファ１５３の利用量が予め定められた閾値を超えた場合のアラームであった場合、バッファ状況通知部は、非同期メッセージ集約部１５１から予め定められた量の直近の非同期メッセージを送信してきた利用者装置１００のリストを受けてバッファ状況通知メッセージに併せて記載する。
【００４２】
図６は、本実施形態の更新情報配信サーバ２００の構成を示すブロック図である。図６において、更新情報配信サーバ２００、主制御部２１０と、ネットワークインターフェイス２２０と、中継装置情報データベース２２１と、利用者装置情報データベース２２２と、コンテンツ情報データベース２２３と、を有する。主制御部２１０は、ＣＰＵ、ＲＡＭ、及びＯＳなどで構成されたコンピュータの主要部であり、主制御部２１０の中に、ＣＰＵ上で実行可能なプログラムによって実現される送受信部２６０と、更新情報配信システムサーバ部２３０と、非同期通信サーバ部２４０と、を有する。更新情報配信システムサーバ部２３０は、更新情報配信システム１のツリー構造の管理および更新情報メッセージの送信を実施する機能部で、ツリー管理機能部２３１と、コンテンツサーバ部２３２と、を有する。非同期通信サーバ部２４０は、非同期メッセージの受信、および中継装置を選出する機能を実施する機能部で、非同期通信処理部２４１と、中継装置管理部２４６と、バッファ２４２と、バッファ監視部２４３と、中継装置タイマ２４４と、中継装置選出部２４５（中継ノード選出部）と、を有する。
【００４３】
更新情報配信サーバ２００における、中継装置情報データベース２２１と、利用者装置情報データベース２２２と、コンテンツ情報データベース２２３は、利用者装置１００の中継装置情報データベース１２１と、利用者装置情報データベース１２２と、コンテンツ情報データベース１２３と同一のデータ構造であるため詳細は説明を省略する。
【００４４】
送受信部２６０は、ネットワークインターフェイス２２０を介して、利用者装置１００からのメッセージを受信して処理する。送受信部２６０は、受信したメッセージがツリー管理メッセージであった場合には、ツリー管理メッセージをツリー管理機能部２３１へ送る。
【００４５】
また、送受信部２６０は、受信したメッセージが非同期メッセージであった場合には、非同期メッセージを非同期通信処理部２４１へ送る。
【００４６】
さらに、送受信部２６０は、受信したメッセージがバッファ状況通知メッセージであった場合には、バッファ状況通知メッセージを中継装置管理部２４６へ送る。
【００４７】
さらに、送受信部２６０は、ツリー管理機能部２３１、中継装置管理部２４６からメッセージを受け取り、メッセージに記載されている宛先である利用者装置１００にネットワークインターフェイス２２０を介してメッセージを送信する。
【００４８】
ツリー管理機能部２３１は、利用者装置１００のツリー管理機能部１３１と同じであるため、詳細な説明を省略する。
【００４９】
コンテンツサーバ部２３２は、利用者からのコンテンツ情報データベース２２３の更新操作を契機として、利用者装置情報データベース２２２を参照し、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在する場合、コンテンツ情報データベース２２３を参照し、更新情報メッセージを作成し、更新情報メッセージを該当するひとつまたは複数の利用者装置１００に送信する。
【００５０】
非同期通信処理部２４１は、非同期メッセージを受信すると非同期メッセージの目的に応じて処理する。非同期メッセージを目的に応じて処理するとは、例えば、更新情報配信サーバ２００の管理者へのメッセージであった場合は、管理者へディスプレイなどのユーザインタフェースを通してメッセージを表示する、あるいは遅延量などの統計情報収集を目的としていた場合は、統計処理を実行する、などがある。この処理中に非同期メッセージを受信した場合は、バッファ２４２にメッセージを保存しておき、処理が終了次第、バッファ２４２に保存しておいた非同期メッセージの処理を実施する。
【００５１】
また、非同期通信処理部２４１は、非同期メッセージを送信してきた利用者装置１００の情報を、予め定められた量だけリスト化しておく。このリストは中継装置選出部からの呼び出しを受けて、リストを中継装置選出部２４５に渡す。
【００５２】
バッファ２４２は、利用者装置１００のバッファ１５３と同じであるため、詳細な説明を省略する。
【００５３】
バッファ監視部２４３は、バッファ２４２の利用状況を監視する。バッファ２４２が溢れそうになったら、具体的には、バッファ２４２の利用量が予め定められた閾値を超えた場合、中継装置選出部２４５へその旨を知らせるアラームを出す。
【００５４】
中継装置タイマ２４４は、中継装置選出部２４５が動作してから、予め定められた時間が経過した場合、即ち、一定時間毎に、中継装置選出部２４５へその旨を知らせるアラームを出す。
【００５５】
中継装置選出部２４５は、バッファ監視部２４３からのアラームを受信した場合、または中継装置タイマ２４４からのアラームを受信した場合、または中継装置管理部２４６からバッファ状況通知メッセージを受信した場合、中継装置選出動作を実施する。
【００５６】
中継装置選出部２４５は、まず、非同期通信処理部２４１から非同期メッセージを送信してきた利用者装置１００の情報のリストを得る。また、利用者装置１００からのバッファ状況通知メッセージを受信していて、そのバッファ状況通知メッセージに同様のリストが記載されていた場合は、リストを統一して、ある一定時間に非同期メッセージを発信した利用者装置１００のリストを作成する。このリストには非同期メッセージを送信してきた利用者装置１００の更新情報配信システム１のツリー構造における位置、および非同期メッセージを送信してきた時刻が記載されている。このリストを非同期メッセージ管理リストと呼ぶ。非同期メッセージ管理リストから、中継装置選出動作の直近における更新情報配信システム１全体の非同期メッセージの発信された頻度（発信頻度）が分かる。更新情報配信サーバ２００および利用者装置１００におけるバッファ量は有限長のための、中継装置選出部２４５は、非同期メッセージの発信頻度に基づいて中継装置の数を決定する。詳しくは、中継装置選出部２４５は、非同期メッセージの発信頻度と、非同期通信処理部２４１の非同期メッセージの処理効率と、から中継装置の数を決定する。例えば、中継装置選出動作の直近における非同期メッセージの発信頻度をａ個/sec、非同期通信処理部２４１が非同期メッセージを処理する効率をｂ個/secとすると、中継装置数mは、
m=β×ａ／ｂ
と計算する。βは余裕度を表すパラメータである。続いて、中継装置選出部２４５は、非同期メッセージ管理リストから中継装置をｍ個、選出する。中継装置選出部は、決定した中継装置の情報を中継装置管理部２４６に通知する。
【００５７】
中継装置選出部２４５が中継装置を選出する方法は、上記のものに限られず、例えば以下のような方法も考えられる。即ち、中継装置選出部２４５は、先ず、更新情報配信システム１のツリー構造を利用者装置１００から受信する利用者装置情報に基づいて把握する。次に、上記の非同期メッセージ管理リストに記載された利用者装置１００のツリー構造における位置に基づいて、利用者装置１００を中継装置数ｍ個分のグループに分ける。ここで、「上記の非同期メッセージ管理リストに記載された利用者装置１００のツリー構造における位置に基づいて」とは、非同期メッセージ管理リストに記載の利用者装置１００が各グループに可及的に均等に所属するように、という意味である。各グループからの非同期メッセージの発信頻度のバラツキを抑えるためである。次に、中継装置選出部２４５は、各グループで中心となる利用者装置１００を選出する。即ち、中継装置選出部２４５は、各グループ内で中継装置として動作させる利用者装置１００を選出する。このとき、中継装置選出部２４５は、同一グループ内に属する複数の利用者装置１００のツリー構造における位置の重心に最も近い利用者装置１００を中継装置として選出する。なお、同一グループ内に属する複数の利用者装置１００のツリー構造における位置に選出の直近における非同期メッセージの発信頻度で重み付けした上で、上記の重心を求めることとしてもよい。このように、同一グループに属する複数の利用者装置１００のツリー構造における位置の重心に最も近い利用者装置１００を中継装置として選出することで、そのグループに属する複数の利用者装置１００から発信された非同期メッセージが中継装置に至るまでのホップ数を効果的に抑えることができる。更に、上記のように重み付けを実施した場合は、非同期メッセージを特に多く発信する利用者装置１００と中継装置との間のホップ数を重点的に抑えることができる。
【００５８】
中継装置管理部２４６は、利用者装置１００からバッファ状況通知メッセージを受信した場合、中継装置選出部２４５にバッファ状況通知メッセージを渡す。
【００５９】
また、中継装置管理部２４６は、中継装置選出部２４５から、中継装置の情報を得た場合、中継装置情報データベース２２１を更新する。さらに、中継装置管理部２４６は、利用者装置情報データベース２２２を参照し、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在する場合、中継装置の情報を記載した中継装置周知メッセージを作成し、中継装置周知メッセージを該当するひとつまたは複数の利用者装置１００に送信する。
【００６０】
次に、本実施形態の動作について説明する。
【００６１】
図７は、本実施形態による利用者装置１００がツリー管理メッセージを受信した場合の動作を示すフローチャートである。動作を開始すると、まず送受信部１６０が他の利用者装置１００、更新情報配信サーバ２００、もしくは利用者装置１００内の主制御部１１０からの通信を待つ状態（以後、アイドル状態という）となる（Ｓ３００）。
【００６２】
利用者装置１００は、アイドル状態（Ｓ３００）中に、ツリー管理メッセージを受信すると（Ｓ３０１）、ツリー管理メッセージに記載の更新情報配信サーバ２００または利用者装置１００の利用者装置情報を参照し、利用者装置情報データベース１２２を更新し（Ｓ３０２）、アイドル状態に戻る（Ｓ３００）。
【００６３】
図８は、本実施形態による利用者装置１００が定期的にツリー管理メッセージを送信する場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、タイマを利用して定期的に利用者装置情報データベース１２２を参照して、ツリー管理メッセージを作成し（Ｓ３１１）、更新情報配信サーバ２００または利用者装置に対しツリー管理メッセージを送信し（Ｓ３１２）、アイドル状態に戻る（Ｓ３００）。
【００６４】
図９は、本実施形態による利用者装置１００が更新情報メッセージを受信した場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、更新情報配信サーバ２００または利用者装置１００から更新情報メッセージを受信すると（Ｓ３２１）、更新情報メッセージに記載されたメタデータを参照し、コンテンツ情報データベース１２３を更新し（Ｓ３２２）、利用者装置情報データベース１２２を参照し（Ｓ３２３）、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在するかどうかを確認する（Ｓ３２４）。Ｓ３２４において、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在した場合、更新情報メッセージを該当するひとつまたは複数の利用者装置１００に転送し（Ｓ３２５）、アイドル状態に戻る（Ｓ３００）。Ｓ３２４において、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつも存在しなかった場合、アイドル状態に戻る（Ｓ３００）。
【００６５】
図１０は、本実施形態による利用者装置１００が中継装置周知メッセージを受信した場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、中継装置周知メッセージを受信すると（Ｓ３３１）、中継装置周知メッセージに記載の中継装置情報を参照し、中継装置情報データベース１２１を更新し（Ｓ３３２）、利用者装置情報データベース１２２を参照し（Ｓ３３３）、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在するかどうかを確認する（Ｓ３３４）。Ｓ３３４において、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在した場合、中継装置周知メッセージを該当するひとつまたは複数の利用者装置１００に転送し（Ｓ３３５）、アイドル状態に戻る（Ｓ３００）。Ｓ３３４において、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつも存在しなかった場合、アイドル状態に戻る（Ｓ３００）。
【００６６】
図１１は、本実施形態による利用者が非同期メッセージを送信するよう操作した場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、利用者から非同期メッセージ作成動作を実行するよう操作されると（Ｓ３４１）、中継装置情報データベース１２１を参照し（Ｓ３４２）、非同期メッセージを転送すべき中継装置を選択し（Ｓ３４３）、その中継装置をあて先として非同期メッセージを作成し（Ｓ３４４）、非同期メッセージを送信し（Ｓ３４５）、アイドル状態に戻る（Ｓ３００）。
【００６７】
図１２は、本実施形態による利用者装置１００が定期的に集約済みの非同期メッセージを送信する場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、集約タイマ１５２が動作すると（Ｓ３５１）、更新情報配信サーバ２００へ、集約済みの非同期メッセージを送信し（Ｓ３５２）、アイドル状態に戻る（Ｓ３００）。
【００６８】
図１３は、本実施形態による利用者装置１００が非同期メッセージを受信した場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、非同期メッセージを受信すると（Ｓ３６１）、非同期メッセージを送信してきた利用者装置１００の情報を、予め定められた量だけリスト化する（Ｓ３６２）。続いて、利用者装置１００は、集約処理中かどうか確認する（Ｓ３６３）。集約処理中であった場合は（Ｓ３６３：ＹＥＳ）、非同期メッセージをバッファ１５３に保存し（Ｓ３６４）、アイドル状態に戻る（Ｓ３００）。集約処理中でなかった場合は（Ｓ３６３：ＹＥＳ）、非同期メッセージを集約処理する（Ｓ３６５）。集約処理が終了した後、バッファを確認し、バッファ１５３に処理待ちメッセージが存在するかどうかを確認する（Ｓ３６６）。バッファ１５３に処理待ちメッセージが存在する場合は（Ｓ３６６：ＹＥＳ）、Ｓ３６５に移行する。バッファ１５３に処理待ちメッセージが存在しない場合は（Ｓ３６６：ＮＯ）、アイドル状態に戻る（Ｓ３００）。
【００６９】
図１４は、本実施形態による利用者装置１００が定期的にバッファ１５３の使用量を確認する場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、定期的にバッファ１５３の使用量を確認し（Ｓ３７１）、バッファ１５３が溢れそうかどうか確認する（Ｓ３７２）。バッファ１５３の利用量が予め定められた閾値を超えた場合（Ｓ３７２：ＹＥＳ）、非同期メッセージを送信してきた利用者装置１００のリストを含むバッファ状況通知メッセージを作成し（Ｓ３７３）、バッファ状況通知メッセージを更新情報配信サーバ２００へ送信し（Ｓ３７４）、アイドル状態に戻る（Ｓ３００）。
【００７０】
図１５は、本実施形態による利用者装置１００において予め定められた時間中、常にバッファ１５３の利用がなかった場合の動作を示すフローチャートである。利用者装置１００は、アイドル状態から（Ｓ３００）、予め定められた時間中、常にバッファ１５３の利用がなかった場合にアラームが動作し（Ｓ３８１）、予め定められた時間中、常にバッファ１５３の利用がなかったという情報を含むバッファ状況通知メッセージを作成し（Ｓ３８２）、バッファ状況通知メッセージを更新情報配信サーバ２００へ送信し（Ｓ３８３）、アイドル状態に戻る（Ｓ３００）。
【００７１】
図１６は、本実施形態による更新情報配信サーバ２００内でコンテンツ情報データベース２２３が更新された場合の動作を示すフローチャートである。動作を開始すると、まず送受信部２６０が他の利用者装置１００、もしくは更新情報配信サーバ２００内の主制御部２１０からの通信を待つ状態（以後、アイドル状態という）となる（Ｓ４００）。
【００７２】
更新情報配信サーバ２００が、ツリー管理メッセージを受信する動作、および定期的にツリー管理メッセージを送信する動作は、図７及び図８に示す利用者装置１００の動作を同じであるため、詳細な説明は省略する。
【００７３】
更新情報配信サーバ２００は、アイドル状態から（Ｓ４００）、利用者からのコンテンツ情報データベース２２３の更新操作を受けると（Ｓ４０１）、コンテンツ情報データベースを更新し（Ｓ４０２）、利用者装置情報データベース２２２を参照し（Ｓ４０３）、更新情報配信システム１のツリー構造において自装置より下の利用者装置がひとつまたは複数存在するかどうか確認する（Ｓ４０４）。更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在する場合（Ｓ４０４：ＹＥＳ）、更新情報メッセージ作成し（Ｓ４０５）、更新情報メッセージを該当するひとつまたは複数の利用者装置１００に送信し（４０６）、アイドル状態に戻る（Ｓ４００）。更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつも存在しなかった場合（Ｓ４０４：ＮＯ）、アイドル状態に戻る（Ｓ４００）。
【００７４】
図１７は、本実施形態による更新情報配信サーバ２００が非同期メッセージを受信した場合の動作を示すフローチャートである。更新情報配信サーバ２００は、アイドル状態から（４００）、非同期メッセージを受信すると（Ｓ４１１）、非同期メッセージを送信してきた利用者装置１００の情報を、予め定められた量だけリスト化する（Ｓ４１２）。続いて、利用者装置１００は、処理中かどうか確認する（Ｓ４１３）。処理中であった場合は（Ｓ４１３：ＹＥＳ）、非同期メッセージをバッファ２４２に保存し（Ｓ４１４）、アイドル状態に戻る（Ｓ４００）。処理中でなかった場合は（Ｓ４１３：ＮＯ）、非同期メッセージを処理する（Ｓ４１５）。処理が終了した後、バッファ２４２を確認し、バッファ２４２に処理待ちメッセージが存在するかどうかを確認する（Ｓ４１６）。バッファ２４２に処理待ちメッセージが存在する場合（Ｓ４１６：ＹＥＳ）、Ｓ４１５に移行する。バッファ２４２に処理待ちメッセージが存在しない場合（Ｓ４１６：ＮＯ）、アイドル状態に戻る（Ｓ４００）。
【００７５】
図１８は、本実施形態による更新情報配信サーバ２００が定期的にバッファ２４２の使用量を確認する場合の動作を示すフローチャートである。更新情報配信サーバ２００は、アイドル状態から（Ｓ４００）、定期的にバッファ２４２の使用量を確認し（Ｓ４２１）、バッファ２４２が溢れそうかどうか確認する（Ｓ４２２）。バッファ２４２の利用量が予め定められた閾値を超えた場合（Ｓ４２２：ＹＥＳ）、中継装置選出処理Ｓ４２３に移行する。バッファ２４２の利用量が予め定められた閾値を超えていない場合（Ｓ４２２：ＮＯ）、アイドル状態に戻る（Ｓ４００）。
【００７６】
図１９は、本実施形態による更新情報配信サーバ２００が定期的に中継装置タイマ２４４を動作させる動作を示すフローチャートである。更新情報配信サーバ２００は、アイドル状態から（Ｓ４００）、前回の中継装置選出動作から、予め定められた時間が経過した場合、中継装置タイマ２４４を動作させ（Ｓ４３１）、中継装置選出処理Ｓ４２３に移行する。
【００７７】
図２０は、本実施形態による更新情報配信サーバ２００がバッファ状況通知メッセージを受信した場合の動作を示すフローチャートである。更新情報配信サーバ２００は、アイドル状態から（Ｓ４００）、バッファ状況通知メッセージを受信すると（Ｓ４４１）、中継装置選出処理Ｓ４２３に移行する。
【００７８】
図２１は、本実施形態による中継装置選出の動作を示すフローチャートである。更新情報配信サーバ２００は、Ｓ４２２、Ｓ４３１、Ｓ４４１から中継装置選出動作に移行する（Ｓ４２３）。更新情報配信サーバ２００は、自サーバへ非同期メッセージを送信した利用者装置１００のリストと、他の中継装置へ非同期メッセージを送信した利用者装置１００のリストと、を統合したリストとなる非同期メッセージ管理リストを作成し（Ｓ４５１）、非同期メッセージの発信頻度（および処理効率）から中継装置の数を決定する（Ｓ４５２）。さらに更新情報配信サーバ２００は、非同期メッセージ管理リストに記載された利用者装置１００の中から利用者装置１００を中継装置として選出し（Ｓ４５３）、中継装置情報データベースを更新し（Ｓ４５４）、利用者装置情報データベース２２２を参照し（Ｓ４５５）、更新情報配信システム１のツリー構造において自装置より下の利用者装置がひとつまたは複数存在するかどうかを確認する（Ｓ４５６）。Ｓ４５６において、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在した場合（Ｓ４５６：ＹＥＳ）、中継装置の情報を記載した中継装置周知メッセージを作成し（Ｓ４５７）、中継装置周知メッセージを該当するひとつまたは複数の利用者装置１００に送信し（Ｓ４５８）、アイドル状態に戻る（Ｓ４００）。Ｓ４５６において、更新情報配信システム１のツリー構造において自装置より下の利用者装置がひとつも存在しなかった場合（Ｓ４５６：ＮＯ）、アイドル状態に戻る（Ｓ４００）。
【００７９】
なお、図７〜２１で説明したフローチャートに係る各ステップの動作内容は、利用者装置１００と更新情報配信サーバ２００とが予め備えるコンピュータ（主制御部）で動作するプログラムとして実行させるように構成することができる。
【００８０】
ここで、上述したフローチャートの動作を具現化した例を図１に基づいて説明する。図１において、中継装置選出部２４５は、ｎ２３、ｎ４４、ｎ１１を中継装置として選出したとする。この場合、ｎ９で発信された非同期メッセージは、最寄りの中継装置であるｎ２３に送信され、ｎ２３は、受信した非同期メッセージを更新情報配信サーバ２００であるｎ１０にダイレクトに送信する。従って、ｎ９で生成された非同期メッセージがｎ１０に至るまでのホップ数は、ツリーをｎ２３、ｎ３、ｎ８と順々に遡って中継される場合よりも少なくなり、即ち、２となる。
【００８１】
同様に、ｎ１８で生成された非同期メッセージは、最寄りの中継装置であるｎ２３にダイレクトに送信され、ｎ２３は、受信した非同期メッセージをｎ１０にダイレクトに送信する。従って、ｎ１８で生成された非同期メッセージがｎ１０に至るまでのホップ数は、ツリーをｎ３、ｎ８と順々に遡って中継される場合よりも少なく、即ち、２となる。
【００８２】
（まとめ：１、９、１０）
以上説明したように上記実施形態において、更新情報配信サーバ２００（ルートノード）から複数の利用者装置１００（子ノード）にコンテンツ更新情報（情報）を配信するためにオーバーレイネットワーク上でツリー状に構築された更新情報配信システム１（ネットワーク）に参加可能なノードの一例としての更新情報配信サーバ２００は、以下のように構成されている。更新情報配信サーバ２００は、中継装置選出部２４５を備える。中継装置選出部２４５は、中継装置（中継ノード）として機能させる利用者装置１００を、前記更新情報配信システム１に参加可能な前記複数の利用者装置１００の中から選出する。中継装置は、前記複数の利用者装置１００のうち何れかから前記更新情報配信サーバ２００宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを前記更新情報配信サーバ２００へ向けて中継する。詳しくは、中継装置は、受信した前記非同期メッセージを、上記ツリーを順々に遡って前記更新情報配信サーバ２００へ向けて中継する場合と比較して少ないホップ数となるように前記更新情報配信サーバ２００へ向けて中継する。以上の構成によれば、利用者装置１００から更新情報配信サーバ２００への非同期メッセージの送信に要する時間を短縮することができる。
【００８３】
なお、更新情報配信サーバ２００から利用者装置１００に配信する情報としては、例示のコンテンツ更新情報に限られず、コンテンツ内容そのものであってもよいし、コンテンツに関する他の情報であってもよい。更に言えば、上記の情報は、コンテンツに関連のない情報であってもよい。
【００８４】
（２）また、中継装置選出部２４５は、上記選出の直近において非同期メッセージを発信した利用者装置１００の中から、前記中継装置として機能させる利用者装置１００を選出する。以上の構成によれば、上記選出前後に非同期メッセージを発信する傾向にある利用者装置１００を前記中継装置とすることができるので、発信元自体が中継装置となるという点で、ホップ数の削減に寄与する。
【００８５】
（３）また、中継装置として機能可能な利用者装置１００は、非同期メッセージの中継に利用可能なバッファ１５３を有する。中継装置選出部２４５は、前記中継装置として機能させる利用者装置１００の数を、上記選出の直近における非同期メッセージの更新情報配信システム１全体の発信頻度に基づいて決定する。以上の構成によれば、非同期メッセージの更新情報配信システム１全体の発信頻度が変動した場合、前記中継装置の数も同様に変動する。一方、各中継装置は、上記の中継に利用可能なバッファを有している。従って、上記受信頻度が変動した場合、ネットワーク全体のバッファの量が増減することとなり、この結果、前記更新情報配信サーバ２００及び各中継装置のバッファ溢れを強力に抑制することできるようになる。
【００８６】
（４）また、中継装置選出部２４５は、前記更新情報配信サーバ２００のバッファ２４２が溢れそうになったら、上記の選出を実行する。以上の構成によれば、更新情報配信サーバ２００のバッファ溢れをダイレクトに抑制することが可能となる。
【００８７】
（５）また、中継装置選出部２４５は、前記中継装置として機能させる利用者装置１００の上記バッファ１５３が溢れそうになったら、上記の選出を再実行する。以上の構成によれば、前記中継装置として機能させる利用者装置１００の上記バッファ溢れをダイレクトに抑制することが可能となる。
【００８８】
（６）また、中継装置選出部２４５は、前記中継装置として機能させる利用者装置１００の上記バッファ１５３が一定時間、利用されなかったら、上記の選出を再実行する。
【００８９】
（７）また、中継装置選出部２４５は、一定時間毎に、上記の選出を実行する。以上の構成によれば、非同期メッセージの更新情報配信システム１全体の発信頻度の変動に対して、更新情報配信システム１全体の非同期メッセージのために利用されるバッファの量が一層敏感に変動することとなる。
【００９０】
（８）また、中継装置として機能する利用者装置１００は、前記複数の利用者装置１００のうち何れかから前記更新情報配信サーバ２００宛に発信された非同期メッセージを受信し、受信した前記非同期メッセージを、集約した上で、前記更新情報配信サーバ２００へ向けて中継する。以上の構成によれば、更新情報配信サーバ２００の処理負荷を軽減することができる。
【００９１】
また、上述した説明では、主に利用者装置１００に対する接続を用いて説明したが、ルートノードとなる更新情報配信サーバ２００も利用者装置１００と同様の子ノードとして動作してもよい。
【００９２】
また、上述した説明では、利用者装置１００の中継装置選択部１４２において、中継装置選択の際に、自利用者装置１００の更新情報配信システム１のツリー構造の位置と中継装置情報データベース１２１に記載のひとつまたは複数の中継装置と更新情報配信サーバ２００の位置を比較することによって、中継装置を選択する、としたが、中継装置選択において、中継装置選択部１４２における中継装置選択の方法を、利用者装置１００のクライアントIDの相関値を利用するようにすることもできる。例えば、中継装置情報データベース１２１に記載のひとつまたは複数の中継装置と更新情報配信サーバ２００のIDと自利用者装置１００のIDの相関値を計算し、最も小さいまたは最も大きい値となる中継装置を選択する、などである。
【００９３】
また、上述した説明では、更新情報配信サーバ２００の中継装置選出部２４５において、中継装置選択は、バッファ監視部２４３からのアラームを受信した場合、または中継装置タイマ２４４からのアラームを受信した場合、または中継装置管理部２４６からバッファ状況通知メッセージを受信した場合、中継装置選出動作を実施する、としたが、予め非同期メッセージの受信状況が予測できる場合は、非同期メッセージの増減を予測して、事前に中継装置選出を実施することもできる。予め非同期メッセージの受信状況が予測できる場合とは、例えば、夜間には非同期メッセージが増える、特定の利用者装置１００が定期的に非同期メッセージを送信してくる、などがある。
【００９４】
また、上述した説明では、利用者装置１００のバッファ状況通知部１５５において、バッファ監視部１５４からの２種のアラームを受けて、バッファ状況通知メッセージにアラーム情報を記載して、更新情報配信サーバ２００へバッファ状況通知メッセージを送信することによって、更新情報配信サーバ２００における中継装置選出動作を実施させる、としたが、利用者装置１００内に更新情報配信サーバ２００の中継装置選出部２４５相当の機能を追加し、利用者装置１００で中継装置の選出を実施することもできる。換言すれば、更新情報配信サーバ２００が中継装置の選出を実行することに代えて、利用者装置１００が中継装置の選出を実行するようにしてもよい。また、更新情報配信サーバ２００に加えて利用者装置１００も中継装置の選出を実行できるようにしてもよい。この場合は、利用者装置による中継装置選出動作の後、選出されたひとつまたは複数の中継装置の情報を更新情報配信サーバ２００へ通知する。選出されたひとつまたは複数の中継装置の情報を通知された更新情報配信サーバ２００は、中継装置情報データベース２２１を更新し、利用者装置情報データベース２２２を参照し、更新情報配信システム１のツリー構造において自装置より下の利用者装置１００がひとつまたは複数存在する場合、中継装置の情報を記載した中継装置周知メッセージを作成し、中継装置周知メッセージを該当するひとつまたは複数の利用者装置１００に送信する。
【００９５】
また、上述した説明では、更新情報配信サーバ２００の中継装置選出部２４５において、中継装置を選出する際に、リストに記載された利用者装置１００の更新情報配信システム１のツリー構造における位置から、利用者装置１００を中継装置数m分のグループに分け、そのグループそれぞれで中心となる利用者装置１００を選出する、と例示したが、中継装置選出を、利用者装置１００のクライアントIDを利用するようにすることもできる。例えば、中継装置選出動作開始時間と、非同期メッセージ管理リストに記載の利用者装置１００のIDとのハッシュ計算結果をソートし、下からまたは上からm個の利用者装置１００を中継装置として選出する、などである。このように、中継装置選出動作開始時間と、非同期メッセージ管理リストに記載の利用者装置１００のIDとのハッシュ計算結果を用いることで、特定の利用者装置を何度も選出するような偏りをなくし、選出動作の度にランダムに利用者装置１００を中継装置として選出することができる。
【００９６】
また、上述した説明では、更新情報配信サーバ２００の中継装置選出部２４５において、中継装置を選出する際に、リストに記載された利用者装置１００の更新情報配信システム１のツリー構造における位置から、利用者装置を中継装置数m分のグループに分け、そのグループそれぞれで、更新情報配信システム１のツリー構造における位置を座標として、重心を計算する、と例示したが、この計算において、前述したように、中継装置候補となっている利用者装置１００のリソース利用状況、ツリー参加経過時間、中継装置稼動経験・時間などで重み付けして計算することもできる。
【００９７】
また、上述した説明では、更新情報配信サーバ２００の中継装置選出部２４５において、中継装置を選出する際に、リストに記載された利用者装置１００の中から中継装置を選出する、としたが、リストに記載された利用者装置１００ではなく、バッファ溢れを起こしそうになった中継装置の更新情報配信システム１のツリー構造における子にあたる利用者装置１００を新たな中継装置として選出することもできる。
【００９８】
また、上述した説明では、中継装置となった利用者装置１００は、集約タイマ１５２からのアラームを契機に、更新情報配信サーバ２００へ、集約済みの非同期メッセージを送信する、としたが、更新情報配信サーバ２００のさらなる負荷軽減のために、中継装置を階層化し、更新情報配信サーバ２００が、集約済みの非同期メッセージを中継する別種の中継装置を選出し、中継装置となった利用者装置１００は、集約タイマ１５２からのアラームを契機に、別種の中継装置へ、集約済みの非同期メッセージを送信する、とすることもできる。即ち、必ずしも、中継装置は、受信した非同期メッセージをダイレクトに更新情報配信サーバ２００に送信する必要はない、ということである。
【００９９】
以上説明したように、更新情報配信サーバ２００または中継装置として選出された利用者装置１００のバッファ１５３が溢れそうになった場合、中継装置として選出された利用者装置のバッファ１５３が一定時間利用されなかった場合、定期的な中継装置見直しの場合に、非同期メッセージを送信してきたノードの更新情報配信システム１のツリー構造における位置と、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させる利用者装置１００を選出し、中継装置として選出された利用者装置１００が、他の利用者装置１００からの非同期メッセージを中継する構成とすることで、利用者装置１００から更新情報配信サーバ２００への非同期メッセージ通信において、複数の利用者装置１００からのメッセージ頻度が大きく変化する場合においても、更新情報配信サーバのバッファ２４２溢れを抑え、かつ少ない転送回数で利用者装置１００から更新情報配信サーバ２００へメッセージを送信できる。
【０１００】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【０１０１】
（付記１）
複数の利用者装置と更新情報配信サーバとをノードとしてコンテンツ毎の論理ネットワークを構成するコンテンツ配信システムであって、利用者装置から更新情報配信サーバへの非同期メッセージを送信する場合において、利用者装置は中継装置として選出された他の利用者装置または更新情報配信サーバを宛先として非同期メッセージを送信し、更新情報配信サーバまたは中継装置として選出された利用者装置の非同期メッセージのためのバッファが溢れそうになった場合、または中継装置として選出された利用者装置のバッファが一定時間利用されなかった場合、または定期的な中継装置見直しの場合に、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させる利用者装置を選出し、中継装置として選出された利用者装置が、他の利用者装置からの非同期メッセージを中継する、ことを特徴とするメッセージ配信システム。
【０１０２】
（付記２）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、中継装置として選出されたノードは、非同期メッセージを受信すると非同期メッセージを集約処理し、集約処理中に非同期メッセージを受信した場合は、バッファに非同期メッセージを保存しておき、集約処理が終了次第、バッファに保存しておいた非同期メッセージの集約処理を実施し、定期的に更新情報配信サーバへ、集約済みの非同期メッセージを送信することを特徴とするノード。
【０１０３】
（付記３）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、中継装置として選出されたノードは、バッファを監視し、バッファ利用量が予め定められた閾値を超えた場合、非同期メッセージを送信してきたノードのリストを含むバッファ状況通知メッセージを更新情報配信サーバに送信し、予め定められた時間中、常にバッファ利用がなかった場合、その旨を知らせるバッファ状況通知メッセージを更新情報配信サーバに送信することを特徴とするノード。
【０１０４】
（付記４）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、ノードは非同期メッセージを受信すると非同期メッセージの目的に応じて処理し、処理中に非同期メッセージを受信した場合は、バッファにメッセージを保存しておき、処理が終了次第、バッファに保存しておいた非同期メッセージの処理を実施することを特徴とするノード。
【０１０５】
（付記５）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、ノードは非同期メッセージ処理のためのバッファを監視し、バッファ利用量が予め定められた閾値を超えた場合、または予め定められた時間が経過した場合、または他の中継装置からバッファ状況通知メッセージを受信した場合において、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させる利用者装置を選出し、中継装置情報データベースを更新し、利用者装置情報データベースを参照し、更新情報配信システムのツリー構造において自ノードより下のノードがひとつまたは複数存在する場合、中継装置の情報を記載した中継装置周知メッセージを作成し、中継装置周知メッセージを該当するひとつまたは複数のノードに送信することを特徴とするノード。
【０１０６】
（付記６）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、中継装置を選出する際に、予め非同期メッセージの受信状況が予測できる場合は、非同期メッセージの増減を予測して、事前に中継装置選出を実施することを特徴とする、請求項５に記載のノード。
【０１０７】
（付記７）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させるノードを選出する際に、非同期メッセージを受信する頻度をａ個/sec、非同期メッセージを処理する効率をｂ個/secとし、余裕度を表すβを用いて、中継装置数mを、
m=β＊ａ／ｂ
と計算し、中継装置数を決定ことを特徴とする、請求項５に記載のノード。
【０１０８】
（付記８）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、ｍ個の中継装置を選出する際に、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置からノードを中継装置数m分のグループに分け、そのグループそれぞれで、更新情報配信システムのツリー構造における位置を座標として、中継装置候補となっているノードのリソース利用状況、ツリー参加経過時間、中継装置稼動経験・時間などで重み付けして、重心を計算することによって中心となるノードを選出することを特徴とする、請求項５に記載のノード。
【０１０９】
（付記９）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、ｍ個の中継装置を選出する際に、非同期メッセージを送信してきたノードのIDと中継装置選出動作開始時間とのハッシュ計算結果をソートし、下からまたは上からm個のノードを中継装置として選出することを特徴とする、請求項５に記載のノード。
【０１１０】
（付記１０）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、ノードは非同期メッセージ処理のためのバッファを監視し、バッファ利用量が予め定められた閾値を超えた場合において、バッファ利用量が予め定められた閾値を超えたノードの更新情報配信システムのツリー構造における子にあたるノードを新たな中継装置として選出するることを特徴とするノード。
【０１１１】
（付記１１）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、更新情報配信サーバへの非同期メッセージを送信する場合に、中継装置情報データベースを参照し、ひとつまたは複数の中継装置または更新情報配信サーバの中から非同期メッセージを転送すべき中継装置または更新情報配信サーバを選択し、その選択した中継装置または更新情報配信サーバをあて先として非同期メッセージを作成し、非同期メッセージを送信することを特徴とするノード。
【０１１２】
（付記１２）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、非同期メッセージを転送すべき中継装置または更新情報配信サーバを選択する際に、自利用者装置の更新情報配信システムのツリー構造の位置とひとつまたは複数の中継装置と更新情報配信サーバの位置を比較し、更新情報配信システムのツリー構造においてもっともホップ数の少ない位置にある中継装置、または更新情報配信サーバを中継装置として選択することを特徴とする、請求項１１に記載のノード。
【０１１３】
（付記１３）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、非同期メッセージを転送すべき中継装置または更新情報配信サーバを選択する際に、自利用者装置の更新情報配信システムのツリー構造の位置とひとつまたは複数の中継装置と更新情報配信サーバの位置を比較し、更新情報配信システムのツリー構造において、更新情報配信サーバからのホップ数が近い利用者装置を中継装置として選択することを特徴とする、請求項１１に記載のノード。
【０１１４】
（付記１４）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードであって、非同期メッセージを転送すべき中継装置または更新情報配信サーバを選択する際に、中継装置情報データベースに記載のひとつまたは複数の中継装置と更新情報配信サーバのIDと自ノードのIDの相関値を計算し、最も小さいまたは最も大きい値となる継装置情報データベースに記載のひとつまたは複数の中継装置と更新情報配信サーバを中継装置として選択することを特徴とする、請求項１１に記載のノード。
【０１１５】
（付記１５）
複数の利用者装置と更新情報配信サーバとをノードとしてコンテンツ毎の論理ネットワークを構成するコンテンツ配信方法であって、利用者装置から更新情報配信サーバへの非同期メッセージを送信する場合において、利用者装置は中継装置として選出された他の利用者装置または更新情報配信サーバを宛先として非同期メッセージを送信するステップと、更新情報配信サーバまたは中継装置として選出された利用者装置の非同期メッセージのためのバッファが溢れそうになった場合、または中継装置として選出された利用者装置のバッファが一定時間利用されなかった場合、または定期的な中継装置見直しの場合に、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させる利用者装置を選出するステップと、中継装置として選出された利用者装置が、他の利用者装置からの非同期メッセージを中継するステップとを含むこと、を特徴とするメッセージ配信方法。
【０１１６】
（付記１６）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、ノードは更新情報配信サーバから中継装置周知メッセージ受信すると、中継装置周知メッセージに記載の中継装置情報を参照する機能と、中継装置情報データベースを更新する機能と、利用者装置情報データベースを参照する機能と、更新情報配信システムのツリー構造において自ノードより下のノードがひとつまたは複数存在する場合、中継装置周知メッセージを該当するひとつまたは複数のノードに転送する機能と、利用者から非同期通信を実行するように操作されると、中継装置情報データベースを参照する機能と、自ノードの更新情報配信システムのツリー構造の位置と中継装置情報データベースに記載のひとつまたは複数の中継装置と更新情報配信サーバの位置を比較することによって、中継装置を選択する機能と、その中継装置をあて先として非同期メッセージを作成する機能と、非同期メッセージを送信する機能と、を実行させることを特徴とするプログラム。
【０１１７】
（付記１７）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、中継装置として選出された場合に、非同期メッセージを受信すると非同期メッセージを集約処理する機能と、集約処理中に非同期メッセージを受信した場合は、バッファに非同期メッセージを保存しておく機能と、集約処理が終了次第、バッファに保存しておいた非同期メッセージの集約処理を実施する機能と、定期的に更新情報配信サーバへ、集約済みの非同期メッセージを送信する機能と、を実行させることを特徴とするプログラム。
【０１１８】
（付記１８）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、中継装置として選出された場合に、バッファを監視する機能と、バッファ利用量が予め定められた閾値を超えた場合、非同期メッセージを送信してきたノードのリストを含むバッファ状況通知メッセージを更新情報配信サーバに送信する機能と、予め定められた時間中、常にバッファ利用がなかった場合、その旨を知らせるバッファ状況通知メッセージを更新情報配信サーバに送信する機能と、を実行させることを特徴とするプログラム。
【０１１９】
（付記１９）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、非同期メッセージを受信すると非同期メッセージの目的に応じて処理する機能と、処理中に非同期メッセージを受信した場合は、バッファにメッセージを保存しておく機能と、処理が終了次第、バッファに保存しておいた非同期メッセージの処理を実施する機能と、を実行させることを特徴とするプログラム。
【０１２０】
（付記２０）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、非同期メッセージ処理のためのバッファを監視する機能と、バッファ利用量が予め定められた閾値を超えた場合、または予め定められた時間が経過した場合、または他の中継装置からバッファ状況通知メッセージを受信した場合において、非同期メッセージを送信してきたノードの更新情報配信システムのツリー構造における位置と、非同期メッセージを送信した時間と、非同期メッセージを処理する効率から、中継装置として動作させる利用者装置を選出する機能と、中継装置情報データベースを更新する機能と、利用者装置情報データベースを参照する機能と、更新情報配信システムのツリー構造において自装置より下のノードがひとつまたは複数存在する場合、中継装置の情報を記載した中継装置周知メッセージを作成する機能と、中継装置周知メッセージを該当するひとつまたは複数のノードに送信する機能と、を実行させることを特徴とするプログラム。
【０１２１】
（付記２１）
コンテンツ毎に論理ネットワークを構成する複数の利用者装置と更新情報配信サーバとを含むノードを制御するコンピュータに、更新情報配信サーバへの非同期メッセージを送信する場合に、中継装置情報データベースを参照する機能と、ひとつまたは複数の中継装置または更新情報配信サーバの中から非同期メッセージを転送すべき中継装置または更新情報配信サーバを選択する機能と、その選択した中継装置または更新情報配信サーバをあて先として非同期メッセージを作成する機能と、非同期メッセージを送信する機能と、を実行させることを特徴とするプログラム。
【符号の説明】
【０１２２】
１  更新情報配信システム
１００  利用者装置
１１０  主制御部
１２０、２２０  ネットワークインタフェース
１２１、２２１  中継装置情報データベース
１２２、２２２  利用者装置情報データベース
１２３、２２３  コンテンツ情報データベース
１３０  更新情報配信システムクライアント部
１３１、２３１  ツリー管理機能部
１３２  コンテンツクライアント部
１４０  非同期通信クライアント部
１４１  非同期通信機能部
１４２  中継装置選択部
１５０  中継装置機能部
１５１  非同期メッセージ集約部
１５２  集約タイマ
１５３、２４２  バッファ
１５４、２４３  バッファ監視部
１５５  バッファ状況通知部
１６０、２６０  送受信部
２００  更新情報配信サーバ
２１０  主制御部
２３０  更新情報配信システムサーバ部
２３２  コンテンツサーバ部
２４０  非同期通信サーバ部
２４１  非同期通信処理部
２４４  中継装置タイマ
２４５  中継装置選出部
２４６  中継装置管理部
【図１】
0005434558.tif 000002
【図２】
0005434558.tif 000003
【図３】
0005434558.tif 000004
【図４】
0005434558.tif 000005
【図５】
0005434558.tif 000006
【図６】
0005434558.tif 000007
【図７】
0005434558.tif 000008
【図８】
0005434558.tif 000009
【図９】
0005434558.tif 000010
【図１０】
0005434558.tif 000011
【図１１】
0005434558.tif 000012
【図１２】
0005434558.tif 000013
【図１３】
0005434558.tif 000014
【図１４】
0005434558.tif 000015
【図１５】
0005434558.tif 000016
【図１６】
0005434558.tif 000017
【図１７】
0005434558.tif 000018
【図１８】
0005434558.tif 000019
【図１９】
0005434558.tif 000020
【図２０】
0005434558.tif 000021
【図２１】
0005434558.tif 000022