以下、図面を参照して本発明に係る実施形態の一例を詳細に説明する。本実施形態では、複数のユーザが所属するグループで共有して参照されるコンテンツを、ユーザの近隣のキャッシュサーバに事前配備するコンテンツ取得システムに、本発明を適用した場合について説明する。より具体的には、本実施形態のコンテンツ取得システムは、ユーザからのグループ登録(Subscribe)を受けたキャッシュサーバに、ユーザからのコンテンツ要求に先立って、ユーザが所属するグループで共有のコンテンツを事前配備するシステムである。
図1に示すように、本実施形態に係るコンテンツ取得システム10は、コンテンツ管理装置40と、複数のキャッシュサーバ(CS)201〜206と、複数の記憶装置301〜306と、複数のユーザ端末601〜604とを含む。コンテンツ管理装置40は、広域ネットワーク700に接続されている。また、広域ネットワーク700は、ローカルネットワーク701、702、703の各々と接続されている。なお、一般に、ローカルネットワークに設けられる中継装置の数より、広域ネットワークに設けられる中継装置の数の方が多い。すなわち、ローカルネットワーク内での通信に比べ、広域ネットワークを介したローカルネットワーク間の通信の方が、経由する中継装置の数が多くなるため、通信コストが大きい。
また、図1の例では、キャッシュサーバ201〜206の各々と、記憶装置301〜306の各々とは、1対1で接続されている。また、キャッシュサーバ201、202は、ローカルネットワーク701に接続され、キャッシュサーバ203、204は、ローカルネットワーク702に接続され、キャッシュサーバ205、206は、ローカルネットワーク703に接続されている。
なお、キャッシュサーバ201〜206の各々の構成は同様であるため、以下では、キャッシュサーバ201〜206を区別することなく説明する場合には、「キャッシュサーバ20n」と表記する。また、記憶装置301〜306の各々の構成は同様であるため、以下では、記憶装置301〜306を区別することなく説明する場合には、「記憶装置30n」と表記する。
また、図1の例では、ユーザ端末601は、ローカルネットワーク701に接続され、ユーザ端末602は、ローカルネットワーク702に接続され、ユーザ端末603、604は、ローカルネットワーク703に接続されている。ただし、ユーザ端末601〜604の各々は、携帯電話、スマートフォン、タブレット端末、ノート型パーソナルコンピュータ等の可搬型の端末であり、ローカルネットワーク701、702、703のいずれにも接続可能である。以下では、ユーザ端末601〜604を区別することなく説明する場合には、「ユーザ端末60n」と表記する。
なお、コンテンツ取得システム10のネットワーク構成は図1の例に限定されない。また、コンテンツ取得システム10に含まれるキャッシュサーバ20nの数、記憶装置30nの数、及びユーザ端末60nの数も図1の例に限定されない。
コンテンツ管理装置40は、図2に示すように、制御部41と、コンテンツ記憶部42と、コンテンツリスト43と、コンテンツ位置リスト44とを含む。
コンテンツ記憶部42には、ユーザに配信するための複数のコンテンツが記憶される。コンテンツは、例えば画像データ、映像データ、音楽データ、テキストデータ等である。
制御部41は、過去にユーザにより参照されたコンテンツの履歴に基づいて、同じコンテンツを参照するユーザのグループを抽出する。そして、制御部41は、グループ毎に、そのグループに所属するユーザが参照する同じコンテンツを、そのグループにおける共有のコンテンツとして特定し、グループ毎の共有のコンテンツの情報を登録したコンテンツリストを作成する。
図3に、コンテンツリスト43の一例を示す。図3の例では、グループ毎に、そのグループの識別情報であるグループIDと、そのグループの共有のコンテンツの識別情報であるコンテンツIDと、その共有のコンテンツのサイズとが対応付けられている。すなわち、図3に示すコンテンツリスト43の<Gr1,abc,50Mb>というエントリは、「グループID=Gr1のグループは、ファイルサイズが50MbのコンテンツID=abcのコンテンツを共有で参照する」という意味を示す。制御部41は、作成したコンテンツリスト43をコンテンツ管理装置40の所定の記憶領域に記憶する。なお、以下では、グループID=Grnのグループを「グループGrn」と表記し、コンテンツID=nのコンテンツを「コンテンツn」と表記する。
また、制御部41は、コンテンツ記憶部42に記憶された複数のコンテンツの各々を、キャッシュサーバ20nのいずれかに配備する。1つのコンテンツを1つのキャッシュサーバに配備してもよいし、複数のキャッシュサーバに配備してもよい。ここで、キャッシュサーバ20nへのコンテンツの配備とは、キャッシュサーバ20nに対応する記憶装置30nのコンテンツ記憶部34(詳細は後述)に、コンテンツを記憶することである。
また、制御部41は、どのコンテンツをどのキャッシュサーバ20nに配備したかを示す情報、すなわち各コンテンツの位置を示すコンテンツ位置リストを作成する。図4に、コンテンツ位置リスト44の一例を示す。図4の例では、コンテンツのコンテンツIDと、そのコンテンツが配備されたキャッシュサーバの識別情報であるキャッシュサーバID(CS−ID)とが対応付けられている。例えば、図4に示すコンテンツ位置リスト44は、<abc,CS201>というエントリを含む。このエントリは、「コンテンツabcは、キャッシュサーバ201に保持されている」ことを意味する。制御部41は、作成したコンテンツ位置リスト44を、コンテンツ管理装置40の所定の記憶領域に記憶する。なお、本実施形態では、キャッシュサーバ20nのCS−IDを「CS20n」としている。
また、制御部41は、後述する処理により、各キャッシュサーバ20nへのコンテンツの配備状況に変更が生じた場合には、各キャッシュサーバ20nからその情報を取得する。そして、制御部41は、取得した情報に基づいて、コンテンツ位置リスト44を更新する。
また、制御部41は、キャッシュサーバ20nからのコンテンツの位置の問い合わせに応答する。具体的には、制御部41は、キャッシュサーバ20nからグループIDを受信すると、コンテンツリスト43から、受信したグループIDに対応するコンテンツID及びそのコンテンツのサイズを取得する。そして、制御部41は、コンテンツ位置リスト44を参照して、取得したコンテンツIDに対応するCS−IDを全て取得し、コンテンツID及びサイズと共に、キャッシュサーバ20nに返送する。
次に、キャッシュサーバ20n及び記憶装置30nについて詳述する。図5に示すように、記憶装置30nには、速度リスト31と、他CS保持リスト32と、コンテンツ管理リスト33とが記憶される。また、記憶装置30nは、コンテンツ記憶部34を有する。
速度リスト31は、記憶装置30nに対応するキャッシュサーバ20nと、他のキャッシュサーバ20nの各々との間の通信状況を示す情報が登録されるリストである。図6に、一例として、キャッシュサーバ204の速度リスト31を示す。図6の例では、他のキャッシュサーバ20nのCS−IDと、他のキャッシュサーバ20nとの間の単位時間当たりのデータ転送量で表されるスループット(Mbps)とが対応付けられている。すなわち、図6に示すキャッシュサーバ204が保持する速度リスト31の<CS201,2Mbps>というエントリは、「キャッシュサーバ204とキャッシュサーバ201との間のスループットは2Mbpsである」という意味を示す。
速度リスト31には、他のキャッシュサーバ20nの数だけエントリが登録される。また、速度リスト31に登録されるスループットの値は、その速度リスト31を保持しているキャッシュサーバ20nからみたスループットであり、それぞれのキャッシュサーバ20nが保持する速度リスト31の値は、キャッシュサーバ20n毎に異なる。なお、「キャッシュサーバ20nが保持する速度リスト31」とは、キャッシュサーバ20nに対応する記憶装置30nに記憶された速度リスト31である。
コンテンツ記憶部34には、コンテンツ管理装置40、または他のキャッシュサーバ20nから取得したコンテンツが記憶される。
他CS保持リスト32及びコンテンツ管理リスト33については後述する。
キャッシュサーバ20nは、グループ情報受付部21と、選択部22と、コンテンツ取得部23と、管理部24と、コンテンツ応答部25とを含む。なお、グループ情報受付部21は、本発明の受付部及び応答部の一例である。また、選択部22及びコンテンツ取得部23は、本発明の要求部の一例である。また、管理部24は、本発明の記憶制御部及び削除部の一例である。
グループ情報受付部21は、自装置の配下に付いたユーザ端末60nから、グループ情報を受け付ける。例えば、図7に示すように、キャッシュサーバ20nの物理的な位置に応じて、各キャッシュサーバ20nが担当する領域を定めておく。そして、あるキャッシュサーバ20nの領域において、ユーザがユーザ端末60nを操作することにより、その領域に対応するキャッシュサーバ20nにグループ登録(Sbscribe)が行われる。本実施形態では、ユーザ端末60nが存在する領域に対応するキャッシュサーバ20nを、ユーザ端末60nにとっての近隣キャッシュサーバという。グループ登録は、例えば、ユーザ端末60nで対象のアプリケーションを起動した場合などに、ユーザが所属するグループのグループ情報を含むメッセージを、近隣キャッシュサーバに送信することにより行われる。本実施形態では、ユーザ端末60nが近隣キャッシュサーバにグループ登録した状態を、ユーザ端末60nがそのキャッシュサーバ20nの配下に付いた、という。
例えば、図7の例では、キャッシュサーバ201の領域で操作されるユーザ端末601は、キャッシュサーバ201の配下に付く。また、キャッシュサーバ204の配下に付いていたユーザ端末602が移動することにより、キャッシュサーバ205の領域に入る場合もある。この場合、ユーザ端末602は、キャッシュサーバ204の配下を離れ、キャッシュサーバ205の配下に付く。
ここで、ユーザ端末60nから送信されたグループ情報が、近隣キャッシュサーバに届く仕組みについて説明する。例えば、ユーザ端末60nで起動されるアプリケーション(以下、「端末アプリ」という)が通常行うDNS(Domain Name Service)問い合わせを利用することができる。端末アプリは通常、端末アプリに予め設定されている接続先URLをキーにDNS問い合わせを行い、接続先のIPアドレスを得て、そのIPアドレス宛にメッセージを送信する。
例えば、図8に示すように、グループ登録の際も、ユーザ端末601は、まずコンテンツ管理装置40のURLをキーにDNSサーバに問い合わせを行う(図8中の(1))。DNSサーバでは、アクセスポイント(AP)の識別情報と、そのAPに近いキャッシュサーバのIPアドレスとを対応付けて保持しておく。そして、DNSサーバは、ユーザ端末601の接続APに近いキャッシュサーバ201のIPアドレス(10.25.1.10)を返す(図8中の(2))。これにより、ユーザ端末601の近隣キャッシュサーバ201にグループ登録がされる(図8中の(3))。
なお、DNSサーバが、ユーザ端末の接続APを把握する方法としては、例えば、ユーザ端末に割り当てるIPアドレスの範囲を、接続AP毎に決めておくことで、送信元IPアドレスから接続APを知ることができる。
また、図7に示したユーザ端末602のように、ユーザ端末60nが移動した場合には、端末アプリを既に起動した状態で、新たな近隣キャッシュサーバに対してグループ登録を行う必要がある。この方法としては、例えば、端末アプリで、接続APのID(基地局IDや無線BSSID((Basic Service Set ID、通常は接続APのMACアドレス))を監視する。そして、接続APのID変更時に、グループ情報を近隣キャッシュサーバに送信する。
なお、本実施形態では、グループ情報受付部21は、グループ情報として、グループの識別情報であるグループIDを含むメッセージを、ユーザ端末60nから受信する場合について説明するが、これに限定されない。例えば、グループ情報受付部21は、ユーザの識別情報(例えば、ユーザID)を受信してもよい。この場合、グループ情報受付部21は、ユーザの識別情報とグループ情報との対応リストを予め保持しておき、受信したユーザの識別情報と、この対応リストとから、そのユーザのグループ情報を取得することができる。
選択部22は、グループ情報受付部21で受け付けたグループIDに基づいて、そのグループIDが示すグループで共有のコンテンツを、他のいずれのキャッシュサーバ20nから取得するかを選択する。選択部22は、できるだけ早くコンテンツを取得完了できるキャッシュサーバ20nを選択する。
具体的には、選択部22は、グループ情報受付部21で受け付けたグループIDをコンテンツ管理装置40に送信することにより、そのグループIDが示すグループで共有のコンテンツの位置を問い合わせる。選択部22は、コンテンツ管理装置40から返送される、グループIDに対応した共有のコンテンツのコンテンツID、コンテンツのサイズ、及びコンテンツの位置(CS−ID)を受信する。
例えば、図9に示すように、ユーザ端末602がキャッシュサーバ204へグループ登録することにより、キャッシュサーバ204のグループ情報受付部21が、グループID=Gr1を受け付けたとする(図9中の(1))。キャッシュサーバ204の選択部22は、グループID=Gr1をコンテンツ管理装置40へ送信して、グループGr1の共有コンテンツをどのキャッシュサーバ20nが保持しているかを問い合わせる。
コンテンツ管理装置40では、制御部41が、例えば図3に示すコンテンツリスト43から、グループID=Gr1をキーにして、コンテンツID=abc、及びそのコンテンツのサイズ=50Mbを取得する。また、制御部41は、例えば図4に示すコンテンツ位置リスト44から、取得したコンテンツIDをキーにして、コンテンツabcの位置として、キャッシュサーバ201及びキャッシュサーバ203のCS−ID=CS201及びCS203を取得する。制御部41は、コンテンツリスト43から取得したコンテンツID及びコンテンツのサイズと、コンテンツ位置リスト44から取得したコンテンツの位置(CS−ID)とを、キャッシュサーバ204に返送する。例えば、キャッシュサーバ204に返送される情報は、<abc,50Mb,(CS201,CS203)>のような情報である。
選択部22は、コンテンツ管理装置40から返送された情報を取得する。選択部22は、取得した情報に含まれるコンテンツの位置毎、すなわち共有のコンテンツが配備されたキャッシュサーバ20n毎に、そのキャッシュサーバ20nからコンテンツを取得した場合の取得完了予定時刻を計算する。
具体的には、選択部22は、取得したCS−IDをキーに、速度リスト31から、コンテンツの位置である各キャッシュサーバ20nと自装置との間のスループットを取得する。そして、選択部22は、コンテンツ管理装置40から受信したコンテンツのサイズと、各キャッシュサーバ20nとのスループットとに基づいて、各キャッシュサーバ20nからコンテンツを取得した場合に要する取得時間を計算する。そして、選択部22は、現在時刻に取得時間を加算した時刻を取得完了予定時刻とする。
例えば図6に示す速度リスト31から、キャッシュサーバ201とのスループット=2Mbps、及びキャッシュサーバ203とのスループット=25Mbpsが取得される。コンテンツabcのサイズは50Mbであるので、キャッシュサーバ201からの取得時間は25秒、キャッシュサーバ203からの取得時間は2秒となる。従って、現在時刻を11:20:15とすると、キャッシュサーバ201からの取得完了予定時刻は、11:20:15の25秒後の11:20:40、キャッシュサーバ203からの取得完了予定時刻は、11:20:15の2秒後の11:20:17となる。
本実施形態では、図9に示すように、端末アプリ起動時(図9中の(1))から、ユーザ端末60nからのコンテンツの要求(図9中の(4))までに、ユーザ端末60nの近隣キャッシュサーバ20nにコンテンツを事前配備しておきたい。すなわち、端末アプリ起動時から、ユーザ端末60nからのコンテンツの要求までの時間が、事前配備のための上限時間となる。そこで、選択部22は、共有のコンテンツを保持しているキャッシュサーバ201、203のうち、取得完了予定時刻が最も早いキャッシュサーバ203を選択し、該当のコンテンツを要求する(図9中の(3))。
ここで、ユーザ端末60nが、端末アプリを起動した状態で移動した場合を考える。例えば、図7に示すように、ユーザ端末602が、端末アプリ起動時にグループ登録したキャッシュサーバ204とは別のキャッシュサーバ205の配下に移動したとする。以下、ユーザ端末60nが移動前にグループ登録したキャッシュサーバ20nを、「移動元のキャッシュサーバ20n」という。また、ユーザ端末60nが端末アプリを起動した状態で移動後にグループ登録したキャッシュサーバ20nを、「移動先のキャッシュサーバ20n」という。
この場合、移動元のキャッシュサーバ204及び移動先のキャッシュサーバ205の各々で、図9と同様の処理により、コンテンツ管理装置40へ問い合わせて、コンテンツabcを取得することが想定される。しかし、移動先のキャッシュサーバ205へグループ登録する際には、移動元のキャッシュサーバ204が既にコンテンツabcを保持している可能性が高い。また、移動先のキャッシュサーバ205と移動元のキャッシュサーバ204との間の通信距離は近いことが想定されるため、移動元のキャッシュサーバ204からコンテンツを取得する際の取得完了予定時刻は早いと考えられる。そこで、本実施形態では、移動元のキャッシュサーバ20nが保持しているコンテンツを取得することを考える。
例えば、図10の左図に示すように、端末アプリ起動時のグループ登録では、キャッシュサーバ204は、(1)グループ登録を受け付け、(2)コンテンツ管理装置40に問い合わせ、(3)コンテンツ管理装置40からコンテンツの位置を取得する。そして、キャッシュサーバ204は、(4)コンテンツを保持するキャッシュサーバ203からコンテンツabcを取得する。この段階で、キャッシュサーバ204は、コンテンツabcを保持することになる。そこで、キャッシュサーバ204は、グループ登録を受け付けた旨のユーザ端末602への返信(図10中の(5)の「OK」)に、コンテンツabcがキャッシュサーバ204に保持されていることを示すコンテンツ位置情報を含める。図10の左図の例では、<abc,CS204>がコンテンツ位置情報の一例である。
そして、ユーザ端末602が、端末アプリを起動したままの状態でキャッシュサーバ205の配下へ移動すると、ユーザ端末602は、キャッシュサーバ205へグループ登録することになる。この際、図10の右図に示すように、(6)移動元のキャッシュサーバ204から取得したコンテンツ位置情報を、グループ登録のメッセージに含める。これにより、移動先のキャッシュサーバ205は、グループ登録のメッセージに含まれるグループID=Gr1が示すグループGr1の共有のコンテンツabcが、移動元のキャッシュサーバ204に保持されていることを認識することができる。従って、移動先のキャッシュサーバ205は、コンテンツ管理装置40に問い合わせることなく、(7)移動元のキャッシュサーバ204からコンテンツabcを取得することができる。これにより、コンテンツ管理装置40へのコンテンツ位置の問い合わせを省略することができ、コンテンツの事前配備に要する時間を短縮することができる。
しかし、各キャッシュサーバ20nに対応する記憶装置30nにおけるコンテンツ記憶部34の蓄積容量には制限があるため、蓄積してから時間が経過したコンテンツは削除されてしまう。従って、ユーザ端末602が移動先のキャッシュサーバ205にグループ登録する際には、コンテンツabcが、移動元のキャッシュサーバ204に既に存在しない場合がある。この場合、移動元のキャッシュサーバ204からコンテンツを取得することができず、改めてコンテンツ管理装置40に問い合わせを行って、対象のコンテンツを保持するキャッシュサーバ20nを探索し、コンテンツを要求し直す必要がある。従って、図10の右図の(7)に示すように、移動元のキャッシュサーバ204に対して行うコンテンツの要求は無駄になってしまう。
そこで、本実施形態では、ユーザ端末60nにコンテンツ位置情報を持たせ、そのコンテンツ位置情報をグループ登録と共に取得する。そして、取得したコンテンツ位置情報が新しい場合には、移動元のキャッシュサーバ20nへコンテンツを要求し、コンテンツ位置情報が古い場合には、コンテンツ管理装置40への問い合わせを行う。コンテンツ位置情報が新しいか古いかの判断は、コンテンツの各々を各キャッシュサーバ20nに対応するコンテンツ記憶部34に蓄積した順番を示すシーケンス番号を、各コンテンツに付与し、このシーケンス番号を用いて行う。シーケンス番号は、コンテンツがコンテンツ記憶部34に蓄積された順番を把握可能なものであればよい。本実施形態では、説明を簡単にするため、コンテンツ記憶部34への蓄積順に、1からの連番となる数字をシーケンス番号としてコンテンツに付与する場合について説明する。
具体的には、図11の左図に示すように、(4A)移動元のキャッシュサーバ204がコンテンツを取得する際、コンテンツの取得元のキャッシュサーバ203で保持する最古のコンテンツに付与されたシーケンス番号も取得する。以下では、各キャッシュサーバ20nで保持する最古のコンテンツに付与されたシーケンス番号を「最古シーケンス番号」という。移動元のキャッシュサーバ204では、取得した最古シーケンス番号を、コンテンツの取得元であるキャッシュサーバ203のCS−IDと対応付けて記憶しておく。このように、各キャッシュサーバ20nは、他のキャッシュサーバ20nからコンテンツを取得する毎に、他のキャッシュサーバ20nの最古シーケンス番号を取得することで、他のキャッシュサーバ20nにおけるコンテンツの保持状況を管理する。
また一方で、移動元のキャッシュサーバ204は、自装置が取得したコンテンツに新たなシーケンス番号を付与して、自装置が保持するコンテンツについても管理する。移動元のキャッシュサーバ204は、(5A)グループ登録を受け付けた旨のユーザ端末602への返信にコンテンツ位置情報を含める際に、取得したコンテンツabcに自装置で付与したシーケンス番号も含める。すなわち、図11中の(5A)の<abc,CS204,seq32>の例は、「コンテンツabcは、キャッシュサーバ204に対応するコンテンツ記憶部34に32番目に蓄積された」という意味を示す。
そして、図11の右図に示すように、ユーザ端末602が、端末アプリを起動したままの状態でキャッシュサーバ205の配下へ移動して、(6A)グループ登録を行う。この際、グループ登録のメッセージに、コンテンツ位置情報に加え、そのコンテンツ位置情報と共に移動元のキャッシュサーバ204から受け取ったシーケンス番号も含める。
さらに、移動先のキャッシュサーバ205は、自装置で管理する移動元のキャッシュサーバ204の最古シーケンス番号と、グループ登録のメッセージに含まれるシーケンス番号とを比較する。最古シーケンス番号は、そのキャッシュサーバ20nにおいて、最古シーケンス番号より古いシーケンス番号が付与されたコンテンツは、既に削除されていることを示す。すなわち、グループ登録のメッセージに含まれるシーケンス番号が、移動元のキャッシュサーバ204の最古シーケンス番号より古い場合には、移動元のキャッシュサーバ204は、対象のコンテンツabcを保持していないと判断することができる。この場合、移動先のキャッシュサーバ205は、移動元のキャッシュサーバ204への不要なコンテンツ要求を行うことなく、コンテンツ管理装置40へ問い合わせを行う(図11中の(2)及び(3))。
一方、グループ登録のメッセージに含まれるシーケンス番号が、移動元のキャッシュサーバ204の最古シーケンス番号より新しい場合には、移動元のキャッシュサーバ204は、対象のコンテンツabcを保持している可能性が高いと判断することができる。この場合、移動先のキャッシュサーバ205は、コンテンツ管理装置40へ問い合わることなく、移動元のキャッシュサーバ204へのコンテンツ要求を行う(図11の右図の(7))。
以下では、上記図11の処理を実現するためのグループ情報受付部21及び選択部22の機能、残りの機能部、他CS保持リスト32、及びコンテンツ管理リスト33について説明する。
なお、上記図11の処理を実現するために、ユーザ端末60nに、キャッシュサーバ20nからコンテンツ位置情報(コンテンツID及びCS−ID)及びシーケンス番号を受信し、一旦記憶する機能を持たせる。また、ユーザ端末60nに、上記一旦記憶したコンテンツ位置情報及びシーケンス番号を、グループ登録のメッセージに含める機能を持たせる。
また、以下では、移動元のキャッシュサーバ20nを「移動元CS」ともいい、移動元CSのCS−IDを「移動元CS−ID」ともいう。なお、本実施形態では、説明の便宜上、上記で説明した移動元のキャッシュサーバ(図10及び図11の例では、キャッシュサーバ204)という表現を用いる。ただし、グループ登録を受け付けたキャッシュサーバ20nにおいて、ユーザ端末60nが直前にグループ登録していたキャッシュサーバ20nを厳密に特定するわけではない。本実施形態では、グループ登録のメッセージに含まれるCS−IDが示すキャッシュサーバ20nを、移動元CSとして扱うものである。また、以下では、取得対象のコンテンツを「対象コンテンツ」、対象コンテンツのコンテンツIDを「対象コンテンツID」、移動元CSにおいて対象コンテンツに対して付与されたシーケンス番号を「対象シーケンス番号」ともいう。
グループ情報受付部21は、後述する管理部24から、対象コンテンツID及びシーケンス番号が通知されると、通知された対象コンテンツID及びシーケンス番号と、自装置のCS−IDとを含むメッセージを作成する。そして、グループ情報受付部21は、作成したメッセージを、グループ登録を受け付けた旨のメッセージとして、ユーザ端末60nへ送信する。
選択部22は、グループ情報受付部21が受け付けたグループ登録のメッセージに、コンテンツID、CS−ID、及びシーケンス番号が含まれている場合には、他CS保持リスト32を参照して、移動元CSにコンテンツを要求するか否かを判断する。他CS保持リスト32は、上述した、他のキャッシュサーバ20nにおけるコンテンツの保持状況を管理するための情報が登録されたリストである。図12に、他CS保持リスト32の一例を示す。なお、図12は、キャッシュサーバ204が保持するCS保持リスト32の一例である。図12の例では、他のキャッシュサーバ20nのCS−IDと、そのキャッシュサーバ20nから取得した最古シーケンス番号と、前回シーケンス番号とが対応付けてられている。「前回シーケンス番号」は、今回取得した最古シーケンス番号の前に「最古シーケンス番号」として登録されていたシーケンス番号である。詳細は後述するが、前回シーケンス番号は、シーケンス番号が有限の場合において、他のキャッシュサーバ20nにおけるコンテンツ保持状況を判断する際に利用される。
選択部22は、具体的には、グループ登録のメッセージに含まれるCS−IDをキーとして、他CS保持リスト32から、移動元CSの最古シーケンス番号及び前回シーケンス番号を取得する。また、選択部22は、グループ登録のメッセージに含まれるシーケンス番号を、対象シーケンス番号として抽出する。
上述のように、本実施形態では、シーケンス番号を1からの連番で付与するため、図13に示すように、最古シーケンス番号(図13の例では、「seq10」)より古い(小さい)シーケンス番号が付与されたコンテンツは、既に削除されていることを表す。ただし、本実施形態では、シーケンス番号は有限であるものとし、取得したコンテンツに付与するシーケンス番号が枯渇した場合には、1からシーケンス番号を再利用するものとする。この場合、図14に示すように、最古シーケンス番号より新しい(大きい)シーケンス番号が付与されているコンテンツであっても、削除されている場合があり得る。なお、図13及び図14では、各ボックスが1つのコンテンツを表し、各コンテンツに付与されたシーケンス番号を、各ボックス内に表記している。
そこで、選択部22は、移動元CSの前回シーケンス番号が最古シーケンス番号より古いか否かをまず判定する。前回シーケンス番号が最古シーケンス番号より古い場合において、最古シーケンス番号が対象シーケンス番号より古い場合には、選択部22は、移動元CSをコンテンツの要求先として選択する。一方、前回シーケンス番号が最古シーケンス番号より古い場合において、最古シーケンス番号が対象シーケンス番号より新しい場合には、選択部22は、コンテンツ管理装置40にコンテンツ位置の問い合わせを行う。そして、選択部22は、上述したように、取得完了予定時刻が最も早いキャッシュサーバ20nをコンテンツの要求先として選択する。
また、前回シーケンス番号が最古シーケンス番号より新しい場合は、選択部22は、対象シーケンス番号が、最古シーケンス番号以上、かつ前回シーケンス番号未満の場合に、移動元CSをコンテンツ要求先として選択する。一方、前回シーケンス番号が最古シーケンス番号より新しい場合において、対象シーケンス番号が、最古シーケンス番号未満、または前回シーケンス番号以上の場合には、選択部22は、コンテンツ管理装置40にコンテンツ位置の問い合わせを行う。そして、選択部22は、上述したように、取得完了予定時刻が最も早いキャッシュサーバ20nをコンテンツの要求先として選択する。
また、選択部22は、対象コンテンツID、及び選択したキャッシュサーバ20nのCS−IDを、コンテンツ取得部23に通知する。なお、対象コンテンツが自装置に既に事前配備されている場合には、選択部22は、コンテンツ取得先のキャッシュサーバ20nを選択することなく、後述する管理部24に、対象コンテンツIDを通知する。
コンテンツ取得部23は、選択部22から通知されたCS−IDが示すキャッシュサーバ20nに対して、選択部22から通知された対象コンテンツIDが示すコンテンツを要求する。
また、コンテンツ取得部23は、コンテンツの要求に応じて、他のキャッシュサーバ20nから送信されたコンテンツ及びそのコンテンツIDと、コンテンツの送信元である他のキャッシュサーバ20nのCS−ID及び最古シーケンス番号とを取得する。コンテンツ取得部23は、取得したコンテンツをコンテンツ記憶部34に記憶する。また、コンテンツ取得部23は、取得したCS−ID、最古シーケンス番号、及びコンテンツIDを管理部24へ通知する。
また、コンテンツ取得部23は、コンテンツの取得が完了すると、自装置にコンテンツが配備されたことをコンテンツ管理装置40へ通知する。例えば、コンテンツ取得部23は、取得完了したコンテンツのコンテンツID、及び自装置のCS−IDを含む情報<abc,CS205>を、コンテンツ管理装置40へ送信する。これにより、コンテンツ管理装置40のコンテンツ位置リスト44に、<abc,CS205>のエントリが追加される。
管理部24は、コンテンツ取得部23から通知されたCS−ID及び最古シーケンス番号を、他CS保持リスト32へ登録する。この際、他CS保持リスト32に、該当のキャッシュサーバ20nについてのエントリが既に存在する場合には、管理部24は、該当のエントリの「最古シーケンス番号」に登録されているシーケンス番号を「前回シーケンス番号」に移す。そして、管理部24は、通知された最古シーケンス番号を「最古シーケンス番号」に登録することで、該当のエントリを更新する。
例えば、図11の左図に示すように、キャッシュサーバ204のコンテンツ取得部23が、キャッシュサーバ203からコンテンツabcを取得し、その際に、キャッシュサーバ203の最古シーケンス番号としてseq20を取得したとする。また、キャッシュサーバ204が保持する他CS保持リスト32には、キャッシュサーバ203についてのエントリとして、<CS203,seq15(最古シーケンス番号),seq10(前回シーケンス番号)>が登録されているものとする。この場合、キャッシュサーバ204の管理部24は、自装置が保持する他CS保持リスト32におけるキャッシュサーバ203についてのエントリを、<CS203,seq20(最古シーケンス番号),seq15(前回シーケンス番号)>に更新する。
また、管理部24は、自装置のコンテンツ記憶部34に記憶されているコンテンツを管理する。本実施形態では、管理部24は、コンテンツ記憶部34に記憶するコンテンツをFIFO(First In, First Out)で管理する。管理部24は、コンテンツ記憶部34に記憶されたコンテンツの蓄積容量が閾値以上となった場合には、コンテンツ記憶部34への蓄積順が古いコンテンツから順に削除する。
管理部24は、コンテンツ取得部23からコンテンツIDを通知された際には、そのコンテンツに対して、新たなシーケンス番号を付与し、コンテンツ管理リスト33に登録する。コンテンツ管理リスト33は、自装置のコンテンツ記憶部34に記憶されているコンテンツと、そのコンテンツに付与したシーケンス番号とを対応付けて管理するリストである。図15に、コンテンツ管理リスト33の一例を示す。なお、図15は、キャッシュサーバ203が保持するコンテンツ管理リスト33の一例である。
管理部24は、コンテンツ記憶部34へのコンテンツの蓄積順に、コンテンツID及びシーケンス番号のエントリをコンテンツ管理リスト33に追加する。すなわち、管理部24は、コンテンツ取得部23で新たにコンテンツが取得される毎に、コンテンツ管理リスト33の末尾にエントリを追加する。また、管理部24は、コンテンツ記憶部34からコンテンツを削除した場合には、コンテンツ管理リスト33の先頭から順に、削除したコンテンツに対応するエントリを削除する。これにより、コンテンツ管理リスト33の先頭のエントリは、最古シーケンス番号を表し、末尾のエントリは、自装置が保持する最新のコンテンツに付与されたシーケンス番号(以下、「最新シーケンス番号」という)を表すことになる。
また、管理部24は、グループ登録を受け付けた自装置が既に対象コンテンツを保持している場合において、選択部22から通知される対象コンテンツIDが受け取る。管理部24は、コンテンツ管理リスト33から、通知された対象コンテンツIDに対応するシーケンス番号を取得する。そして、管理部24は、対象コンテンツIDと、取得したシーケンス番号とをグループ情報受付部21に通知する。
さらに、管理部24は、後述するコンテンツ応答部25からコンテンツIDが通知されると、通知されたコンテンツIDを含むエントリがコンテンツ管理リスト33に存在するか否かに基づいて、自装置で対象コンテンツを保持しているか否かを判定する。管理部24は、自装置で対象コンテンツを保持しているか否かを示す情報、及び自装置の最古シーケンス番号を、コンテンツ応答部25に通知する。
コンテンツ応答部25は、他のキャッシュサーバ20nから送信されたコンテンツ要求を受信すると、要求されたコンテンツのコンテンツIDを管理部24に通知する。また、コンテンツ応答部25は、コンテンツIDの通知に応じて、管理部24から通知される自装置で対象コンテンツを保持しているか否かを示す情報、及び自装置の最古シーケンス番号を受け取る。自装置が対象コンテンツを保持している場合には、コンテンツ応答部25は、コンテンツ記憶部34から対象コンテンツを取得する。そして、コンテンツ応答部25は、管理部24から通知された最古シーケンス番号と共に、取得したコンテンツを、コンテンツ要求元のキャッシュサーバ20nに送信する。一方、自装置が対象コンテンツを保持していない場合には、コンテンツ応答部25は、その旨を示す情報、及び管理部24から通知された最古シーケンス番号を、コンテンツ要求元のキャッシュサーバ20nに送信する。
キャッシュサーバ20nは、例えば図16に示すコンピュータ80で実現することができる。コンピュータ80はCPU81、一時記憶領域としてのメモリ82、及び不揮発性の記憶部83を備える。また、コンピュータ80は、入出力装置88が接続される入出力インターフェース(I/F)84を備える。また、コンピュータ80は、記録媒体89に対するデータの読み込み及び書き込みを制御するread/write(R/W)部85、及びインターネット等のネットワークに接続されるネットワークI/F86を備える。CPU81、メモリ82、記憶部83、入出力I/F84、R/W部85、及びネットワークI/F86は、バス87を介して互いに接続される。
また、コンピュータ80は、ネットワークI/F86を介して、記憶装置30nと接続される。また、コンピュータ80は、ネットワークI/F86を介して、ローカルネットワーク701、702、703のいずれかと接続される。
記憶部83はHDD(Hard Disk Drive)、SSD(solid state drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部83には、コンピュータ80をキャッシュサーバ20nとして機能させるためのコンテンツ取得プログラム90が記憶される。CPU81は、コンテンツ取得プログラム90を記憶部83から読み出してメモリ82に展開し、コンテンツ取得プログラム90が有するプロセスを順次実行する。また、CPU81は、記憶装置30nに記憶された情報を読み出して、速度リスト31、他CS保持リスト32、及びコンテンツ管理リスト33の各々をメモリ82に展開する。
コンテンツ取得プログラム90は、グループ情報受付プロセス91と、選択プロセス92と、コンテンツ取得プロセス93と、管理プロセス94と、コンテンツ応答プロセス95とを有する。
CPU81は、グループ情報受付プロセス91を実行することで、図5に示すグループ情報受付部21として動作する。また、CPU81は、選択プロセス92を実行することで、図5に示す選択部22として動作する。また、CPU81は、コンテンツ取得プロセス93を実行することで、図5に示すコンテンツ取得部23として動作する。また、CPU81は、管理プロセス94を実行することで、図5に示す管理部24として動作する。また、CPU81は、コンテンツ応答プロセス95を実行することで、図5に示すコンテンツ応答部25として動作する。これにより、コンテンツ取得プログラム90を実行したコンピュータ80が、キャッシュサーバ20nとして機能することになる。
なお、コンテンツ管理装置40、及びユーザ端末60nの各々についても、CPU、メモリ、記憶部、入出力I/F、R/W部、ネットワークI/F、及びバスを備えたコンピュータで実現することができる。また、キャッシュサーバ20n、コンテンツ管理装置40、及びユーザ端末60nの各々が有する機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、本実施形態に係るコンテンツ取得システム10の作用について説明する。ユーザ端末60nからグループ登録が行われると、そのユーザ端末60nの近隣キャッシュサーバ20nが、図17に示すグループ登録受信時処理を実行する。また、キャッシュサーバ20nは、他のキャッシュサーバ20nから送信されたコンテンツ要求を受信すると、図19に示すコンテンツ要求受信時処理を実行する。以下、各処理について詳述する。なお、図17〜図19では、シーケンス番号を「seq」と略記している。
図17に示すグループ登録受信時処理のステップS11で、選択部22が、グループ情報受付部21で受け付けられたグループ登録のメッセージに、コンテンツID、CS−ID、及びシーケンス番号が含まれているか否かを判定する。含まれている場合には、処理はステップS12へ移行し、含まれていない場合には、処理はステップS19へ移行する。
ステップS12では、選択部22が、対象コンテンツが自装置に事前配備済みか否かを判定する。具体的には、選択部22は、グループ登録のメッセージに含まれるコンテンツIDを対象コンテンツIDとして抽出する。そして、選択部22は、コンテンツ管理リスト33に、対象コンテンツIDを含むエントリが存在する場合には、対象コンテンツが自装置に事前配備済みであると判定し、処理はステップS28へ移行する。一方、コンテンツ管理リスト33に、対象コンテンツIDを含むエントリが存在しない場合には、対象コンテンツが自装置に事前配備済みではないと判定し、処理はステップS13へ移行する。
ステップS13では、選択部22が、グループ登録のメッセージに含まれるCS−IDを移動元CS−IDとして抽出し、移動元CS−IDに対応する最古シーケンス番号が、他CS保持リスト32に登録されているか否かを判定する。登録されている場合には、処理はステップS14へ移行し、登録されていない場合には、処理はステップS19へ移行する。
ステップS14では、選択部22が、他CS保持リスト32において、移動元CS−IDに対応する前回シーケンス番号が最古シーケンス番号より古いか否かを判定する。前回シーケンス番号が最古シーケンス番号より古い場合には、処理はステップS15へ移行し、前回シーケンス番号が最古シーケンス番号より新しい場合には、処理はステップS18へ移行する。
ステップS15では、選択部22が、グループ登録のメッセージに含まれるシーケンス番号を、対象シーケンス番号として抽出する。そして、選択部22は、移動元CS−IDに対応する最古シーケンス番号が、対象シーケンス番号より古いか否かを判定する。最古シーケンス番号が対象シーケンス番号よりも古い場合には、選択部22は、対象コンテンツが移動元CSに保持されている可能性が高いと判断し、処理はステップS16へ移行する。一方、最古シーケンス番号が対象シーケンス番号よりも新しい場合には、対象コンテンツが移動元CSに保持されている可能性が低いと判断し、処理はステップS19へ移行する。
ステップS16では、選択部22が、移動元CSをコンテンツの要求先として選択し、コンテンツ取得部23が、移動元CSに対象コンテンツを要求する。
次に、ステップS17で、コンテンツ取得部23が、コンテンツ要求に応じて、移動元CSから送信されたコンテンツを取得できたか否かを判定する。取得できた場合には、処理はステップS20へ移行し、所定時間経過してもコンテンツを取得できなかった場合には、処理はステップS19へ移行する。
一方、上記ステップS14で否定判定されて処理がステップS18へ移行した場合には、シーケンス番号が振り出しに戻って使われていることを表している。そこで、選択部22は、対象シーケンス番号が、最古シーケンス番号以上、かつ前回シーケンス番号未満か否かを判定する。肯定判定の場合には、処理はステップS16へ移行し、選択部22は、移動元CSに対象コンテンツを要求する。一方、否定判定の場合には、処理はステップS19へ移行する。
ステップS19では、選択部22が、コンテンツ管理装置40にコンテンツ位置の問い合わせを行う。そして、選択部22は、コンテンツ管理装置40から取得したコンテンツ位置に基づいて、取得完了予定時刻が最も早いキャッシュサーバ20nをコンテンツの要求先として選択する。そして、コンテンツ取得部23が、選択部22により選択されたキャッシュサーバ20nに対象コンテンツを要求し、最古シーケンス番号と共に対象コンテンツを取得する。
次に、ステップS20で、コンテンツ取得部23が、取得したコンテンツのコンテンツID、コンテンツの取得先のキャッシュサーバ20nのCS−ID、及びコンテンツと共に取得した最古シーケンス番号を管理部24へ通知する。管理部24では、通知されたCS−ID及び最古シーケンス番号に基づいて、他CS保持リスト32を更新する。
次に、ステップS21で、図18に詳細を示すコンテンツ取得後処理が実行される。
図18に示すコンテンツ取得後処理のステップS22で、管理部24が、コンテンツ管理リスト33から自装置の最新シーケンス番号を取得し、最新シーケンス番号に1加算したシーケンス番号を、上記ステップS17又はS19で取得されたコンテンツに付与する。そして、管理部24は、付与したシーケンス番号を含むエントリを、コンテンツ管理リスト33の末尾へ追加する。これにより、追加したシーケンス番号が新たな最新シーケンス番号となる。
次に、ステップS23で、管理部24が、最新シーケンス番号が上限値に達したか否かを判定する。上限値に達した場合には、処理はステップS24へ移行する。ステップS24では、管理部24が、次に上記ステップS22が実行される際の上記ステップS22における最新シーケンス番号を0に設定し、処理はステップS25へ移行する。すなわち、次に上記ステップS22が実行される際には、最新シーケンス番号として1が付与される。これにより、限りあるシーケンス番号を、振り出しに戻って再利用することができる。最新シーケンス番号が上限値に達していない場合には、処理はステップS24をスキップしてステップS25へ移行する。
ステップS25では、コンテンツ取得部23が、取得したコンテンツをコンテンツ記憶部34に蓄積する。そして、コンテンツ取得部23が、取得完了したコンテンツのコンテンツID、及び自装置のCS−IDを含む情報をコンテンツ管理装置40へ送信することにより、自装置にコンテンツが配備されたことをコンテンツ管理装置40へ通知する。
次に、ステップS26で、管理部24が、コンテンツ記憶部34に記憶されたコンテンツの蓄積容量が閾値以上となったか否かを判定する。蓄積容量が閾値以上となった場合には、処理はステップS27へ移行し、管理部24が、コンテンツ記憶部34への蓄積順が古いコンテンツ、すなわちシーケンス番号が古いコンテンツから順に、蓄積容量が閾値以下となるまで削除する。また、管理部24は、コンテンツ管理リスト33から、削除したコンテンツに対応するエントリを削除して、図17のグループ登録受信時処理へ戻る。コンテンツ容量が閾値に達していない場合には、処理はステップS27をスキップして、図17のグループ登録受信時処理へ戻る。
次に、図17に示すグループ登録受信時処理のステップS28で、グループ情報受付部21が、グループ登録を受け付けた旨のメッセージをユーザ端末60nへ送信する。グループ情報受付部21は、このメッセージに、自装置に事前配備された対象コンテンツのコンテンツID、自装置のCS−ID、及び自装置において対象コンテンツに付与したシーケンス番号を含める。これにより、ユーザ端末60nに、対象コンテンツのコンテンツ位置及びシーケンス番号が通知され、グループ登録受信時処理は終了する。
次に、コンテンツ要求受信時処理について説明する。
図19に示すコンテンツ要求受信時処理のステップS31で、コンテンツ応答部25は、要求されたコンテンツのコンテンツIDを管理部24に通知する。そして、管理部24が、コンテンツ管理リスト33を参照して、通知されたコンテンツIDが示すコンテンツを自装置が保持しているか否かを判定する。保持している場合には、処理はステップS32へ移行し、保持していない場合には、処理はステップS33へ移行する。
ステップS32では、管理部24が、コンテンツ管理リスト33から、自装置の最古シーケンス番号を取得する。そして、コンテンツ応答部25が、コンテンツ記憶部34から対象コンテンツを取得し、管理部24で取得されたシーケンス番号と共に、コンテンツ要求元のキャッシュサーバ20nに送信する。一方、ステップS33では、管理部24が、コンテンツ管理リスト33から、自装置の最古シーケンス番号を取得する。そして、コンテンツ応答部25が、対象コンテンツを保持していない旨の情報を、最古シーケンス番号と共にコンテンツ要求元のキャッシュサーバ20nに送信する。そして、コンテンツ受信時処理は終了する。
次に、図20〜図22のシーケンス図を参照して、各装置間での情報のやり取りを中心に、本実施形態に係るコンテンツ取得システム10におけるコンテンツ取得処理の一例を説明する。なお、図20〜図22では、図11と同様、ユーザ端末602が、キャッシュサーバ204にグループ登録後、端末アプリを起動したままの状態で移動して、キャッシュサーバ205にグループ登録する例について説明する。また、ユーザ端末602は、グループGr1に属し、グループGr1の共有コンテンツはコンテンツabcで、コンテンツabcがキャッシュサーバ201、203に蓄積されている状態から処理が開始するものとする。
まず、ユーザ端末602から、端末アプリを起動することにより、キャッシュサーバ204へグループ登録する(S41)。この場合、グループ登録のメッセージには、グループID<Gr1>が含まれ、コンテンツID、CS−ID、及びシーケンス番号は含まれない。
キャッシュサーバ204では、選択部22が、グループID<Gr1>を用いて、コンテンツ管理装置40に対して、対象コンテンツの位置の問い合わせを行う(S42)。
コンテンツ管理装置40では、制御部41が、コンテンツリスト43(図3)から、グループID<Gr1>に対応するコンテンツID及びサイズ<abc,50Mb>を取得する。そして、制御部41は、コンテンツ位置リスト44(図4)から、コンテンツabcを保持するキャッシュサーバのCS−ID<CS201,CS203>を取得する。そして、コンテンツ管理装置40から、コンテンツID、サイズ、CS−IDを含む情報<abc,50Mb,(CS201,CS203)>が、キャッシュサーバ204へ返送される(S43)。
キャッシュサーバ204では、選択部22が、速度リスト31(図6)を参照して、コンテンツabcの取得完了予定時刻が最も早いキャッシュサーバ203を選択する。そして、選択部22は、コンテンツID<abc>を含むコンテンツ要求を、キャッシュサーバ203へ送信する(S44)。
キャッシュサーバ203では、管理部24が、コンテンツ管理リスト33(図15)から、キャッシュサーバ203の最古シーケンス番号<seq20>を取得する。また、コンテンツ応答部25が、コンテンツ記憶部34から、コンテンツabcを取得する。そして、コンテンツ応答部25が、コンテンツabcと、最古シーケンス番号<seq20>とを、キャッシュサーバ204へ送信する(S45)。
キャッシュサーバ204では、コンテンツ取得部23が、取得したコンテンツabcをコンテンツ記憶部34に蓄積する。また、管理部24が、取得した最古シーケンス番号<seq20>に基づいて、他CS保持リスト32(図12)のキャッシュサーバ203についてのエントリを更新する。また、管理部24が、取得したコンテンツabcに新たなシーケンス番号<seq32>を付与して、コンテンツ管理リスト33(図23)を更新する。
また、キャッシュサーバ204では、コンテンツ取得部23が、コンテンツabcがキャッシュサーバ204に保持されている旨の情報<abc,CS204>をコンテンツ管理装置40に通知する(S46)。コンテンツ管理装置40では、制御部41が、通知された<abc,CS204>に基づいて、コンテンツ位置リスト44(図4)を更新する。
さらに、キャッシュサーバ204では、グループ情報受付部21が、キャッシュサーバ204に、グループ登録に関するコンテンツabcが保持されていることを示すコンテンツ位置情報と、そのコンテンツのキャッシュサーバ204におけるシーケンス番号とを含む情報<abc,CS204,seq32>を、ユーザ端末602へ返送する(S47)。
次に、図21を参照して、図20の処理の後、ユーザ端末602が端末アプリを起動したままの状態で、キャッシュサーバ205の配下へ移動した場合について説明する。この場合、図20のステップS47でユーザ端末602が受信した情報<abc,CS204,seq32>をメッセージに含むグループ登録<Gr1,abc,CS204,seq32>がキャッシュサーバ205に対して行われる(S51)。
キャッシュサーバ205では、選択部22が、他CS保持リスト32(図24)におけるキャッシュサーバ204の最古シーケンス番号<seq5>と前回シーケンス番号<seq1>とを比較する。また、選択部22が、グループ登録に含まれるシーケンス番号<seq32>と、最古シーケンス番号<seq5>とを比較する。この比較により、選択部22は、キャッシュサーバ204がコンテンツabcを保持している可能性が高いと判断し、キャッシュサーバ204にコンテンツabcを要求する(S52)。
キャッシュサーバ204では、管理部24が、コンテンツ管理リスト33(図23)から、最古シーケンス番号<seq10>を取得する。そして、コンテンツ応答部25が、コンテンツabc及び最古シーケンス番号<seq10>を、キャッシュサーバ205へ送信する。
キャッシュサーバ205では、図20のS45の後のキャッシュサーバ204と同様に、コンテンツabcがコンテンツ記憶部34へ蓄積される。また、他CS保持リスト32(図24)のキャッシュサーバ204についてのエントリが更新される。また、取得したコンテンツabcに新たなシーケンス番号<seq38>を付与して、コンテンツ管理リスト33(図25)を更新する。
また、キャッシュサーバ205では、図20のS46と同様に、<abc,CS205>がコンテンツ管理装置40に通知され(S54)、コンテンツ管理装置40において、コンテンツ位置リスト44(図4)が更新される。
さらに、キャッシュサーバ205では、図20のS47と同様に、<abc,CS205,seq38>が、ユーザ端末602へ返送される(S55)。
このように、グループ登録のメッセージに、コンテンツID、CS−ID、及びシーケンス番号を含めることで、移動元CSが対象コンテンツを保持しているか否かを判断し、保持していると判断した場合には、移動元CSにコンテンツを要求する。このため、コンテンツ管理装置40への問い合わせ(図20のS42及びS43)を行う必要がないため、コンテンツの事前配備に要する時間を短縮することができる。
次に、図22を参照して、図21のS51と同様のグループ登録が行われた際に(S61)、キャッシュサーバ205が保持する他CS保持リスト32が、図26に示すものであった場合について説明する。
キャッシュサーバ205では、選択部22が、グループ登録に含まれるシーケンス番号<seq32>と、他CS保持リスト32(図26)におけるキャッシュサーバ204の最古シーケンス番号<seq51>とを比較する。この場合、選択部22は、キャッシュサーバ204がコンテンツabcを保持していないと判断し、キャッシュサーバ204にコンテンツabcを要求することなく、コンテンツ管理装置40へコンテンツ位置の問い合わせを行う(S62)。
以降は、図20のS43〜S45と同様に、コンテンツ管理装置40からのコンテンツ位置に基づいて、キャッシュサーバ205が、キャッシュサーバ203からコンテンツabc及び最古シーケンス番号を取得する(S63〜S65)。そして、図21のS54及びS55と同様に、キャッシュサーバ205が、コンテンツ管理装置40への通知、及びユーザ端末602への返送を行う(S66及びS67)。
このように、移動元CSが対象コンテンツを保持していないと判断できる場合には、コンテンツ管理装置40からコンテンツ位置を取得する。そのため、移動元CSへの不要なコンテンツ要求(図21のS52及びS53)を行うことを回避できる。
以上説明したように、本実施形態に係るコンテンツ取得システムによれば、コンテンツ位置情報をユーザ端末に持たせ、この情報を用いてグループ登録を行う。また、各キャッシュサーバへのコンテンツの蓄積順にシーケンス番号を付与し、コンテンツ位置情報と共にシーケンス番号もグループ登録のメッセージに含める。また、各キャッシュサーバでは、他のキャッシュサーバでのコンテンツの保持状況を、シーケンス番号を用いて管理する。そして、コンテンツを要求するキャッシュサーバでは、このシーケンス番号を用いて、グループ登録から得たコンテンツ位置情報が示すキャッシュサーバ(移動元CS)にコンテンツを要求するか否かを判断する。このため、不要なコンテンツの要求を削減することができる。
また、移動元CSに対象コンテンツが保持されているか否かを判定するための情報としてシーケンス番号を用いることで、実際にコンテンツが蓄積または削除された状況を、時刻情報を用いる場合などに比べて正確に把握することができる。
また、コンテンツの事前配備サービスにおいては、各キャッシュサーバへのコンテンツの追加及び削除は、FIFOで管理することが適しているため、上記のようなシーケンス番号を用いたコンテンツの保持状況の管理が実現可能である。
なお、本実施形態における最古シーケンス番号及び前回シーケンス番号を用いた判定が成立するためには、1つのキャッシュサーバ(コンテンツ記憶部)に保持可能なコンテンツの数に対して、シーケンス番号の上限値を大きな値とする必要がある。ただし、「大きな値」としては、近年のコンピュータで一般に使われる64ビットであれば十分である。また、シーケンス番号の上限値として、上記処理に矛盾が生じるほど小さな値しか設定できない場合でも、移動元CSに対象コンテンツが保持されているのに、保持されていないと判定されるだけであり、コンテンツの事前配備自体に不都合を生じるものではない。
また、上記実施形態では、キャッシュサーバによるコンテンツの事前配備のトリガーが、ユーザ端末からのグループ登録(Subscribe)である場合について説明したが、これに限定されない。ユーザによるログイン、ユーザ端末のキャッシュサーバに対応したアクセスポイントへの接続など、ユーザ端末からのコンテンツ要求に先立って行われる接続をトリガーとすることができる。
また、上記実施形態では、他のキャッシュサーバからの要求に応じてコンテンツを送信する際に、自装置の最古シーケンス番号も送信する場合について説明したが、これに限定されない。例えば、キャッシュサーバ間で定期的に最古シーケンス番号を送受信することにより、他のキャッシュサーバの最古シーケンス番号を取得するようにしてもよい。
また、上記実施形態では、コンテンツ管理装置40にコンテンツ位置リスト44を記憶する場合について説明したが、これに限定されない。コンテンツ管理装置40とは別に、コンテンツ位置リスト44を管理するコンテンツ位置リスト管理装置を設けてもよい。
また、上記では、コンテンツ取得プログラム90が記憶部83に予め記憶(インストール)されている態様を説明したが、CD−ROMやDVD−ROM等の記憶媒体に記録された形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
機器の識別情報、取得対象のコンテンツの識別情報、及び前記機器への前記取得対象のコンテンツの蓄積順を示すシーケンス情報を含むコンテンツ取得要求を受け付け、
他機器の識別情報と前記他機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けた他機器保持情報を参照し、前記コンテンツ取得要求に含まれる前記機器の識別情報と対応付けられたシーケンス情報が示す蓄積順が、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求し、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より新しい場合には、前記取得対象のコンテンツを保持する機器を探索し、探索した機器に前記取得対象のコンテンツを要求し、
要求したコンテンツと共に取得した該コンテンツの取得元である機器の識別情報と、該機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けて、前記他機器保持情報として記憶し、
取得したコンテンツの識別情報、前記コンテンツ取得要求を受け付けた機器の識別情報、及び前記コンテンツ取得要求を受け付けた機器への前記取得したコンテンツの蓄積順を示すシーケンス情報を、前記コンテンツ取得要求の要求元へ応答する
処理を実行させるためのコンテンツ取得プログラム。
(付記2)
コンテンツ取得要求の要求元が移動後に送信するコンテンツ取得要求に、前記要求元が移動前にコンテンツ取得要求を送信した機器から受信した前記コンテンツの識別情報、前記機器の識別情報、及び前記シーケンス情報が含まれる付記1記載のコンテンツ取得プログラム。
(付記3)
要求したコンテンツと共に取得した前記機器の識別情報と前記シーケンス情報とを対応付けて前記他機器保持情報として記憶する際、今回取得したシーケンス情報の前に最古のコンテンツに対応するシーケンス情報として記憶されていたシーケンス情報を前回情報、今回取得したシーケンス情報を最古情報として記憶し、
前記前回情報が示す蓄積順が、前記最古情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順が、前記最古情報が示す蓄積順以上、かつ前記前回情報が示す蓄積順未満の場合に、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求する
付記1または付記2記載のコンテンツ取得プログラム。
(付記4)
前記コンピュータに、蓄積された複数のコンテンツの容量の合計が予め定めた閾値以上となった場合に、前記複数のコンテンツの容量が前記閾値未満となるまで、前記シーケンス情報が示す蓄積順が古いコンテンツから順に削除することをさらに含む処理を実行させるための付記1〜付記3のいずれか1項記載のコンテンツ取得プログラム。
(付記5)
機器の識別情報、取得対象のコンテンツの識別情報、及び前記機器への前記取得対象のコンテンツの蓄積順を示すシーケンス情報を含むコンテンツ取得要求を受け付ける受付部と、
他機器の識別情報と前記他機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けた他機器保持情報を参照し、前記コンテンツ取得要求に含まれる前記機器の識別情報と対応付けられたシーケンス情報が示す蓄積順が、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求し、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より新しい場合には、前記取得対象のコンテンツを保持する機器を探索し、探索した機器に前記取得対象のコンテンツを要求する要求部と、
要求したコンテンツと共に取得した該コンテンツの取得元である機器の識別情報と、該機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けて、前記他機器保持情報として記憶する記憶制御部と、
取得したコンテンツの識別情報、前記コンテンツ取得要求を受け付けた機器の識別情報、及び前記コンテンツ取得要求を受け付けた機器への前記取得したコンテンツの蓄積順を示すシーケンス情報を、前記コンテンツ取得要求の要求元へ応答する応答部と、
を含むコンテンツ取得装置。
(付記6)
コンテンツ取得要求の要求元が移動後に送信するコンテンツ取得要求に、前記要求元が移動前にコンテンツ取得要求を送信した機器から受信した前記コンテンツの識別情報、前記機器の識別情報、及び前記シーケンス情報が含まれる付記5記載のコンテンツ取得装置。
(付記7)
前記記憶制御部は、要求したコンテンツと共に取得した前記機器の識別情報と前記シーケンス情報とを対応付けて前記他機器保持情報として記憶する際、今回取得したシーケンス情報の前に最古のコンテンツに対応するシーケンス情報として記憶されていたシーケンス情報を前回情報、今回取得したシーケンス情報を最古情報として記憶し、
前記要求部は、前記前回情報が示す蓄積順が、前記最古情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順が、前記最古情報が示す蓄積順以上、かつ前記前回情報が示す蓄積順未満の場合に、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求する
付記5または付記6記載のコンテンツ取得装置。
(付記8)
蓄積された複数のコンテンツの容量の合計が予め定めた閾値以上となった場合に、前記複数のコンテンツの容量が前記閾値未満となるまで、前記シーケンス情報が示す蓄積順が古いコンテンツから順に削除する削除部をさらに含む付記5〜付記7のいずれか1項記載のコンテンツ取得装置。
(付記9)
コンピュータに、
機器の識別情報、取得対象のコンテンツの識別情報、及び前記機器への前記取得対象のコンテンツの蓄積順を示すシーケンス情報を含むコンテンツ取得要求を受け付け、
他機器の識別情報と前記他機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けた他機器保持情報を参照し、前記コンテンツ取得要求に含まれる前記機器の識別情報と対応付けられたシーケンス情報が示す蓄積順が、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求し、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より新しい場合には、前記取得対象のコンテンツを保持する機器を探索し、探索した機器に前記取得対象のコンテンツを要求し、
要求したコンテンツと共に取得した該コンテンツの取得元である機器の識別情報と、該機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けて、前記他機器保持情報として記憶し、
取得したコンテンツの識別情報、前記コンテンツ取得要求を受け付けた機器の識別情報、及び前記コンテンツ取得要求を受け付けた機器への前記取得したコンテンツの蓄積順を示すシーケンス情報を、前記コンテンツ取得要求の要求元へ応答する
処理を実行させるためのコンテンツ取得方法。
(付記10)
コンテンツ取得要求の要求元が移動後に送信するコンテンツ取得要求に、前記要求元が移動前にコンテンツ取得要求を送信した機器から受信した前記コンテンツの識別情報、前記機器の識別情報、及び前記シーケンス情報が含まれる付記9記載のコンテンツ取得方法。
(付記11)
要求したコンテンツと共に取得した前記機器の識別情報と前記シーケンス情報とを対応付けて前記他機器保持情報として記憶する際、今回取得したシーケンス情報の前に最古のコンテンツに対応するシーケンス情報として記憶されていたシーケンス情報を前回情報、今回取得したシーケンス情報を最古情報として記憶し、
前記前回情報が示す蓄積順が、前記最古情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順が、前記最古情報が示す蓄積順以上、かつ前記前回情報が示す蓄積順未満の場合に、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求する
付記9または付記10記載のコンテンツ取得方法。
(付記12)
前記コンピュータに、蓄積された複数のコンテンツの容量の合計が予め定めた閾値以上となった場合に、前記複数のコンテンツの容量が前記閾値未満となるまで、前記シーケンス情報が示す蓄積順が古いコンテンツから順に削除することをさらに含む処理を実行させるための付記9〜付記11のいずれか1項記載のコンテンツ取得方法。
(付記13)
コンピュータに、
機器の識別情報、取得対象のコンテンツの識別情報、及び前記機器への前記取得対象のコンテンツの蓄積順を示すシーケンス情報を含むコンテンツ取得要求を受け付け、
他機器の識別情報と前記他機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けた他機器保持情報を参照し、前記コンテンツ取得要求に含まれる前記機器の識別情報と対応付けられたシーケンス情報が示す蓄積順が、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より古い場合には、前記コンテンツ取得要求に含まれる機器の識別情報が示す機器に前記取得対象のコンテンツを要求し、前記コンテンツ取得要求に含まれるシーケンス情報が示す蓄積順より新しい場合には、前記取得対象のコンテンツを保持する機器を探索し、探索した機器に前記取得対象のコンテンツを要求し、
要求したコンテンツと共に取得した該コンテンツの取得元である機器の識別情報と、該機器で保持する最古のコンテンツに対応するシーケンス情報とを対応付けて、前記他機器保持情報として記憶し、
取得したコンテンツの識別情報、前記コンテンツ取得要求を受け付けた機器の識別情報、及び前記コンテンツ取得要求を受け付けた機器への前記取得したコンテンツの蓄積順を示すシーケンス情報を、前記コンテンツ取得要求の要求元へ応答する
処理を実行させるためのコンテンツ取得プログラムを記憶した記憶媒体。