[1.第1実施形態]
以下、本発明の第1実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は、配信する情報を音楽データや映像データなどのコンテンツデータとした情報配信システムに対して本発明を適用した場合の実施形態である。
[1.1.情報配信システムの概要]
図1に示すように、第1実施形態に係る情報配信システムSは、当該情報配信システムSを利用する複数のユーザの端末装置(以下、「ユーザ端末10」という。)と、これらユーザ端末10からの配信要求に応じたコンテンツ情報を、その配信要求を送信してきたユーザ端末10へ送信する複数台の配信サーバ1、2、3、4とを備えている。
これら複数のユーザ端末10、配信サーバ1、2、3、4は、それぞれ情報通信回線を介して接続されて、相互に情報を送受信可能なネットワークを構築している。
各配信サーバ1、2、3、4は、それぞれ複数のコンテンツ情報を記憶する記憶装置(データストレージ)を備えており、コンテンツ投入装置11(図11参照)により当該情報配信システムSに投入されるコンテンツ情報を各データストレージ内に保持(記憶)するように構成している。
すなわち、この情報配信システムSでは、複数台の配信サーバ1、2、3、4のデータストレージ群により巨大な仮想ストレージを構築している。
そのため、情報配信システムSでは、比較的安価な配信サーバ1、2、3、4を増設するだけで、仮想ストレージの記憶容量を容易に増大させることができるので、膨大な量のコンテンツ情報を1台で保持及び管理可能な、大規模なストレージを備えた高性能且つ高価な配信サーバを設ける必要がない。そのため、この情報配信システムSに投入するコンテンツ情報の量が膨大になった場合に、設備費が大幅に増大することがない。
さらに、この情報配信システムSでは、同一種類のコンテンツ情報を少なくとも2台以上の配信サーバ1、2、3、4に保持させておくことにより、仮に複数の配信サーバ1、2、3、4のうち、一部の配信サーバがメンテナンスや故障等によりコンテンツ情報を配信不可能な状態になっても、当該情報配信システムSに投入されたコンテンツ情報の中で、一部のコンテンツ情報が配信できなくなるといった問題が発生することを予防するように構成している。
また、各配信サーバは、後述の分散ハッシュテーブル(以下、「DHT」と呼ぶ。)を利用したアルゴリズムによって、配信サーバ1、2、3、4間で独自のネットワーク(以下、「サーバ間DHTネットワークSD」という。)を構築しており、それぞれの配信サーバがサーバ間用DHTを保持している。
また、各ユーザ端末10は、配信サーバ1、2、3、4から受信したコンテンツ情報を記憶するデータストレージと、各配信サーバ1、2、3、4に割り当てられた固有のサーバ識別情報とその配信サーバ1、2、3、4の所在情報とが記載されたサーバマシンリストとを備えている。
そして、この情報配信システムSでは、ユーザが自身のユーザ端末10を情報通信回線に接続することによって、当該情報配信システムSに参加し、所定の配信サーバ1、2、3、4へ所望のコンテンツ情報の配信要求を送信すると、その配信要求がサーバ間DHTネットワークSDを介して、ユーザが所望するコンテンツ情報を保持している配信サーバ1、2、3、4まで転送され、その配信サーバ1、2、3、4から所望のコンテンツ情報の配信を受けることができるように構成している。
特に、この情報配信システムSは、各コンテンツ情報を保持している配信サーバ1、2、3、4の台数を管理及び調整する調整サーバ5を備えている。
この調整サーバ5は、各コンテンツ情報毎に、そのコンテンツ情報を保持している配信サーバ1、2、3、4の台数を検出する検出手段を備えており、この検出手段による検出結果に応じて、各コンテンツ情報を保持している配信サーバ1、2、3、4の台数を調整するものである。
そして、本実施形態の情報配信システムSでは、この調整サーバ5により、仮想ストレージ内に保持されているコンテンツ情報の種類及び数を均等に保つことによって、当該情報配信システムSに投入した全てのコンテンツ情報を配信可能に保障するように構成している。
すなわち、この情報配信システムSにおいて、仮想ストレージを構成する配信サーバ1、2、3、4のうち、1台がコンテンツ情報を配信できない状態になった場合、仮想ストレージ内で一部のコンテンツ情報の数が減少して、コンテンツ情報の数に偏りが生じるが、調整サーバ5が減少した種類のコンテンツ情報を増加させるので、仮想ストレージ内に保持されているコンテンツ情報の種類及び数を均等に保つことができ、これにより、たとえば、配信サーバ1、2、3、4の故障等により、同じコンテンツ情報を保持している配信サーバ1、2、3、4が次々にコンテンツ情報を配信不可能な状態になって、一部のコンテンツ情報がユーザ端末10へ配信できなくなるといった問題の発生を防止することができる。
また、一旦コンテンツ情報を配信不可能な状態になった配信サーバ1、2、3、4が、この情報配信システムSシステムに復帰した場合には、それに伴い、仮想ストレージ内で一部のコンテンツ情報の数が増加するが、この情報配信システムSでは、調整サーバ5が増加したコンテンツ情報を保持する配信サーバ1、2、3、4の数を減少させるように調整するので、仮想ストレージ内に同じ種類のコンテンツ情報が不必要に保持されることを防止することができる。
[1.2.調整サーバによるコンテンツ情報の重複数調整方法]
ここで、調整サーバ5が各コンテンツ情報を保持する配信サーバ1、2、3、4の数を調整することによって、仮想ストレージ内におけるコンテンツ情報の重複数を調整する方法について説明する。
図2〜図7は、調整サーバによるコンテンツ情報の重複数調整方法を示す説明図である。
本実施形態では、情報配信システムSに、A、B、C、Dという4種類のコンテンツ情報(以下、それぞれ「データA、データB、データC、データD」という。)が投入されている場合を例に挙げて説明する。
また、各データA、B、C、Dには、それぞれ各コンテンツ情報を識別するための固有のコンテンツ識別情報(以下、「データID」という。)が割り当てられており、ここでは、データAのデータIDをA1、データBのデータIDをB1、データCのデータIDをC1、データDのデータIDをD1としている。
また、ここでは、仮想ストレージ内に存在する同一のコンテンツ情報の理想的な数(以下、「理想数」という。)を「2」(重複数「1」)としており、調整サーバ5は、情報配信システムS内に、同じコンテンツ情報を保持している配信サーバ1、2、3、4が2台存在するように調整する。
各配信サーバ1、2、3、4には、それぞれ固有のサーバ識別情報(以下、「マシンID」という。)が割り当てられている。マシンIDとしては、各配信サーバ1、2、3、4固有の製造番号(例えば、MACアドレス)を用いることができるが、ここでは、説明を簡単にするため、配信サーバ1のマシンIDを1a、配信サーバ2のマシンIDを2a、配信サーバ3のマシンIDを3a、配信サーバ4のマシンIDを4aとして説明する。
また、各配信サーバ1、2、3、4は、それぞれネットワーク上における固有の所在情報(以下、「アドレス」という。)を有している。アドレスとしては、一般にインターネット等で使用されるIPアドレスを用いることができるが、ここでは、説明を簡単にするため、配信サーバ1のアドレスを1b、配信サーバ2のアドレスを2b、配信サーバ3のアドレスを3b、配信サーバ4のアドレスを4bとして説明する。
さらに、各配信サーバ1、2、3、4は、それぞれ特定(複数でもよい)のコンテンツ情報を管理している。ここで、「管理」とは、後に詳述するがコンテンツ情報を保持していることを意味するのではなく、「特定のコンテンツ情報について、そのコンテンツ情報が何れの配信サーバ1、2、3、4に保持されているかを知っている」ことを意味する。
以下、特定のコンテンツ情報を管理している配信サーバ1、2、3、4を、そのコンテンツ情報のルートノードともいう。なお、ルートノードとなっている配信サーバ1、2、3、4がサーバ間DHTネットワークSDから離脱した場合、サーバ間DHTネットワークSDにおいて、離脱した配信サーバ1、2、3、4とネットワーク上で最も近い配信サーバ1、2、3、4が、前記離脱した配信サーバ1、2、3、4が管理していたコンテンツ情報のルートノードとなり、離脱した配信サーバ1、2、3、4が再度サーバ間DHTネットワークSDに復帰した場合には、離脱前に管理していたコンテンツ情報のルートノードに戻るように構成している。
そして、ルートノード(配信サーバ1、2、3、4)は、自装置が管理しているコンテンツ情報の種類と、そのコンテンツ情報を保持している配信サーバ1、2、3、4のアドレスとを対応付けたインデックス情報と、各配信サーバ1、2、3、4間での各種メッセージの転送に用いるサーバ間用DHTとを保持している。
今、図2に示す状態において、配信サーバ1は、データAとデータBとを保持しており、配信サーバ2は、データBとデータCとを保持しており、配信サーバ3は、データCとデータDとを保持しており、配信サーバ4は、データDとデータAとを保持している。
調整サーバ5は、コンテンツ情報の配信が可能な状態となっている全ての配信サーバ1、2、3、4(サーバ間DHTネットワークSDに参加している配信サーバ)毎に、その配信サーバ1、2、3、4のマシンIDとアドレスと、その配信サーバ1、2、3、4が保持しているコンテンツ情報のデータIDとを対応付けた調整テーブルを保持している。
そして、調整サーバ5は、コンテンツ情報の配信が可能な状態となっている全ての配信サーバ1、2、3、4へ、所定周期で定期的にインデックス情報の送信を要求するインデックス情報送信依頼T1を送信する。
各配信サーバ1、2、3、4は、調整サーバ5からインデックス情報送信依頼T1を受信すると、自装置が管理しているコンテンツ情報のインデックス情報T2を調整サーバ5へ送信する。
そして、調整サーバ5は、各配信サーバ1、2、3、4から受信したインデックス情報T2に基づいて、定期的に調整テーブルを更新することにより、当該情報配信システムSで配信可能なコンテンツ情報の数を管理する。
ここで、図3に示すように、配信サーバ1が故障等、何らかの原因によりサーバ間DHTネットワークSDから離脱すると、配信サーバ1が保持しているデータA及びデータBが仮想ストレージ上に存在しなくなる。
調整サーバ5は、離脱した配信サーバ1以外の配信サーバから受信したインデックス情報を用いて調整テーブルを図4に示すように更新する。
このとき、図4に示すように、情報配信システムSでは、仮想ストレージ内に、データAとデータBが1つずつしか存在せず、理想数の2よりも少ない状態となっている。
そのため、調整サーバ5は、調整テーブルを参照して、現在、データAを保持している配信サーバ4に、データAの複製を要求する複製要求T3を送信すると共に、現在データBを保持している配信サーバ2へ、データBの複製を要求する複製要求T6を送信する。
配信サーバ4は、複製要求T3を受信すると、データAを複製すると共に、複製したデータAを他の配信サーバ3へ送信する。また、配信サーバ2は、複製要求T6を受信すると、データBを複製すると共に、複製したデータBを他の配信サーバ4へ送信する。
ここでは、調整サーバ5が複製要求を送信し、その複製要求を受信した配信サーバ2、4がコンテンツ情報を複製して、他の配信サーバ3、4へ複製したコンテンツ情報を送信するように構成しているが、調整サーバ5からデータAを保持していない配信サーバ3へ、データAを保持している配信サーバ4のアドレス4bと共に、その配信サーバ4からデータAを受信して保持するように保持要求を送信し、同じく、データBを保持してない配信サーバ4へ、データBを保持している配信サーバ2のアドレス2bと共に、その配信サーバ2からデータBを受信して保持するように保持要求を送信するように構成してもよい。
かかる構成とした場合、配信サーバ3は、配信サーバ4からデータAを受信して保持し、配信サーバ4は、配信サーバ2からデータBを受信して保持する。
その後、図5に示すように、新たにデータAを保持した配信サーバ3は、自装置がデータAを保持したことを示すデータ作成通知T8を調整サーバ5へ送信し、新たにデータBを保持した配信サーバ4は、データBを保持したことを示すデータ作成通知T9を調整サーバ5へ送信する。
調整サーバ5は、これらデータ作成通知T8、T9を受信すると、そのデータ作成通知T8、T9に基づいて、図5に示すように調整テーブルを更新する。
こうして、調整サーバ5が数の減少したデータA及びデータBを複製させて他の配信サーバ3、4に保持させることによって、図5に示すように、仮想ストレージ上に全てのコンテンツ情報が2つ存在する状態に戻すようにしている。
その後、図6に示すように、一旦サーバ間DHTネットワークSDを離脱していた配信サーバ1が再度サーバ間DHTネットワークSDに復帰した場合、調整サーバ5は、定期的に行うインデックス情報送信依頼T1の送信と、インデックス情報T2の受信とにより、調整テーブルを更新する。
この場合、情報配信システムSでは、図6に示すように、データAとデータBが仮想ストレージ上に3つずつ存在して、理想数の2よりも多い状態となっている。
そのため、調整サーバ5は、調整テーブルを参照して、図7に示すように、現在データAを保持している配信サーバ3にデータAの削除要求T10を送信すると共に、現在データBを保持している配信サーバ4へデータBの削除を要求する削除要求T11を送信する。
このとき、削除要求T10、T11の送信先として選択する配信サーバ1、2、3、4としては、重複数が理想数よりも多いコンテンツ情報を保持している任意の配信サーバ1、2、3、4とすることができるが、好ましくは、保持しているコンテンツ情報の総数が多い配信サーバ1、2、3、4を選択する。
こうすることにより、各配信サーバ1、2、3、4が保持するコンテンツ情報の量を略均等にすることができるので、一部の配信サーバ1、2、3、4にコンテンツ情報が集中して処理負荷が増大することを防止することができる。
その後、削除要求T10を受信した配信サーバ3がデータAを削除し、削除要求T11を受信した配信サーバ4がデータBを削除することによって、情報配信システムSは、図2に示した状態に戻る。
このように、本実施形態の情報配信システムSでは、複数台の配信サーバ1、2、3、4のうち、一部の配信サーバ1、2、3、4が何らからの原因によりコンテンツ情報を配信不可能な状態になり、仮想ストレージ内で一部のコンテンツ情報の数が減少した場合に、調整サーバ5が減少したコンテンツ情報の数を増加させて理想数に近づける一方、仮想ストレージ内で一部のコンテンツ情報の数が増加した場合には、調整サーバ5が増加したコンテンツ情報の数を減少させて理想数に近づけるので、仮想ストレージ内における同一の各コンテンツ情報の重複数を略均等に保つことができ、当該情報配信システムSに投入した全てのコンテンツ情報を配信可能に保障することができる。
[1.3.サーバ間DHTネットワークの概要等]
ここで、この情報配信システムSに採用しているサーバ間DHTネットワークSDの概要について、図8〜図12を参照して説明する。なお、ここでは、配信サーバ1、2、3、4の上記マシンID、アドレス、コンテンツ情報のデータIDに対して具体的な数値を当てはめて説明する。
本実施形態の情報配信システムSにおいては、DHTを利用したアルゴリズムによって、サーバ間DHTネットワークSDを構築している。つまり、このサーバ間DHTネットワークSDは、既存のインターネット等の物理的ネットワークを用いて形成された仮想的なリンクを構成したものであり、サーバ間DHTネットワークSD上に配置された配信サーバ1、2、3、4を、情報配信システムSに参加(言い換えれば、サーバ間DHTネットワークSDに参加)している配信サーバ1、2、3、4という。
情報配信システムSに参加している配信サーバ1、2、3、4のサーバ識別情報であるマシンIDとして、それぞれの配信サーバ1、2、3、4毎にユニークな番号(固有番号)を付与する。本実施形態においては、各配信サーバ1、2、3、4のIPアドレス或いは製造番号等の配信サーバ1、2、3、4毎に固有の値を、共通のハッシュ関数(ハッシュアルゴリズム)によりハッシュ化して得たハッシュ値を各配信サーバ1、2、3、4のマシンIDとする。このように共通のハッシュ関数によりハッシュ化されて求められたマシンIDは、当該IPアドレス或いは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。また、以下の説明においては、IPアドレス(グローバルIPアドレス)を共通のハッシュ関数によりハッシュ化した値をマシンIDとする。
また、情報配信システムSに参加している複数の配信サーバ1、2、3、4には、ユーザ端末10に配信される共用情報としてのコンテンツ情報(例えば、音楽データ、映画データ、文書データ等のデータ)が分散して記憶されているが、当該コンテンツ情報にも、それぞれのコンテンツ情報毎の固有の識別番号としてデータIDを付与する。そして、当該データIDは、マシンIDと同様の長さ(例えば、32bit等)とし、コンテンツ情報の名称(例えば、データファイル名)などが、上記マシンIDを得るときと共通のハッシュ関数によりハッシュ化され、配信サーバ1、2、3、4のIPアドレスのハッシュ値と同一のID空間に配置される。
このように、各配信サーバ1、2、3、4に付与されたマシンID及び各コンテンツ情報に付与されたデータIDは、共通のハッシュ関数によって生成したため、図8に示すように、同一のリング状のID空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は32bitでマシンID及びデータIDを付与し、図示したものである。図中丸点はマシンIDを、四角形はデータIDを示し、反時計回りでIDが増加するものとする。
本実施形態においては、「あるデータIDを有するコンテンツ情報を管理する配信サーバ1、2、3、4(ルートノード)は、そのデータIDに近いマシンIDを有する配信サーバ1、2、3、4である」という規則を適用しており、ここでの「近い」ことの定義は、当該データIDを超えず、データIDとマシンIDとの差が一番少ないものとするが、実際には、各コンテンツ情報の管理を各配信サーバ1、2、3、4に割り振る際に、一貫していれば他の定義でもよい。図8に示す例では、この定義に基づいて、データIDaは、当該コンテンツIDaに近いマシンID(以下、「マシンIDa」と呼ぶ。)を有する配信サーバ1に管理され、データIDbは、当該データIDbに近いマシンID(以下、「端末IDb」と呼ぶ。)を有する配信サーバ2に管理され、データIDcは、当該データIDcに近いマシンID(以下、「端末IDc」と呼ぶ。)を有する配信サーバ3に管理される。
ここで、「管理」とは、コンテンツ情報を保持していることを意味するのではなく、「コンテンツ情報が何れの配信サーバ1、2、3、4に保持されているかを知っている」ことを意味する。すなわち、情報配信システムS内で配信するコンテンツ情報を保持する配信サーバ1、2、3、4の所在情報(ここでは、アドレスとする。)を保持することを意味する。例えば、図8においては、マシンIDaを有する配信サーバ1は、データIDaを有するコンテンツ情報が何れの配信サーバ1、2、3、4に保持されているかを知っており、マシンIDbを有する配信サーバ2及びマシンIDcを有する配信サーバ3も同様にそれぞれデータIDbを有するコンテンツ情報及びデータIDcを有するコンテンツ情報が何れの配信サーバ1、2、3、4に保持されているかを知っている、ということになる。
このように、あるコンテンツ情報が何れの配信サーバ1、2、3、4に保持されているかを知っている配信サーバ1、2、3、4を、そのコンテンツ情報のルートノードとしている。つまり、マシンIDaを有する配信サーバ1は、データIDaを有するコンテンツ情報のルートノードであって、マシンIDbを有する配信サーバ2は、データIDbを有するコンテンツ情報のルートノードであって、マシンIDcを有する配信サーバ3は、データIDcを有するコンテンツ情報のルートノードである。
また、情報配信システムSには、情報配信システムS内にコンテンツ情報を投入する機能、すなわち情報配信システムS内の配信サーバ1、2、3、4をコンテンツ保持装置とするためにコンテンツ情報を配信サーバへ配布(送信)する機能や、情報配信システムSにおいてユーザ端末10へ送信可能なコンテンツ情報のリストである情報リスト(以下、「コンテンツカタログ」と呼ぶ。)を生成して各配信サーバ1、2、3、4へ提供する機能などを有するコンテンツ投入装置11(図11参照)を備えている。
[1.3.1ルーティングテーブル]
ここで、図9及び図10を参照して、サーバ間DHTネットワークSDで用いるルーティングテーブルについて説明する。図9はルーティングテーブルを説明するための図であり、図10はルーティングテーブルの一例である。このルーティングテーブルは、配信サーバ1、2、3、4から他の配信サーバ1、2、3、4へアクセスするために、各配信サーバ1、2、3、4に保持されているものであり、各配信サーバ1、2、3、4が情報配信システムSに参加するとき等に形成されるものである。
このルーティングテーブルは、所定の規則に従い、情報配信システムSに含まれる配信サーバ1、2、3、4を複数のグループに分けて当該各グループをレベル1のグループとし、このレベル1のグループのうち自装置が属するグループをさらに複数のグループに分けて当該各グループをレベル2のグループとし、このレベル2のグループ分けと同様のグループ分けによりレベルnまでの各グループとして、各段階の各グループ(自装置の属するグループは除く)に属する一の配信サーバ1、2、3、4の所在情報(IPアドレス)をそれぞれ記憶するものである。なお、nは3以上の自然数であり、マシンIDのID空間に応じて異なる。例えば、以下のように、ビット長8bitの4進数の場合には、n=4となる。
ここでは、マシンIDをビット長8bitの4進数(「0000」〜「3333」)で表すこととした場合に、マシンIDが「1133」の配信サーバ1が保持するルーティングテーブルについて説明する。
図9(a)に示すように、マシンIDのID空間を4分割することによって、最大桁が異なる4つのエリア「0XXX」「1XXX」、「2XXX」、「3XXX」(Xは0から3の自然数、以下同様。)のグループに分ける。これらがレベル1のグループである。配信サーバ1のマシンIDは「1133」であるため、配信サーバ1は、図9(a)中左下のエリア「1XXX」であるレベル1のグループに属する。従って、配信サーバ1のルーティングテーブルのレベル1のテーブルには、図10に示すように、配信サーバ1の存在するレベル1のグループ以外のグループ(すなわち、「0XXX」のエリア、「2XXX」のエリア、「3XXX」のエリアの各グループ)に存在する配信サーバのマシンID及びIPアドレスが記憶される。このテーブルでは、「0XXX」のエリアのマシンIDとして「0100」、「2XXX」のエリアのマシンIDとして「2133」、「3XXX」のエリアのマシンIDとして「3213」のそれぞれのマシンID及びIPアドレスが記憶されている。
次に、図9(b)に示すように、レベル1のグループのうち配信サーバ1が属するグループをさらに4分割して、エリア「10XX」、「11XX」、「12XX」、「13XX」のグループに分ける。これらがレベル2のグループである。配信サーバ1は、自装置1のマシンIDが「1133」であるため、配信サーバ1のルーティングテーブルのレベル2のテーブルには、図10に示すように、配信サーバ1が属するレベル2のグループ(「11XX」のエリアのグループ)以外のレベル2のグループ(すなわち、「10XX」のエリア、「12XX」のエリア、「13XX」のエリアの各グループ)にそれぞれ属する配信サーバのマシンID及びIPアドレスが記憶される。このテーブルでは、「10XX」のエリアのマシンIDとして「1003」、「12XX」のエリアのマシンIDとして「1221」、「13XX」のエリアのマシンIDとして「1313」のそれぞれのマシンID及びIPアドレスが記憶されている。
以下同様に、レベル2のグループのうち配信サーバ1が属するグループをさらに4分割して、エリア「110X」、「111X」、「112X」、「113X」のグループ(レベル3のグループ)に分け、配信サーバ1が属するレベル3のグループ「113X」以外のレベル3のグループ(すなわち、「110X」のエリア、「111X」のエリア、「112X」のエリアの各グループ)にそれぞれ属する配信サーバのマシンID及びIPアドレスが記憶される。また、レベル3のグループのうち配信サーバ1が属するグループをさらに4分割して、「1130」「1131」、「1132」、「1133」のグループ(レベル4のグループ)に分け、配信サーバ1が属するレベル4のグループ「1133」以外のレベル4のグループ(すなわち、「1130」「1131」、「1132」の各グループ)にそれぞれ属する配信サーバのマシンID及びIPアドレスが記憶される。なお、上記グループに配信サーバが存在しない場合には、マシンID及びIPアドレスの欄は空白となる。
このように情報配信システムSにおいては、この情報配信システムSにおける複数の配信サーバ1、2、3、4のうち一部の配信サーバの識別情報であるマシンID及び所在情報であるIPアドレスを関連付けたルーティングテーブルを各配信サーバ1、2、3、4が有している。
[1.3.2.コンテンツ情報の公開方法]
このような構成の情報配信システムSの中で、例えば、ある配信サーバが新しいコンテンツ情報を、情報配信システムS上の他の配信サーバから検索可能となるように公開する際の手法について述べる。
まず、コンテンツ投入装置11は、新たなコンテンツ情報を情報配信システムSに投入(配布)しようとするとき、この新たなコンテンツ情報を投入する配信サーバ1mを決定する。そして、コンテンツ投入装置11は、当該決定した配信サーバ1mへコンテンツ情報を投入(送信)する。
コンテンツ投入装置11から投入されたコンテンツ情報を内部の記憶手段に記憶してコンテンツ保持装置となった配信サーバ1mの制御部201(図14参照)は、記憶手段に記憶したコンテンツ情報のデータIDと同じマシンIDを持つ配信サーバに向けて(この配信サーバが実在するか否かはこの時点ではわからない。)、自装置(コンテンツ情報を保持するコンテンツ保持装置として)の所在情報であるIPアドレス等の登録を要求するメッセージ(以下、「登録メッセージ」と呼ぶ。)を送信する。
このように、配信サーバ1mの制御部201は、コンテンツ情報に割り当てられたコンテンツ識別情報に対応するサーバ識別情報を有する配信サーバへ自装置の所在情報及びサーバ識別情報を送信するサーバ識別情報送信手段として機能する。
そして、図11に示すように、例えば、配信サーバ1mがデータID「3020」のコンテンツ保持装置となったとき、配信サーバ1mは、データID「3020」を宛先識別情報とした登録メッセージを生成し、この登録メッセージを自己が保持しているルーティングテーブルを参照して送信する。配信サーバ1mが、図10に示すルーティングテーブルのレベル1のテーブルと同様のルーティングテーブルを持っていたとすると、データID「3020」は「3XXX」のエリアであるため、当該「3XXX」のエリアに属す配信サーバのうち、IPアドレスを知っている(すなわち、自己が保持しているルーティングテーブルにIPアドレスが記憶されている)配信サーバ1n(マシンID「3213」)に対して登録メッセージを送信する。この登録メッセージはコンテンツ保持装置として保持したコンテンツ情報のデータIDを含むものであり、このデータIDは登録メッセージにおいて宛先識別情報として用いられる。
次に、登録メッセージを受信した配信サーバ1nは、この登録メッセージが自装置1n宛のメッセージであるか否かを判定する。自装置1n宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報が自装置1nの識別情報であるマシンIDと近いか否かが判定される。即ち、宛先識別情報に対して、配信サーバ1n自身が保持しているルーティングテーブル(テーブルの値は図示しない)に記憶されている配信サーバのマシンIDから、一番近い配信サーバのマシンIDが、自身であるか他の配信サーバであるかを判定する。
そして、自装置1nのマシンIDよりも他の配信サーバのマシンIDの方が、宛先識別情報に近いため、配信サーバ1nは、当該配信サーバ1n自身が保持しているルーティングテーブルのレベル2のテーブルを参照して、「30XX」のエリアに属す配信サーバのうち、IPアドレスを知っている配信サーバ1p(マシンID「3031」)に対して登録メッセージを転送する。
このように、データIDの桁を上から順に適合していく要領で登録メッセージの転送が進み、最終的に登録メッセージの宛先識別情報に近いマシンIDを有する配信サーバ1qに辿り着くと、当該配信サーバ1q自身がそのコンテンツ情報のルートノードとなるべきだと判断し、当該登録メッセージに含まれる当該データID及びコンテンツ保持装置のマシンIDやIPアドレス等を含むインデックス情報を記憶する。そして、他の配信サーバから検索メッセージを受信すると、検索メッセージを送信した配信サーバへコンテンツ保持装置の所在情報であるIPアドレスを記憶したインデックス情報の中から選択して通知する。なお、上述のようにルーティングテーブルを用いたメッセージの転送をDHTルーティングと呼ぶ。
ところで、ルートノードにおけるインデックス情報の保持は、図12に示すようなインデックステーブルにより行われる。図12はルートノード1qにおけるインデックステーブルの例を示したものであり、自装置が管理対象であるデータID「3020」のコンテンツ情報を保持するコンテンツ保持装置のマシンID、IPアドレス、紹介時間などを記憶している。
〔1.4.調整サーバの構成〕
ここで、調整サーバ5の構成について説明する。図13は、本実施形態に係る情報配信システムSにおける調整サーバ5の概略構成を示す図である。
調整サーバ5は、一般のサーバコンピュータを適用可能であり、図13に示すように、制御部101と、サーバ間DHTネットワークSDに参加している配信サーバ1、2、3、4のマシンID及びアドレス、その配信サーバ1、2、3、4が保持しているコンテンツ情報のデータIDが記載された調整テーブル等を記憶する書き換え可能な記憶部102と、マウスやキーボード等からなる入力部103と、インターネットを介して、配信サーバ1、2、3、4と通信するための通信部104とを備えている。なお、制御部101、記憶部102、通信部104は、システムバス110を介して相互に接続されている。
制御部101は、CPU(Central Processing Unit)、内部ROM(Read Only Memory)及び内部RAM(Random Access Memory)から構成される。この内部ROMには、複数の配信サーバ1、2、3、4により構築された仮想ストレージ内におけるコンテンツ情報の重複数の調整を行うための情報処理プログラムが格納されており、CPUは内部ROMに記憶されている情報処理プログラムを読み出して実行することによって、後述する検出手段、調整手段等として機能する。
なお、この情報処理プログラムは、例えば、インターネットに接続された他のサーバ(図示せず)から、通信部104を介して、制御部101の内部ROMにダウンロードされるようにしてもよく、又CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部101の内部ROMに読み込まれるようにしてもよい。
[1.5.配信サーバの構成]
次に、配信サーバの構成について説明する。各配信サーバ1、2、3、4は、それぞれ保持しているコンテンツ情報の種類が異なるだけで、その構成については全て同一であるため、ここでは、配信サーバ1の構成について説明する。
図14は、本実施形態に係る情報配信システムSにおける配信サーバ1の概略構成を示す図である。
配信サーバ1は、一般のサーバコンピュータを適用可能であり、図14に示すように、制御部201と、サーバ間用DHTや自装置がルートノードとなって管理しているコンテンツ情報に関するインデックス情報、自装置が保持しているコンテンツ情報に関するカタログ情報等を記憶する書き換え可能な記憶部202と、コンテンツ情報を記憶するデータストレージ(記憶装置)としてのハードディスク(HDD)203と、マウスやキーボード等からなる入力部204と、コンテンツ情報をユーザ端末10へ送信するために一時的に記憶するバッファメモリ205と、インターネットを介して、他の配信サーバ2、3、4や調整サーバ5、ユーザ端末10等の他の装置と通信するための通信部206とを備えている。
本実施形態では、上記HDD203が複数のコンテンツ情報を記憶するコンテンツ情報記憶手段に相当し、インデックス情報を記憶する記憶部202が、自装置のサーバ識別情報(マシンID)に対応するコンテンツ識別情報(データID)に割り当てられたコンテンツ情報を保持する配信サーバのサーバ識別情報(マシンID)及び所在情報(アドレス)を記憶するサーバ識別情報記憶手段に相当する。
この配信サーバ1の制御部201は、HDD203に保持しているコンテンツ情報を一旦バッファメモリ205に記憶させた後、このバッファメモリ205に記憶したコンテンツ情報を順次取り出してユーザ端末10へ送信する。
また、この制御部201は、調整サーバ5から送信される複製要求を受信した場合に、当該複製要求に対応するコンテンツ情報を複製して、他の配信サーバ2、3、4へ送信する他、調整サーバ5から送信される削除要求を受信した場合には、当該削除要求に対応するコンテンツ情報をHDD203から削除する。さらに、他の配信サーバ2、3、4からコンテンツ情報を受信した場合には、そのコンテンツ情報をHDD203内に保持した後、調整サーバ5へデータ作成通知を送信する等、調整サーバ5からの指示に基づいて、コンテンツ情報の作成及び削除を行う。
なお、制御部201、記憶部202、ハードディスク203、バッファメモリ205、通信部206は、システムバス210を介して相互に接続されている。
制御部201は、CPU(Central Processing Unit)、内部ROM(Read Only Memory)及び内部RAM(Random Access Memory)から構成される。この内部ROMには、ユーザ端末10へのコンテンツ情報の送信、コンテンツ情報の作成及び削除、他の装置との間で各種メッセージを送受信するための情報処理プログラムが格納されており、CPUは内部ROMに記憶されている情報処理プログラムを読み出して実行することによって、コンテンツ情報送信手段、所在情報送信手段、取得手段、削除手段等として機能する。
なお、この情報処理プログラムは、例えば、インターネットに接続された他のサーバ(図示せず)から、通信部206を介して、制御部201の内部ROMにダウンロードされるようにしてもよく、又CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部201の内部ROMに読み込まれるようにしてもよい。
[1.6.ユーザ端末の構成]
次に、ユーザ端末10の構成について説明する。図15は、本実施形態に係る情報配信システムSにおけるユーザ端末10の概略構成を示す図である。
ユーザ端末10は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能であり、図15に示すように、制御部301と、コンテンツ情報の配信が可能な状態となっている配信サーバ1、2、3、4に関するマシンID及びアドレスが記載されたサーバ情報テーブル(図示略)等を記憶する書き換え可能な記憶部302と、配信サーバ1、2、3、4から取得したコンテンツ情報を記憶する記憶手段としてのハードディスク(HDD)303と、配信サーバ1、2、3、4から取得したコンテンツ情報を一時的に記憶するバッファメモリ304と、HDD303やバッファメモリ304に記憶したコンテンツ情報を順次取り出してデコードするデコーダ部305と、このデコーダ部305によってデコードされたコンテンツ情報のうち映像情報を後述の表示部307で表示可能な情報に変換処理する映像処理部306と、この映像処理部306からの出力に基づいて映像を表示する液晶表示装置(LCD)などの表示部307と、デコーダ部305によってデコードされたコンテンツ情報のうち音声情報を後述のスピーカ309で音波として出力可能な情報に変換処理する音声処理部308と、この音声処理部308からの出力に基づいて音波を出力するスピーカ309と、マウス及びキーボードなどからなる入力部310と、インターネットを介して、配信サーバ1、2、3、4と通信するための通信部313とを備えている。
このユーザ端末10では、デコーダ部305、映像処理部306、音声処理部308、表示部307、スピーカ309がそれぞれ協働して、コンテンツ情報を再生する再生手段として機能する。なお、制御部301、記憶部302、HDD303、バッファメモリ304、デコーダ部305、通信部313は、システムバス320を介して相互に接続されている。
制御部301は、CPU(Central Processing Unit)、内部ROM(Read Only Memory)及び内部RAM(Random Access Memory)から構成される。この内部ROMには、情報配信システムSに参加して、コンテンツ情報を送受信するための情報処理プログラムが格納されており、CPUは内部ROMに記憶されている情報処理プログラムを読み出して実行することによって、配信サーバ1、2、3、4へコンテンツ情報の配信要求を送信して、当該配信要求に対応するコンテンツ情報を保持する配信サーバ1、2、3、4からコンテンツ情報を取得する取得手段等として機能する。
なお、この情報処理プログラムは、例えば、インターネットに接続されたサーバ(図示略)等から、通信部313を介して、制御部301の内部ROMにダウンロードされるようにしてもよく、又CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部301の内部ROMに読み込まれるようにしてもよい。
[1.7.調整サーバの動作]
ここで、上記のように構成した調整サーバ5の動作について説明する。図16は、調整サーバ5の動作内容の一例を示すフローチャートである。ここでは、本実施形態の情報配信システムSにおいて、複数の配信サーバ1、2、3、4に分散して保持させているコンテンツ情報の重複数を調整するために調整サーバ5の制御部101が実行する処理について説明し、その他の処理については省略している。なお、以下、フローチャートの説明においては、コンテンツ情報を単に、データと称して説明する。
調整サーバ5の制御部(以下、「制御部101」という。)は、電源が投入されている間、図16に示す重複数調整処理を所定周期で定期的に繰り返し実行する。
制御部101は、この重複数調整処理を開始すると、図16に示すように、まず、サーバ間DHTネットワークSDに参加している全ての配信サーバ1、2、3、4を調査し、同一のデータを保持している配信サーバ1、2、3、4の数をカウントすることによって、仮想ストレージ内のデータの重複数をカウントする処理を行い(ステップS01)、その後、処理をステップS02へ移す。
このとき、制御部101は、各配信サーバ1、2、3、4からインデックス情報を取得する。このインデックス情報には、各ルートノードが管理しているコンテンツ情報を保持している配信サーバのマシンID及びアドレスが記載されているため、制御部101は、取得したインデックス情報を参照することによって、各配信サーバ1、2、3、4が保持しているコンテンツ情報の数を検出することができ、仮想ストレージ内のデータの重複数をカウントすることができる。
このように、制御部101は、サーバ識別情報記憶手段に記憶しているインデックス情報に基づいて、各コンテンツ情報を保持する配信サーバ1、2、3、4の数を検出する検出手段として機能する。
次に、ステップS02において、制御部101は、自装置(調整サーバ5)が管理する全データから1つを選択する処理を行い、その後、処理をステップS03へ移す。
次に、ステップS03において、制御部101は、データ重複数が理想数(たとえば、「2」)未満であるか否かの判断を行い、理想数未満であると判断した場合に(ステップS03:YES)、処理をステップS04へ移し、理想数以上であると判断した場合に(ステップS03:NO)、処理をステップS07へ移す。
ステップ04において、制御部101は、ステップS02で選択したデータを保持する配信サーバ1、2、3、4の中から、(理想数―データ重複数)台の配信サーバ1、2、3、4を選択する処理を行い、その後、処理をステップS05へ移す。
次に、ステップS05において、制御部101は、ステップS04で選択した配信サーバ1、2、3、4に、ステップS02で選択したデータの複製要求を送信する処理を行い、その後、処理をステップS06へ移す。
このように、制御部101は、検出手段によってコンテンツ情報を保持する配信サーバ数が減少したことが検出されると、当該コンテンツ情報を保持している配信サーバへ複製要求を送信する調整手段として機能する。
ここでは、仮想ストレージ内において、データの重複数が理想未満であった場合に、制御部101から、そのデータを保持している配信サーバ1、2、3、4へデータの複製要求を送信するように構成しているが、これ以外に、たとえば、制御部101から重複数が理想数未満であったデータを保持していない他の配信サーバ1、2、3、4へ、そのデータのデータIDと、そのデータを保持している配信サーバ1、2、3、4のマシンID、アドレスを添付した保持要求を送信し、この保持要求を受信した配信サーバ1、2、3、4が保持要求内のアドレスに対応する配信サーバ1、2、3、4へそのデータの送信要求を送信することによって、送信要求したデータを保持するように構成してもよい。
かかる構成にした場合、制御部101は、検出手段によってコンテンツ情報を保持する配信サーバ数が減少したことが検出されると、当該コンテンツ情報を保持していない配信サーバ当該コンテンツ情報の保持要求を送信する調整手段として機能することとなる。
また、ステップS07において、制御部101は、データ重複数が理想数よりも大きいか否かを判断し、データ重複数が理想数よりも大きいと判断した場合に(ステップS07:YES)、処理をステップS08へ移し、データ重複数が理想数以下であると判断した場合に(ステップS07:NO)、処理をステップS06へ移す。
ステップS08において、制御部101は、ステップS02で選択したデータを保持する配信サーバ1、2、3、4の中から、(データ重複数―理想数)台の配信サーバ1、2、3、4を選択する処理を行い、その後、処理をステップS09へ移す。
ステップS09において、制御部101は、ステップS08で選択した配信サーバ1、2、3、4に、ステップS02で選択したデータの削除要求を送信する処理を行い、その後、処理をステップS06へ移す。
このように、制御部101は、検出手段によってコンテンツ情報を保持する配信サーバの数が増加したことが検出されると、当該コンテンツ情報を保持している配信サーバに当該コンテンツ情報の削除要求を送信する調整手段として機能する。
次に、ステップS06において、制御部101は、対象となる全てのデータについて処理を行ったか否かの判断を行う。ここで、制御部101は、当該調整サーバが管理している全ての種類のコンテンツ情報について、この重複数調整処理におけるステップS01及びステップS06以外の処理を実行したか否かの判断を行う。
そして、制御部101は、全てのデータについて処理を行ったと判断した場合に(ステップS06:YES)、処理をステップS01へ移し、全てのデータに対して処理を行っていないと判断した場合に(ステップS06:NO)、処理をステップS02へ移す。
このように、本実施形態では、制御部101が、検出手段によってコンテンツ情報を保持する配信サーバの数が減少したことが検出されると、当該コンテンツ情報を保持している配信サーバに複製要求を送信して、その複製したコンテンツ情報を、当該コンテンツ情報を保持していない配信サーバへ送信させて保持させ、検出手段によってコンテンツ情報を保持している配信サーバの数が増加したことが検出されると、当該コンテンツ情報を保持している配信サーバから当該コンテンツ情報を削除させる調整手段として機能するのである。
[1.8.配信サーバの動作]
次に、配信サーバ1、2、3、4の動作について、図17〜図19を参照して説明する。図17は、調整サーバ5から削除要求を受信したときに配信サーバ1、2、3、4の制御部201が実行する削除処理を示すフローチャートであり、図18は、調整サーバ5から複製要求を受信したときに配信サーバ1、2、3、4の制御部201が実行する複製処理を示すフローチャートであり、図19は、他の配信サーバ1、2、3、4から複製されたデータを受信した配信サーバ1、2、3、4の制御部201が実行する受信処理を示すフローチャートである。
配信サーバ1、2、3、4の制御部(以下、単に「制御部201」という。)は、調整サーバ5からデータの削除要求を受信すると、図17に示すように、当該削除要求に対応するデータIDが割り当てられた対象データをHDD203から削除する処理を行い(ステップS11)、その後、この削除処理を終了する。
このように制御部201は、削除要求を受信すると、当該削除要求の対象となるコンテンツ情報をコンテンツ情報記憶手段から削除する削除手段として機能する。
また、制御部201は、調整サーバ5からデータの複製要求を受信すると、図18に示すように、当該複製要求に対応するデータIDが割り当てられた対象データを保持していない適当な他の配信サーバ1、2、3、4を1台選択する処理を行い(ステップS12)、その後、処理をステップS13へ移す。
このステップS12で配信サーバ1、2、3、4を選択するときの方法としては、たとえば、任意の配信サーバ1、2、3、4へ対象データを保持しているか否かを確認するメッセージを送信し、その返信メッセージに基づいて選択する方法、それ以外に、調整サーバ5から対象データを保持していない配信サーバ1、2、3、4のアドレスをデータの複製要求と共に送信してもらう方法、対象データのルートノードに、当該対象データを保持していない配信サーバのアドレスを送信してもらう方法等、任意の方法を用いることができる。
次に、ステップS13において、制御部201は、対象データを複製した後、その複製した対象データを、ステップS12で選択した配信サーバ1、2、3、4へ送信する処理を行い、その後、この複製処理を終了する。
このように、制御部201は、複製要求を受信すると当該複製要求の対象となるコンテンツ情報を複製する複製手段として機能する。
また、制御部201は、他の配信サーバ1、2、3、4から前述の複製処理(図18参照)で複製した対象データを受信すると、図19に示すように、受信した対象データをHDD203に記憶する処理を行い(ステップS14)、その後、この受信処理を終了する。
このように、制御部201は、他の配信サーバからコンテンツ情報を取得すると、そのコンテンツ情報をコンテンツ情報記憶手段に記憶する取得手段として機能する。
また、調整サーバ5が対象データを保持する配信サーバ1、2、3、4に複製要求を送信する構成ではなく、調整サーバ5が対象データを保持しない配信サーバ1、2、3、4へ前述の保持要求を送信する構成とした場合には、配信サーバ1、2、3、4の制御部201が、保持要求を受信すると、当該保持要求の対象となるコンテンツ情報を保持する配信サーバから当該コンテンツ情報を取得してコンテンツ情報記憶手段に記憶する取得手段として機能する。
[1.9.変形例における調整サーバの動作]
上記第1実施形態の情報配信システムSでは、調整サーバ5がサーバ間DHTネットワークSDに参加している全ての配信サーバ1、2、3、4に保持されているコンテンツ情報を定期的に検出して、仮想ストレージにおけるコンテンツ情報の重複数を調整するように構成しているが、第1実施形態の変形例として、調整サーバ5がサーバ間DHTネットワークSDに参加している全ての配信サーバ1、2、3、4について、動作しているか否かだけをまず調査して、動作してない配信サーバ1、2、3、4を検出したときにだけ、仮想ストレージにおけるコンテンツ情報の重複数を調整するように構成してもよい。
かかる構成とすることによって、調整サーバ5の処理負荷を低減することができる。
ここで、この変形例における調整サーバ5の動作について説明する。図20、図21は、調整サーバ5の動作内容の一例を示すフローチャートである。ここでは、本実施形態の情報配信システムSにおいて、仮想ストレージにおけるコンテンツ情報の重複数を調整するために調整サーバ5が実行する処理について説明し、その他の処理については省略している。
調整サーバ5の制御部(以下、単に「制御部101」という。)は、電源が投入されている間、図20に示す重複数増加処理を定期的に繰り返し実行する。
制御部101は、この重複数増加処理を開始すると、図20に示すように、まず、サーバ間DHTネットワークSDに参加している全ての配信サーバ1、2、3、4について動作状態を調査する処理行い(ステップS21)、その後、処理をステップS22へ移す。
次に、ステップS22において、制御部101は、ステップS21で行った調査の結果、全ての配信サーバ1、2、3、4が動作していると判断した場合に(ステップS22:YES)、処理をステップS21へ移し、全ての配信サーバ1、2、3、4の中で動作していない配信サーバ1、2、3、4があると判断した場合に(ステップS22:NO)、処理をステップS23へ移す。
ステップS23において、制御部101は、動作していない配信サーバ1、2、3、4(複数台でもよい)が保持していたデータの種類と不足数とを、自装置の調整テーブルを参照して、当該テーブルから取得する処理を行い、その後、処理をステップS24へ移す。
次に、ステップS24において、制御部101は、ステップS23で取得したデータの中から1種類のデータを選択する処理を行い、その後、処理をステップS25へ移す。
次に、ステップS25において、制御部101は、ステップS25で選択したデータを保持している配信サーバ1、2、3、4からデータの不足数の台数分だけ配信サーバ1、2、3、4を選択する処理を行い、その後、処理をステップS26へ移す。
次に、ステップS26において、制御部101は、ステップS26で選択した各配信サーバ1、2、3、4へ、ステップS24で選択したデータの複製要求を送信する処理を行い、その後、処理をステップS27へ移す。
次に、ステップS27において、制御部101は、自装置の調整テーブルを参照して、当該テーブルを更新する処理を行い、その後、処理をステップS28へ移す。
次に、ステップS28において、制御部101は、対象となる全てのデータについて処理を行ったか否かを判断する。ここで、制御部101は、当該調整サーバが管理している全ての種類のコンテンツ情報について、この重複数調整処理におけるステップS24〜ステップS27の処理を実行したか否かの判断を行う。
そして、制御部101は、全てのデータについて処理を行ったと判断した場合に(ステップS28:YES)、処理をステップS21へ移し、全てのデータについて処理を行っていないと判断した場合に(ステップS28:NO)、処理をステップS24へ移す。
また、この制御部101は、配信サーバ1、2、3、4からデータ作成通知を受信すると、図21に示す重複数減少処理を実行する。
制御部101は、配信サーバ1、2、3、4から新たにデータを保持したことを示すデータ作成通知を受信すると、図21に示すように、まず、自装置の調整テーブルを参照し、当該テーブルを更新する処理を行い(ステップS31)、その後、処理をステップS32へ移す。
次に、ステップS32において、制御部101は、受信したデータ作成通知に対応する対象データの重複数が理想数より大きいか否かの判断を行い、理想数よりも大きいと判断した場合に(ステップS32:YES)、処理をステップS33へ移し、理想数以下であると判断した場合に(ステップS32:NO)、この重複数減少処理を終了する。
また、ステップS33において、制御部101は、受信したデータ作成通知に対応する対象データを保持している配信サーバ1、2、3、4から(データ重複数―理想数)台の配信サーバ1、2、3、4を選択する処理を行い、その後、処理をステップS34へ移す。
次に、ステップS34において、制御部101は、ステップS33で選択した各配信サーバ1、2、3、4へ、受信したデータ作成通知に対応するデータを削除させる削除要求を送信する処理を行い、その後、この重複数減少処理を終了する。
[1.9.1.変形例における配信サーバの動作]
次に、上記変形例における配信サーバ1、2、3、4の動作について説明する。
この変形例において、配信サーバ1、2、3、4の制御部(以下、単に、「制御部201」という。)は、調整サーバ5からデータの削除要求を受信すると、図17に示した削除処理と同様の処理を実行する。すなわち、制御部201は、削除要求に対応するコンテンツ情報を自装置のHDD203から削除する処理を行う。
また、この変形例において、制御部201は、調整サーバからデータの複製要求を受信すると、図18に示した複製処理と同様の処理を実行する。すなわち、制御部201は、複製要求に対応するコンテンツ情報を複製する処理を行う。
また、この変形例において、制御部201は、他の配信サーバ2、3、4から複製されたデータを受信すると、図22に示す受信処理を実行する。
この受信処理を開始すると、制御部201は、図22に示すように、まず、受信したデータをHDD203へ記憶する処理を行い(ステップS41)、その後、処理をステップS42へ移す。
次に、ステップS42において、制御部201は、調整サーバ5へステップS41でデータを記憶したことを示すデータ作成通知を送信する処理を行い、その後、この受信処理を終了する。
[1.10.配信サーバがコンテンツ情報を配信する際の動作]
また、配信サーバ1、2、3、4の制御部201(以下、単に「制御部201」という。)は、配信要求を送信したユーザ端末10へコンテンツデータを配信(送信)する際、図23(a)〜(b)に示す情報送信処理(1)、(2)、又は、図23(c)〜(d)に示す情報送信処理(3)、(4)を実行する。
情報送信処理(1)、(2)を実行するように配信サーバ1、2、3、4を構成した場合に、制御部201は、ユーザ端末10からコンテンツ情報の配信要求を受信すると、図23(a)に示すように、まず、自装置が受信した配信要求に対応するデータ(対象データ)を保持しているか否かの判断を行い(ステップS71)、保持していると判断した場合に(ステップS71:YES)、処理をステップS73へ移し、保持していないと判断した場合に(ステップS71:NO)、処理をステップS72へ移す。
ステップS73において、制御部201は、配信要求を送信してきたユーザ端末10へデータ(配信要求に対応するコンテンツ情報)をHDD203から取り出して送信する処理を行い、その後、この情報送信処理(1)を終了する。
一方、ステップS72において、制御部201は、対象データを保持する他の配信サーバ1、2、3、4を検索するためのメッセージを作成し、このメッセージにユーザ情報として、配信要求に対応するデータID、及び、その配信要求を送信してきたユーザ端末10の端末識別情報と所在情報とを格納して、DHTネットワークのルールに従って送信する処理を行い、その後、この情報送信処理を終了する。
また、ステップS72の処理により送信されたメッセージは、DHTネットワークのルール(図11に示す登録メッセージを転送するときと同じルール)に従って、複数の配信サーバ1、2、3、4により転送され、最終的に配信要求に対応するデータを保持している配信サーバ1、2、3、4に受信されることとなる。
そして、配信要求に対応するデータを保持している配信サーバ1、2、3、4が、ステップS72で送信されたメッセージを受信すると、図23(b)に示す情報送信処理(2)を実行する。
この情報送信処理(2)を開始すると、制御部201は、メッセージからユーザ情報を取り出す処理を行い(ステップS74)、その後、処理をステップS75へ移す。
次に、ステップS75において、制御部201は、メッセージに格納(記載)されている端末識別情報に対応するユーザ端末10へデータをHDD203から取り出して送信する処理を行い、その後、この情報送信処理(2)を終了する。
また、情報送信処理(3)、(4)を実行するように配信サーバ1、2、3、4を構成した場合に、制御部201は、図23(c)に示すように、まず、受信した配信要求に対応するデータ(対象データ)を保持しているか否かの判断を行い(ステップS81)、保持していると判断した場合に(ステップS81:YES)、処理をステップS84へ移し、保持していないと判断した場合に(ステップS81:NO)、処理をステップS82へ移す。
ステップS84において、制御部201は、配信要求を送信してきたユーザ端末10へデータ(配信要求に対応するコンテンツ情報)をHDD203から取り出して送信する処理を行い、その後、この情報送信処理(3)を終了する。
一方、ステップS82において、制御部201は、対象データを保持する他の配信サーバ1、2、3、4をDHTネットワークを用いて検索する処理を行い、その後、処理をステップS83へ移す。
次に、ステップS83において、制御部201は、ステップS82で行った検索により発見した配信サーバ1、2、3、4にユーザ端末10を紹介するメッセージを送信する処理を行い、その後、この情報送信処理(3)を終了する。
また、ステップS83の処理により送信されたユーザ端末10を紹介するメッセージを受信した配信サーバの制御部201は、図23(d)に示す情報送信処理(4)を実行する。
この情報送信処理(4)を開始すると、制御部201は、図23(d)に示すように、ステップS83で送信されたメッセージに格納(記載)されているユーザ端末10にデータをHDDから取り出して送信する処理を行い、その後、この情報送信処理(4)を終了する。
このように、配信サーバ1、2、3、4の制御部201は、ユーザ端末10からの要求に応じたコンテンツ情報を、コンテンツ情報記憶手段であるHDD203から取り出して送信するコンテンツ情報送信手段として機能する。
[2.第2実施形態]
次に、本発明の第2実施形態について説明する。なお、以下の説明において、第1実施形態の情報配信システムSの構成要件と同様の構成要件については、同一の符号を付して説明する。
上記第1実施形態の情報配信システムSでは、調整サーバ5が当該情報配信システムSにおけるコンテンツ情報の重複数を調整するように構成したが、第2実施形態の情報配信システムSでは、調整サーバ5に替わって、ルートノードとして機能している配信サーバ1、2、3、4が自装置で管理しているコンテンツ情報に関して、その重複数を調整するように構成している。
あるコンテンツ情報のルートノードとなっている配信サーバ1、2、3、4は、自装置が管理しているコンテンツ情報に関しては、それぞれ、そのコンテンツ情報を保持している配信サーバ1、2、3、4のマシンID及びアドレスが記載されたインデックス情報を保持している。
そのため、ルートノードとなっている配信サーバ1、2、3、4は、自装置が保持するインデックス情報を参照することによって、自装置がルートノードとなっているコンテンツ情報を保持する配信サーバ1、2、3、4が、サーバ間DHTネットワークSDから離脱したこと、及び再びサーバ間DHTネットワークSDに復帰したことを検出することができ、これにより、自装置が管理している特定のコンテンツ情報に関してのみ、仮想ストレージ内における重複数を検出することができる。
そして、第2実施形態の情報配信システムSでは、このことを利用して、各コンテンツ情報のルートノードに、それぞれ、そのルートノードが管理しているコンテンツ情報の仮想ストレージ内における重複数を監視させ、重複数が理想数よりも少なくなった場合に、その重複数を増加させ、重複数が理想数よりも多い場合に、その重複数を減少させる構成としている。
かかる構成とすることによって、情報配信システムSに調整サーバ5を設ける必要がなくなり、当該情報配信システムSを構築するための設備費を低減することができる。
[2.1.ルートノードによるコンテンツ情報の重複数調整方法]
ここで、第2実施形態に係る情報配信システムSにおける仮想ストレージ内でのコンテンツ情報の重複数調整方法について、図24〜図26を参照して説明する。
図24〜図26は、ルートノードとして機能する配信サーバ1、2、3、4によるコンテンツ情報の重複数調整方法を示す説明図である。
本実施形態の情報配信システムSには、第1実施形態と同様に、データA、データB、データC、データDという4種類のコンテンツ情報が投入されている場合を例に挙げて説明する。
また、各データA、B、C、Dには、それぞれA1、B1、C1、D1というデータIDが割り当てられている。
また、ここでも、仮想ストレージ内に存在する同一のコンテンツ情報の理想数を「2」(重複数「1」)としており、各ルートノードは、情報配信システムS内に、自装置が管理しているコンテンツ情報を保持している配信サーバ1、2、3、4が2台存在するように調整を行うようにしている。
各配信サーバ1、2、3、4には、それぞれ固有のサーバ識別情報として、1a、2a、3a、4aというマシンIDが割り当てられ、それぞれにネットワーク上における固有の所在情報として、1b、2b、3b、4bというアドレスが割り当てられている。
また、本実施形態では、配信サーバ1がデータIDとしてC1が割り当てられたデータCのルートノードとして機能しており、配信サーバ2がデータIDとしてD1が割り当てられたデータDのルートノードとして機能しており、配信サーバ3がデータIDとしてA1が割り当てられたデータAのルートノードとして機能しており、配信サーバ4がデータIDとしてB1が割り当てられたデータCのルートノードとして機能しているものとする。
そして、各コンテンツ情報のルートノードである配信サーバ1、2、3、4は、それぞれ、自装置が管理しているコンテンツ情報に関するインデックス情報と、サーバ間DHTとを保持している。
また、本実施形態においても、ルートノードとなっている配信サーバ1、2、3、4がサーバ間DHTネットワークSDから離脱した場合、サーバ間DHTネットワークSDにおいて、離脱した配信サーバ1、2、3、4とネットワーク上で最も近い配信サーバ1、2、3、4が、前記離脱した配信サーバ1、2、3、4が管理していたコンテンツ情報のルートノードとなる。
たとえば、データCのルートノードである配信サーバ1がサーバ間DHTネットワークSDから離脱した場合、マシンIDを決定した際のID空間において、配信サーバ1のマシンIDと最も近いマシンID「2a」が割り当てられている他の配信サーバ2がデータCのルートノードとなる。
そして、サーバ間DHTネットワークSDを離脱した配信サーバ1、2、3、4が再度サーバ間DHTネットワークSDに復帰した場合には、離脱前に管理していたコンテンツ情報のルートノードに戻るように構成している。
今、図24(a)に示す状態において、配信サーバ1は、データAとデータBとを保持しており、配信サーバ2は、データBとデータCとを保持しており、配信サーバ3は、データCとデータDとを保持しており、配信サーバ4は、データDとデータAとを保持している。
ここで、図24(b)に示すように、1台の配信サーバ2がサーバ間DHTネットワークSDから離脱すると、仮想ストレージ内に、データBとデータCとがそれぞれ1つずつしか存在せず、理想数よりも少ない状態となる。
このとき、データDのルートノードである配信サーバ2が存在しなくなるので、配信サーバ3がデータA及びデータDのルートノードとなる。
そして、データCのルートノードである配信サーバ1のインデックス情報から、データCを保持していた配信サーバ2のマシンIDとアドレスが削除され、データBのルートノードである配信サーバ4のインデックス情報から、データCを保持していた配信サーバ2のマシンIDとアドレスが削除される。
このようにインデックス情報が更新されると、データCのルートノードである配信サーバ1は、インデックス情報を参照して、データCを保持している配信サーバ3へ、データCの複製要求T21を送信する。
配信サーバ3は、この複製要求T21を受信すると、データCを複製したデータT22を、他の配信サーバ4へ送信する。このとき、配信サーバ3は、自装置以外の任意の配信サーバへ複製したデータT22を送信することができるが、好ましくは、現時点でデータCを保持していない配信サーバへ送信する。
こうした場合、1台の配信サーバで同じコンテンツ情報を複数保持することがなく、各配信サーバ1、2、3、4のHDD203の空き領域を有効に利用することができるだけでなく、1台の配信サーバがサーバ間DHTネットワークSDから離脱したときに、同一のコンテンツ情報が一度に複数存在しなくなる事態の発生を防止することができる。
この場合、複製要求T21を送信する配信サーバ(ここでは、配信サーバ1)が、現時点でデータCを保持している配信サーバのマシン情報又はアドレスを複製要求に格納して送信することにより、複製要求を受信した配信サーバ(ここでは、配信サーバ3)が、複製要求に格納されていない配信サーバ(ここでは、配信サーバ4)を送信先に選択して、複製したデータT22を送信することができる。
その後、複製されたデータT22を受信した配信サーバ4は、図25(b)に示すように、受信したデータT22を記憶することによって、データCを保持することとなる。
そして、新たにデータCを保持した配信サーバ4は、DHTのルールに従って、データCのルートノードである配信サーバ1へ、データCを保持したことを示すデータ作成通知T23を送信する。
このデータ作成通知T23を受信すると、配信サーバ1は、インデックス情報を図25(b)に示すように更新する。
また、図25(a)に示した状態において、図示は省略しているが、データBのルートノードである配信サーバ4から、現時点でデータBを保持している配信サーバ1へも、データBの複製要求が送信され、この複製要求を受信した配信サーバ1から複製されたデータBが配信サーバ3へ送信される。
その結果、仮想ストレージ内に、データA、B、C、Dが全て理想数である2つずつ存在する状態となる。
このように、本実施形態では、各ルートノード(配信サーバ1、2、3、4)が、自装置で管理しているコンテンツ情報について、その数が減少したときに、減少したコンテンツ情報を保持している配信サーバ1、2、3、4へ複製要求を送信し、この複製要求を受信した配信サーバ1、2、3、4が、当該複製要求に対応するコンテンツ情報を複製して、減少したコンテンツ情報を保持してない配信サーバ1、2、3、4へ送信するので、第1実施形態のように調整サーバ5を設けることなく、当該情報配信システムSにおけるコンテンツ情報の数を理想数に近づけることができる。
さらに、その後、図26に示すように、一旦サーバ間DHTネットワークSDから離脱した配信サーバ2が復帰した場合、仮想ストレージ内にデータBとデータCとが理想数よりも多い3つずつ存在することとなる。
この場合、データCのルートノードである配信サーバ1は、自装置に保持しているインデックス情報を参照して、現在データCを保持している配信サーバ(ここでは、配信サーバ2、3、4)の中から、一台の配信サーバ4を選択して、データCの削除要求T24を送信する。
そして、この削除要求T24を受信した配信サーバ4は、自装置のHDD203からデータCを削除する。
また、このとき、データBのルートノードである配信サーバ4は、現時点でデータBを保持している配信サーバ3へ、データBの削除要求T24を送信する。
そして、この削除要求T24を受信した配信サーバ3は、自装置のHDD203からデータBを削除する。
その結果、当該情報配信システムSは、図24に示した状態に戻り、4種類の各コンテンツ情報(データA、B、C、D)が共に理想数である2つずつ存在する状態となる。
このように、本実施形態では、各ルートノード(配信サーバ1、2、3、4)が、自装置で管理しているコンテンツ情報について、その数が増加したときに、増加したコンテンツ情報を保持している配信サーバ1、2、3、4へ削除要求を送信し、この削除要求を受信した配信サーバ1、2、3、4が、当該削除要求に対応するコンテンツ情報を削除するので、第1実施形態のように調整サーバ5を設けることなく、当該情報配信システムSにおけるコンテンツ情報の数を理想数に近づけることができる。
[2.2.配信サーバの構成]
本実施形態の配信サーバ1、2、3、4は、その基本的構成に関して、図14に示した第1実施形態の配信サーバ1、2、3、4と同様の構成をしているが、制御部201のROMに記憶されている情報処理プログラムの内容だけが、第1実施形態とは異なる。
すなわち、本実施形態の配信サーバ1、2、3、4の制御部201が備えるROMには、第1実施形態の制御部201のROMに記憶されている情報処理プログラムに加えて、所定周期で定期的にインデックス情報を参照し、その参照結果に基づいて、上記複製要求を送信するプログラムや上記削除要求を送信するプログラム、また、上記データ作成通知を送信するプログラム等、自装置が管理しているコンテンツ情報の数を理想数に近づけるために実行する各種プログラムが記憶されている。
そして、本実施形態では、制御部201がこれら各種プログラムを実行することによって、サーバ識別情報記憶手段に記憶したインデックス情報に基づいて、自装置のサーバ識別情報に対応するコンテンツ情報識別情報が割り当てられたコンテンツ情報を保持する配信サーバの数を検出する検出手段と、この検出手段による検出結果に応じて、自装置のサーバ識別情報に対応するコンテンツ識別情報が割り当てられたコンテンツ情報を保持する配信サーバの数を調整する調整手段として機能する。
[2.3.ルートノードとしての配信サーバの動作]
ここで、特定のコンテンツ情報のルートノードとして機能している配信サーバ1、2、3、4の動作について、図27を参照して説明する。図27は、ルートノードの動作内容の一例を示すフローチャートである。なお、以下の処理は、ルートノードの制御部201が上述した各手段等として機能することによって実行されるものである。ここでは、本実施形態の情報配信システムSにおいて、複数の配信サーバ1、2、3、4に分散して保持させているコンテンツ情報の重複数を調整するためにルートノードの制御部201が実行する処理について説明し、その他の処理については省略している。
ルートノードの制御部(以下、単に「制御部201」という。)は、電源が投入されている間、所定周期で定期的に図27に示す重複数増加処理を繰り返し実行する。
制御部201は、この重複数増加処理を開始すると、図27に示すように、まず、自装置がルートノードとして管理している特定(複数可)のデータを1つ以上保持している配信サーバ1、2、3、4について、動作しているか否かを調査する処理を行い(ステップS51)、その後、処理をステップS52へ移す。
次に、ステップS52において、制御部201は、ステップS51の調査結果に基づいて、ステップS51で調査対象となった全ての配信サーバ1、2、3、4が動作中であるか否かの判断を行い、全ての配信サーバ1、2、3、4が動作中であると判断した場合に(ステップS52:YES)、処理をステップS51へ移し、一部の配信サーバ1、2、3、4が動作していないと判断した場合に(ステップS52:NO)、処理をステップS53へ移す。なお、このステップS53の処理は、図20に示したステップS23の処理と同様の処理である。
このステップS53以降の処理において、制御部201は、図27に示すごとく、図20に示したステップS24〜ステップS28と同様の処理内容のステップS54〜S58の処理を行い、ステップS58において、対象となる全てのデータについて処理を行ったと判断した場合に(ステップS58:Yes)、処理をステップS51へ移す。
また、このルートノードの制御部201は、他の配信サーバ1、2、3、4からのデータ作成通知を受信した場合に、重複数減少処理を実行する。
このルートノードの制御部201が実行する重複数減少処理は、図21に示した第1実施形態における重複数減少処理と同様の処理であるため、ここでは、その説明を省略する。
〔2.4.配信サーバの動作〕
上記ルートノードとして機能している配信サーバ1、2、3、4を含め、サーバ間DHTネットワークSDに参加している全ての配信サーバ1、2、3、4の制御部201は、自装置以外の他のルートノードからデータの削除要求を受信した場合、図17に示した第1実施形態の削除処理と同様の処理を実行する。
また、自装置以外のルートノードからデータの複製要求を受信した場合に、制御部201は、図18に示した第1実施形態の複製処理と同様の処理を実行する。
また、他の配信サーバ1、2、3、4が複製したデータを受信した場合に、制御部201は、図28に示す受信処理を実行する。
この受信処理を開始すると、制御部201は、受信したデータを自装置のHDD203に記憶して保持すると共に、当該保持したデータのルートノードにデータ作成通知を送信する処理を行い(ステップS61)、その後、この受信処理を終了する。
[3.第3実施形態]
次に、本発明の第3実施形態について、図29を参照して説明する。図29は、第3実施形態に係る情報配信システムSの概要を示す説明図である。なお、以下の説明において、第1及び第2実施形態の情報配信システムSの構成要件と同様の構成要件については、同一の符号を付して説明する。
第3実施形態に係る情報配信システムSは、図29に示すように、第1及び第2実施形態と同様に、サーバ間DHTネットワークSDを構築する互いに接続された複数の配信サーバ1、2、3、4と、これら複数の配信サーバ1、2、3、4からコンテンツ情報を受信する複数のユーザ端末10とを備えている。
また、本実施形態に係る各配信サーバ1、2、3、4と各ユーザ端末10とには、それぞれ固有の装置識別情報(マシンID)と所在情報(アドレス)とが割り当てられている。
本実施形態においては、ルートノードとして機能している配信サーバ1、2、3、4が、上記第2実施形態において説明した重複数調整方法により、仮想ストレージ内におけるコンテンツ情報の重複数を調整して、当該情報配信システムSに投入する全てのコンテンツ情報を補償するように構成している。
さらに、この情報配信システムSは、サーバ間DHTネットワークSDとは別に、全ての配信サーバ1、2、3、4と全てのユーザ端末10とが互いに接続されて構築されたユーザ間DHTネットワークYDを備えている。
つまり、本実施形態の情報配信システムSでは、ユーザ間DHTネットワークYDに参加している全ての配信サーバ1、2、3、4とユーザ端末10とが、それぞれコンテンツ情報のルートノードとなりえると共に、コンテンツ情報の取得を要求する取得要求を送信してきたユーザ端末10に対してコンテンツ情報を配信できるように構成している。
そのため、各配信サーバ1、2、3、4は、コンテンツ情報等が記憶されたデータストレージとサーバ間用DHTとユーザ間用DHTとを保持しており、各ユーザ端末10は、受信したコンテンツ情報を記憶するHDD303等のデータストレージと、ユーザ間DHTを保持している。
[3.1.配信サーバの構成]
ここで、本実施形態に係る配信サーバ1、2、3、4の構成について説明する。本実施形態の配信サーバ1、2、3、4は、その基本的構成に関して、図14に示した第2実施形態の配信サーバ1、2、3、4と同様の構成をしているが、制御部201のROMに記憶されている情報処理プログラムの内容と、記憶部202に保持されている情報の内容とだけが第2実施形態とは異なる。
すなわち、本実施形態の配信サーバ1、2、3、4の記憶部202には、第2実施形態の配信サーバ1、2、3、4が保持しているインデックス情報とサーバ間DHTに加えて、ユーザ間DHTが保持されている。
また、制御部201のROMには、第2実施形態の制御部201のROMに記憶されている情報処理プログラムに加えて、ユーザ間DHTネットワークYDにおけるユーザ間DHTを用いた各種メッセージの送受信を行うためのプログラムが記憶されている。
そして、各配信サーバ1、2、3、4の制御部201は、ROMに記憶されているこれらのプログラムを実行することによって、HDD203に記憶したコンテンツ情報に割り当てられたデータIDに対応するマシンIDを有する装置(配信サーバ1、2、3、4又はユーザ端末10)へ自装置の所在情報を送信する第2の所在情報送信手段として機能する。
また、制御部201は、自装置のマシンIDに対応するデータIDが割り当てられたコンテンツ情報を保持する装置(配信サーバ1、2、3、4又は他のユーザ端末10)の所在情報(インデックス情報)を記憶する装置情報記憶手段を備えている。
すなわち、この配信サーバ1、2、3、4は、装置情報記憶手段に記憶したインデックス情報に対応するコンテンツ情報のルートノードとなる。
[3.2.ユーザ端末の構成]
次に、本実施形態に係るユーザ端末10の構成について説明する。本実施形態のユーザ端末10は、その基本的構成に関して、図15に示した第1実施形態のユーザ端末と同様の構成をしているが、制御部301のROMに記憶されている情報処理プログラムの内容と、記憶部302に保持されている情報の内容とが第1実施形態とは異なる。
すなわち、本実施形態のユーザ端末10の記憶部302には、第1実施形態のユーザ端末10が保持するサーバマシンリストに換えて、ユーザ間DHTを保持しており、制御部301のROMには、ユーザ間DHTを用いて各種メッセージの送受信を、ユーザ間DHTネットワークYDを介して行うためのプログラムが記憶されている。
さらに、この制御部301のROMには、他のユーザ端末10又は配信サーバ1、2、3、4からコンテンツ情報を受信して、自装置のHDD303に順次記憶保持しておくためのプログラムや、他のユーザ端末10からコンテンツ情報の取得要求を受信した場合に、当該取得要求に対応したコンテンツ情報をHDD303から取り出して、その取得要求を送信してきた他のユーザ端末10へ送信するための各種情報処理プログラムを記憶している。
すなわち、本実施形態のユーザ端末10では、HDD303がコンテンツ情報を記憶する記憶手段として機能し、ユーザ端末10の制御部301が、上記情報処理プログラムを実行することによって、他の装置(他のユーザ端末10、配信サーバ1、2、3、4)からコンテンツ情報を取得する取得手段、他の装置(他のユーザ端末10、配信サーバ1、2、3、4)からの取得要求に応じたコンテンツ情報をHDD303から取り出して送信する送信手段等として機能する。
また、各ユーザ端末10の制御部301は、上記情報処理プログラムを実行することにより、HDD303に記憶したコンテンツ情報のデータIDに対応するマシンIDを有する装置(他のユーザ端末10又は配信サーバ1、2、3、4)へ自装置のアドレスを送信する所在情報送信手段としても機能する。
また、各ユーザ端末10は、自装置のマシンIDに対応するデータIDを保持する装置(他のユーザ端末10又は配信サーバ1、2、3、4)の所在情報を記憶する所在情報記憶手段を備えている。
[3.3.メッセージを受信したときの配信サーバの動作]
ここで、本実施形態の配信サーバ1、2、3、4の動作について説明する。ここでは、各配信サーバ1、2、3、4がサーバ間DHTネットワークSD又はユーザ間DHTネットワークYDを介してメッセージを受信したときに実行するメッセージ対応処理について説明することとし、重複数調整処理等の他の処理については、第2実施形態と同様であるため、その説明を省略する。
配信サーバ1、2、3、4の制御部(以下、単に、「制御部201」という。)は、他の配信サーバ1、2、3、4又はユーザ端末10からメッセージをしたときに、図30に示すメッセージ対応処理を実行する。
他の装置からメッセージを受信すると、制御部201は、図30に示すように、まず、受信したメッセージの宛先が自装置であるか否かの判断を行い(ステップS91)、自装置であると判断した場合に(ステップS91:YES)、処理をステップS92へ移し、自装置でないと判断した場合に(ステップS91:NO)、処理をステップS95へ移す。
ステップS92において、制御部201は、受信したメッセージを解析し、その解析結果の内容に応じた処理を行い、その後、処理をステップS93へ移す。
次に、ステップS93において、制御部201は、ステップS92で解析したメッセージに関し、新たにメッセージを送信する必要があるか否かを判断する処理を行い、必要があると判断した場合に(ステップS93:YES)、処理をステップS94へ移し、必要がないと判断した場合に(ステップS93:NO)、このメッセージ対応処理を終了する。
また、ステップS94において、制御部201は、DHTを介してメッセージを送信する必要があるか否かを判断し、必要があると判断した場合に(ステップS94:YES)、処理をステップS95へ移し、必要がいないと判断した場合に(ステップS94:NO)、処理をステップS97へ移す。
ステップS95において、制御部201は、ステップS92で解析したメッセージがサーバ間DHTネットワークSDのメッセージであるか否かの判断を行い、サーバ間DHTネットワークSDのメッセージであると判断した場合に(ステップS95:YES)、処理をステップS96へ移し、サーバ間DHTネットワークSDのメッセージでないと判断した場合に(S95:NO)、処理をステップS98へ移す。
ステップS96において、制御部201は、サーバ間DHTネットワークSDからメッセージの転送先を決定する処理を行って処理をステップS97へ移す一方、ステップS98においては、ユーザ間DHTネットワークYDからメッセージの転送先を決定する処理を行って処理をステップS97へ移す。
そして、ステップS97において、制御部201は、ステップS96又はステップS98で決定された転送先、若しくは、予めメッセージに格納されていた転送先へメッセージを送信する処理を行い、その後、このメッセージ対応処理を終了する。
[3.4.ユーザ端末によるコンテンツ情報の取得方法]
ここで、このように構成した情報配信システムSにおいて、各ユーザ端末10がコンテンツ情報を取得する際の取得方法について説明する。
本実施形態の情報配信システムSにおいて、コンテンツ情報を所得しようとするユーザ端末10は、まず、ユーザ間DHTを用いて、ユーザ間DHTネットワークYDに参加している他の装置(他のユーザ端末10又は配信サーバ1、2、3、4)へ向けて取得要求を送信する。
このとき、取得要求を送信するユーザ端末10は、取得要求の中に自装置のマシンIDとアドレス、及び、所望のコンテンツ情報のデータIDを格納して送信する。
この取得要求は、ユーザ間DHTネットワークYDを介して、当該取得要求に格納されたデータIDに対応するコンテンツ情報のルートノードへ受信される。
この取得要求を受信した装置が他のユーザ端末10であった場合、そのユーザ端末10は、取得要求に格納されているデータIDに対応したコンテンツ情報のインデックス情報を自装置の所在情報記憶手段から取り出して、取得要求の送信基であるユーザ端末10へ送信する。
一方、取得要求を受信した装置が配信サーバ1、2、3、4であった場合、その配信サーバ1、2、3、4は、取得要求に格納されているデータIDに対応したコンテンツ情報のインデックス情報を自装置の装置情報記憶手段から取り出して、取得要求の送信基であるユーザ端末10へ送信する。
所望するコンテンツ情報に対応したインデックス情報を受信したユーザ端末10は、受信したインデックス情報に記載されている装置(他のユーザ端末10又は配信サーバ1、2、3、4)へコンテンツ情報の配信を要求するメッセージを送信して、その装置から所望のコンテンツ情報を取得する。
ここでは、コンテンツ情報を取得しようとするユーザ端末10が、ルートノードからインデックス情報を受信して、当該インデックス情報に記載されている装置へコンテンツ情報の送信を要求するようにしているが、これ以外に、たとえば、コンテンツ情報の取得要求を受信したルートノード(他のユーザ端末10又は配信サーバ1、2、3、4)が、当該取得要求に格納されているマシンID・アドレス(取得要求の送信基のユーザ端末10のマシンID・アドレス)を、その取得要求に対応するコンテンツ情報を保持している装置(他のユーザ端末10又は配信サーバ1、2、3、4)へ送信して、取得要求の送信基のユーザ端末10へコンテンツ情報の送信を要求するように構成してもよい。
このように、本実施形態において、各ユーザ端末10は、コンテンツ情報の取得を行う場合に、ユーザ間DHTネットワークYDを介して、コンテンツ情報の検索を行う。
そのため、この実施形態における各ユーザ端末10は、サーバ・クライアント方式を採用している情報配信システムよりも効率よくコンテンツ情報を取得することができる。
すなわち、サーバ・クライアント方式を採用している情報配信システムにおいて、ユーザ端末10は、自装置が保持しているサーバマシンリストから1台の配信サーバを選択して、コンテンツ情報の取得要求を送信するが、このとき選択した配信サーバ1がサーバ間DHTネットワークSDを離脱していた場合には、再度別の配信サーバに接続して取得要求を送信しなければ、当該配信要求をサーバ間DHTネットワークSD上で転送させることができず、所望のコンテンツ情報を保持する配信サーバ1、2、3、4の検索に要する処理が煩雑となる。
これに対して、本実施形態の情報配信システムSにおけるユーザ端末10は、ユーザ間DHTネットワークYDを介して、所望するコンテンツ情報の検索メッセージを送信するだけで、当該所望のコンテンツ情報を保持する配信サーバ又は他のユーザ端末10を検索することができるので、その分、コンテンツ情報の検索に要する処理を簡略化することができる。
また、本実施形態では、コンテンツ情報を取得しようとするユーザ端末10は、他のユーザ端末10から所望のコンテンツ情報を取得できないときに、当該取得できないコンテンツ情報を保持する配信サーバ1、2、3、4から取得するように構成している。
すなわち、本実施形態では、ユーザ間DHTネットワークYDに参加している各配信サーバ1、2、3、4が、サーバ間DHTネットワークSDを用いて、上記第2実施形態と同様の重複数調整方法により、情報配信システムSに投入された全てのコンテンツ情報を保障するようにしているため、仮に特定のコンテンツ情報を保持しているユーザ端末10が一度にユーザ間DHTネットワークYDから離脱しても、ユーザ端末10が特定のコンテンツ情報を検索するユーザ間DHTネットワークYD上には、前記特定のコンテンツ情報を保持している配信サーバ1、2、3、4が存在することになるので、ユーザ端末10は、確実に所望する特定のコンテンツ情報を取得できる。
以上説明したように、第1〜第3実施形態に係る情報配信システムSでは、調整サーバ5又はルートノードとして機能する配信サーバ1、2、3、4により、当該情報配信システムSの仮想ストレージにおける同一のコンテンツ情報の数を理想数に近づけるように、仮想ストレージにおけるコンテンツ情報の重複を調整することができるので、当該情報配信システムSに投入した全てのコンテンツ情報を配信可能に保障することができる。
なお、上記第1及び第2実施形態では、各ユーザ端末10が配信サーバ1、2、3、4からコンテンツ情報を取得するサーバ・クライアント型の情報配信システムを例に挙げて説明したが、本発明は、これに限定するものではなく、複数の配信サーバ1、2、3、4を備えた情報配信システムであれば、任意の情報配信システムSに適用することができ、たとえば、各ユーザ端末10によりDHTネットワークが構成され、ユーザ端末10同士でもコンテンツ情報の送受信が可能な一般ユーザによる分散ストレージシステムを用いた情報配信システムに対しても適用することができる。