〈実施例の構成〉
図1は、本発明のコンテンツ配信システムを示すブロック構成図である。
図1に示すように、本実施例のコンテンツ配信システムは、クライアント端末10、コンテンツサーバ20、コンテンツサーバ30、負荷分散装置40、インデックスサーバ50、インデックスサーバ60、インデックスサーバ70、ルックアップサーバ80、インデックスDB90から構成されている。
クライアント端末10は、例えば、PC(Personal Computer)等のような、利用者がコンテンツデータの追加、削除等を指示するために操作する端末である。
コンテンツサーバ20は、クライアント端末10からの追加、削除等の指示に応じて、コンテンツデータの追加、削除等を行うと共に、インデックスサーバ50、60、70からの指示に応じて、自己が保持するインデックス情報を更新するサーバであり、制御部21、記憶部22、インデックス更新部23、確認信号送信部24、データ検索部25、インデックス更新指示部26、インデックス情報生成部27、削除指示部28を有している。
確認信号送信部24は、起動中であることを示す確認信号をルックアップサーバ80に送信する部であり、後述するように、通信不可となったサーバを検出するためにルックアップサーバ80から送信される確認要求信号を受信すると、ルックアップサーバ80に対して確認信号を送信する。
記憶部22は、HDD等からなるメモリであり、例えば、文書、音声、動画等のコンテンツデータ、自己を識別するためのサーバ識別データおよびインデックス情報が格納されている。
各コンテンツデータには、例えば、ファイル名等のようにコンテンツを識別するためのコンテンツ識別データが付与されていることとする。
インデックス情報とは、コンテンツ識別データ毎に、各コンテンツデータを保持するコンテンツサーバを示すサーバ識別データが対応づけられた情報である。本実施例では、このサーバ識別データは、例えば、IPアドレス、通信ポート等のような各コンテンツサーバとの通信に必要なデータを含むデータとする。
また、本実施例では、記憶部22には、コンテンツ識別データ「a」が付与されたコンテンツデータ「A」およびコンテンツ識別データ「b」が付与されたコンテンツデータ「B」が格納され、コンテンツ識別データ「a」及びコンテンツ識別データ「b」のそれぞれに対し、コンテンツサーバ20を示すサーバ識別データが対応づけられたインデックス情報がそれぞれ格納されていることとする。さらに、記憶部22には、後述するルックアップサーバ80との通信に必要なIPアドレス、通信ポート等のような通信先データを予め保持していることとする。
コンテンツサーバ30は、コンテンツサーバ20と同様に、クライアント端末10からの追加、削除等の指示に応じて、コンテンツデータの追加、削除等を行うと共に、インデックスサーバ50または60からの指示に応じて、自己が保持するインデックス情報を更新するサーバであり、制御部31、記憶部32、インデックス更新部33、確認信号送信部34、データ検索部35、インデックス更新指示部36、インデックス情報生成部37、削除指示部38を有している。
確認信号送信部34は、起動中であることを示す確認信号をルックアップサーバ80に送信する部であり、後述するように、通信不可となったサーバを検出するためにルックアップサーバ80から送信される確認要求信号を受信すると、ルックアップサーバ80に対して確認信号を送信する。
記憶部32は、HDD等からなるメモリであり、例えば、文書、音声、動画等のコンテンツデータ、自己を識別するためのサーバ識別データおよびインデックス情報が格納される。
各コンテンツデータには、例えば、ファイル名等のようにコンテンツを識別するためのコンテンツ識別データが付与されていることとする。
インデックス情報とは、コンテンツ識別データ毎に、各コンテンツデータを保持するコンテンツサーバを示すサーバ識別データが対応づけられた情報である。本実施例では、このサーバ識別データは、例えば、IPアドレス、通信ポート等のような各コンテンツサーバとの通信に必要なデータを含むデータとする。
また、本実施例では、記憶部32には、コンテンツ識別データ「c」が付与されたコンテンツデータ「C」が格納され、コンテンツ識別データ「c」に対し、コンテンツサーバ30を示すサーバ識別データが対応づけられたインデックス情報が格納されていることとする。さらに、本実施例では、記憶部32には、後述するルックアップサーバ80との通信に必要なIPアドレス、通信ポート等のような通信先データを予め保持していることとする。
インデックスサーバ50は、インデックスDB90が保持するインデックス情報および起動中のコンテンツサーバが保持するインデックス情報の更新管理を行うサーバであり、制御部51、記憶部52、リスト更新部53、確認信号送信部54、更新指示部55、データ更新部56を有している。
確認信号送信部54は、起動中であることを示す確認信号をルックアップサーバ80に送信する部であり、後述するように、通信不可となったサーバを検出するためにルックアップサーバ80から送信される確認要求信号を受信すると、ルックアップサーバ80に対して確認信号を送信する。
記憶部52は、HDD等からなるメモリであり、自己を識別するためのサーバ識別データ、起動中のサーバを示すサーバ識別データからなる起動サーバリスト情報がそれぞれ格納されている。本実施例では、コンテンツサーバ20、インデックスサーバ50、60を示す各サーバ識別データからなる起動サーバリスト情報が格納されていることとする。
インデックスサーバ60は、インデックスサーバ50と同様に、インデックスDB90が保持するインデックス情報および起動中のコンテンツサーバが保持するインデックス情報の更新管理を行うサーバであり、制御部61、記憶部62、リスト更新部63、確認信号送信部64、更新指示部65、データ更新部66を有している。
確認信号送信部64は、起動中であることを示す確認信号をルックアップサーバ80に送信する部であり、後述するように、通信不可となったサーバを検出するためにルックアップサーバ80から送信される確認要求信号を受信すると、ルックアップサーバ80に対して確認信号を送信する。
記憶部62は、HDD等からなるメモリであり、記憶部52と同様に、自己を識別するためのサーバ識別データ、起動中のサーバを示すサーバ識別データからなる起動サーバリスト情報がそれぞれ格納されている。本実施例では、コンテンツサーバ20、インデックスサーバ50、60を示す各サーバ識別データからなる起動サーバリスト情報が格納されていることとする。
インデックスサーバ70は、インデックスサーバ60と同様に、インデックスDB90が保持するインデックス情報および起動中のコンテンツサーバが保持するインデックス情報の更新管理を行うサーバであり、制御部71、記憶部72、リスト更新部73、確認信号送信部74、更新指示部75、データ更新部76を有している。
確認信号送信部74は、起動中であることを示す確認信号をルックアップサーバ80に送信する部であり、後述するように、通信不可となったサーバを検出するためにルックアップサーバ80から送信される確認要求信号を受信すると、ルックアップサーバ80に対して確認信号を送信する。
記憶部72は、HDD等からなるメモリであり、自己を識別するためのサーバ識別データが格納されている。
負荷分散装置40は、インデックスサーバの負荷を分散すべく、コンテンツサーバからの指示データ等の転送先を任意に選択すると共に、選択されたインデックスサーバに対し、該指示データを転送する装置である。即ち、本実施例では、コンテンツサーバ20または30からの指示データ等の転送先としてインデックスサーバ50、60のいずれかが任意に選択されると共に、選択されたいずれかのインデックスサーバ50、60に対し、該指示データ等が転送される。
インデックスDB90は、コンテンツ配信システムを構成する全てのインデックスサーバに接続されているデータベースであり、コンテンツ識別データ毎に、該コンテンツが保持されているコンテンツサーバを示すサーバ識別データが対応づけられたインデックス情報を保持している。本実施例では、コンテンツ識別データ「a」、コンテンツ識別データ「b」に対して、コンテンツサーバ20を示すサーバ識別データがそれぞれ対応づけられたインデックス情報、コンテンツ識別データ「c」に対してコンテンツサーバ30を示すサーバ識別データが対応づけられたインデックス情報が格納されていることとする。
ルックアップサーバ80は、コンテンツ配信システムを構成する各サーバ(=コンテンツサーバおよびインデックスサーバ)と図示しないネットワークを介して接続されるサーバであり、制御部81、記憶部82、確認信号要求部83、状態変化検知部84、データ更新部85、リスト更新指示部86を有している。
記憶部82は、HDD等からなるメモリであり、起動中の各サーバを示すサーバ識別データからなる起動サーバリスト情報が格納される。本実施例では、コンテンツサーバ20、インデックスサーバ50、60をそれぞれ示すサーバ識別データからなる起動サーバリスト情報が格納されていることとする。
以下、クライアント端末10、コンテンツサーバ20、コンテンツサーバ30、負荷分散装置40、インデックスサーバ50、インデックスサーバ60、インデックスサーバ70、ルックアップサーバ80、インデックスDB90の相互関連について説明を行う。
ルックアップサーバ80の制御部81は、いわゆるCPUとして、ルックアップサーバ80を制御する部であり、サーバ管理者等の操作により、起動されると、通信環境の変化を監視すべく、検知開始指示信号を状態変化検知部84に転送する。
状態変化検知部84は、サーバの追加、切断等を検知する部であり、検知開始指示信号を受けると、確認信号要求部83を制御し、記憶部82の起動サーバリスト情報に基づいた各サーバに対し、確認要求信号を送信させる。即ち、本実施例では、コンテンツサーバ20、インデックスサーバ50、60のそれぞれに対して確認要求信号が定期的に送信される。
そして、状態変化検知部84は、制御部81を介して、確認対象である各サーバから一定時間内に確認信号を受信すると、通信状態の変化がないことを検知し、引き続き、確認信号要求部83により確認要求信号を送信させ、確認信号の要求先であるサーバのいずれかから一定時間以上確認信号を受信しないと、該サーバが切断されたことを検知する。また、制御部81を介して起動信号を受信すると、新たなサーバが追加されたことを検知する。以降、状態変化検知部84による検知結果に応じて、起動中の各サーバ間のデータ整合性を維持させるべく、後述する各更新処理が実行される。
ここで、まず、クライアント端末10、コンテンツサーバ20、負荷分散装置40、インデックスサーバ50、インデックスサーバ60、インデックスDB90、ルックアップサーバ80から構成されるコンテンツ配信システムに対し、コンテンツサーバ30が追加される場合について説明を行う。
コンテンツサーバ30の制御部31は、いわゆるCPUとしてコンテンツサーバ30を制御する部であり、サーバ管理者等の操作により、起動されると、記憶部32の通信先データに基づいて、ルックアップサーバ80に対し、起動信号を送信する。
そして、ルックアップサーバ80の制御部81は、起動信号を受信すると、起動信号を状態変化検知部84に転送し、起動信号を受けつけた状態変化検知部84は、新たなサーバが追加されたことを検知する。
制御部81は、状態変化検知部84が新たなサーバが追加されたことを検知すると、コンテンツサーバ30に対し、サーバ識別データの送信を指示するデータ送信指示信号を送信する。
コンテンツサーバ30の制御部31は、データ送信指示信号を受信すると、記憶部32のサーバ識別データをルックアップサーバ80に送信する。
ルックアップサーバ80の制御部81は、サーバ識別データを受信すると、サーバ識別データをデータ更新部85に転送する。
データ更新部85は、記憶部82の各データの更新を行う部であり、サーバ識別データを受けると、記憶部82の起動サーバリスト情報にサーバ識別データを追加する。
リスト更新指示部86は、起動中の各インデックスサーバが保持する起動サーバリスト情報の更新を指示する部であり、データ更新部85がサーバ識別データを追加すると、該サーバ識別データの追加を指示する追加指示データを記憶部82の起動サーバリスト情報に基づいて、少なくとも各インデックスサーバに送信する。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60に対して追加指示データが送信される。
インデックスサーバ50の制御部51は、いわゆるCPUとして、インデックスサーバ50を制御する部であり、追加指示データを受信すると、追加指示データをリスト更新部53に転送する。
リスト更新部53は、記憶部52の起動サーバリスト情報を更新する部であり、追加指示データを受けると、追加指示データに基づいて、記憶部52の起動サーバリスト情報にサーバ識別データを追加する。即ち、記憶部52の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データが追加される。
一方、インデックスサーバ60の制御部61は、いわゆるCPUとして、インデックスサーバ60を制御する部であり、追加指示データを受信すると、追加指示データをリスト更新部63に転送する。
リスト更新部63は、記憶部62の起動サーバリスト情報を更新する部であり、追加指示データを受けると、追加指示データに基づいて、記憶部62の起動サーバリスト情報にサーバ識別データを追加する。即ち、記憶部62の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データが追加される。
このように、上記構成のコンテンツ配信システムに対し、コンテンツサーバ30が追加された場合、ルックアップサーバ80が新たなサーバ(=コンテンツサーバ30)の追加を検知すると共に、少なくとも起動中のインデックスサーバ50、60に対し、各記憶部52、62の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データを追加する指示を行い、該指示を受けたインデックスサーバ50、60が各記憶部52、62の起動サーバリスト情報にサーバ識別データを追加するようにしたので、ルックアップサーバ80、インデックスサーバ50、60間の起動サーバリスト情報の整合性を維持することができる。
次に、上記コンテンツサーバ30が追加された構成のコンテンツ配信システムに対し、インデックスサーバ70が追加される場合について説明を行う。
インデックスサーバ70の制御部71は、いわゆるCPUとしてインデックスサーバ70を制御する部であり、サーバ管理者等の操作により、起動されると、記憶部72の通信先データに基づいて、起動信号をルックアップサーバ80に送信する。
そして、制御部81は、起動信号を受信すると、起動信号を状態変化検知部84に転送し、起動信号を受けつけた状態変化検知部84は、新たなサーバ(=インデックスサーバ70)が追加されたことを検知する。
制御部81は、状態変化検知部84が新たなサーバが追加されたことを検知すると、インデックスサーバ70に対し、サーバ識別データの送信を指示するデータ送信指示信号を送信する。
インデックスサーバ70の制御部71は、データ送信指示信号を受信すると、記憶部72のサーバ識別データおよび最新の起動サーバリスト情報を取得するためのサーバリスト要求信号をルックアップサーバ80に送信する。
ルックアップサーバ80の制御部81は、サーバ識別データ及びサーバリスト要求信号を受信すると、記憶部82から起動サーバリスト情報を取得し、該取得した起動サーバリスト情報をインデックスサーバ70に送信すると共に、サーバ識別データをデータ更新部85に転送する。
インデックスサーバ70の制御部71は、起動サーバリスト情報を受信すると、起動サーバリスト情報を記憶部72に登録する。
一方、データ更新部85は、サーバ識別データを受けると、記憶部82の起動サーバリスト情報にサーバ識別データを追加する。
リスト更新指示部86は、データ更新部85がサーバ識別データを追加すると、上記と同様に、起動中の各インデックスサーバが保持する起動サーバリスト情報を更新すべく、追加されたサーバ識別データの追加を指示する追加指示データを記憶部82の起動サーバリスト情報に基づいた各サーバに対して送信する。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60、70に対して、追加指示データが送信される。
そして、インデックスサーバ50、60、70は、追加指示データをそれぞれ受信すると、各リスト更新部53、63、73により、記憶部52、62、72の起動サーバリスト情報にサーバ識別データを追加する。
このように、上記構成のコンテンツ配信システムに対し、インデックスサーバ70が追加された場合、ルックアップサーバ80がインデックスサーバ70の追加を検知すると共に、起動中のインデックスサーバ50、60、70に対し、各記憶部52、62、72の起動サーバリスト情報にインデックスサーバ70を示すサーバ識別データを追加する指示を行い、該指示を受けたインデックスサーバ50、60、70が各記憶部52、62、72の起動サーバリスト情報に該サーバ識別データを追加するようにしたので、ルックアップサーバ80、インデックスサーバ50、60、70間の起動サーバリスト情報の整合性を維持することができる。
次に、上記インデックスサーバ70が追加された構成のコンテンツ配信システムにおいて、インデックスサーバ70が障害等により切断された場合について説明を行う。
例えば、ルックアップサーバ80の状態変化検知部84は、制御部81を介して、確認対象であるインデックスサーバ70から一定時間以上確認信号を受信しないと、インデックスサーバ70が切断されたことを検知する。
ルックアップサーバ80の制御部81は、状態変化検知部84がインデックスサーバ70の切断を検知すると、切断されたインデックスサーバ70を示すサーバ識別データをデータ更新部85に転送する。
データ更新部85は、サーバ識別データを受けると、サーバ識別データを記憶部82の起動サーバリスト情報から削除する。
リスト更新指示部86は、データ更新部85がサーバ識別データを削除すると、起動中の各インデックスサーバが保持する起動サーバリスト情報を更新すべく、該サーバ識別データの削除を指示する削除指示データを記憶部82の起動サーバリスト情報に基づいた各サーバに対して送信する。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60に対して削除指示データが送信される。
インデックスサーバ50の制御部51は、削除指示データを受信すると、削除指示データをリスト更新部53に転送する。
リスト更新部53は、削除指示データを受けると、削除指示データに基づいて、記憶部52の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する。
一方、インデックスサーバ60の制御部61は、削除指示データを受信すると、削除指示データをリスト更新部63に転送する。
リスト更新部63は、削除指示データを受けると、削除指示データに基づいて、記憶部62の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する。
このように、上記構成のコンテンツ配信システムに対し、例えば、インデックスサーバ70が切断された場合、ルックアップサーバ80がインデックスサーバ70の切断を検知すると共に、少なくとも起動中のインデックスサーバ50、60に対し、各記憶部52、62の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する指示を行い、該指示を受けたインデックスサーバ50、60が各記憶部52、62の起動サーバリスト情報から該サーバ識別データを削除するようにしたので、ルックアップサーバ80、インデックスサーバ50、60間の起動サーバリスト情報の整合性を維持することができる。
最後に、上記構成のコンテンツ配信システムのコンテンツサーバ30にコンテンツデータ「B」が追加された場合について説明を行う。この追加されるコンテンツデータ「B」には、該コンテンツデータを識別するためのコンテンツ識別データ「b」が付与されていることとする。
クライアント端末10から、コンテンツサーバ30に対し、最新のコンテンツデータ「B」を追加すべく、コンテンツデータ「B」が送信されると、コンテンツサーバ30の制御部31は、コンテンツデータ「B」をインデックス更新部33に転送する。
インデックス更新部33は、コンテンツデータ「B」を受けると、記憶部32にコンテンツデータ「B」を追加する。
インデックス情報生成部37は、インデックス情報を生成する部であり、インデックス更新部33がコンテンツデータ「B」の追加を完了すると、インデックスDB90を更新すべく、コンテンツデータ「B」のコンテンツ識別データ「b」およびコンテンツサーバ30を示すサーバ識別データを対応づけたインデックス情報を生成すると共に、生成されたインデックス情報の追加を指示する追加指示データを負荷分散装置40に送信する。
負荷分散装置40は、追加指示データを受信すると、追加指示データの転送先を任意に選択すると共に、選択されたインデックスサーバに対し、該追加指示データを転送する。本実施例では、インデックスサーバ50が選択されると共に、選択されたインデックスサーバ50に対し、追加指示データが転送されることとする。
インデックスサーバ50の制御部51は、追加指示データを受けると、追加指示データをデータ更新部56に転送する。
データ更新部56は、インデックスDB90の更新を行う部であり、追加指示データを受けると、追加指示データに基づいて、インデックスDB90にインデックス情報を追加する。
更新指示部55は、起動中の各サーバに対し、インデックス情報の更新を指示する部であり、データ更新部56がインデックス情報の追加を完了すると、該インデックス情報の追加を指示する追加指示データを記憶部52の起動サーバリスト情報に基づいて、少なくとも起動中のコンテンツサーバ20および30に対して送信する。
コンテンツサーバ20の制御部21は、追加指示データを受信すると、追加指示データをインデックス更新部23に転送する。
インデックス更新部23は、追加指示データを受けると、追加指示データに基づいて、記憶部22にインデックス情報を追加する。
データ検索部25は、古いインデックス情報が登録されているか否かを検索する部であり、インデックス更新部23がインデックス情報の追加を完了すると、記憶部22を参照し、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されているか否かを検索し、登録されていないと、非最新インデックス情報が存在しないことを検知し、登録されていると、非最新インデックス情報が存在していることを検知する。
制御部21は、非最新インデックス情報が存在しないことをデータ検索部25が検知すると、更新処理を完了し、非最新インデックス情報の存在を検知すると、非最新インデックス情報が存在することを示す検知信号を削除指示部28に出力する。
削除指示部28は、インデックスDB90に保持されている非最新インデックス情報の削除を指示する部であり、検知信号を受けると、該非最新インデックス情報の削除を指示する削除指示データを負荷分散装置40に転送する。
ここで、コンテンツサーバ20の記憶部22には、追加されたインデックス情報と同一のコンテンツ識別データ「b」が対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されていることから、データ検索部25は、非最新インデックス情報の存在を検知し、削除指示部28が非最新インデックス情報の削除を指示する削除指示データを負荷分散装置40に送信する。
負荷分散装置40は、削除指示データを受信すると、削除指示データの転送先を任意に選択すると共に、選択されたインデックスサーバに対し、該削除指示データを転送する。本実施例では、インデックスサーバ60が選択されると共に、選択されたインデックスサーバ60に対し、削除指示データが転送されることとする。
インデックスサーバ60の制御部61は、削除指示データを受けると、削除指示データをデータ更新部66に転送する。
データ更新部66は、削除指示データを受けると、削除指示データに基づいて、インデックスDB90から非最新インデックス情報を削除する。
更新指示部65は、データ更新部66が非最新インデックス情報の削除を完了すると、引き続き、記憶部62の起動サーバリスト情報に基づいて、少なくとも起動中のコンテンツサーバ20、30に対して、該非最新インデックス情報の削除を指示する削除指示データを送信する。
コンテンツサーバ20の制御部21は、削除指示データを受信すると、削除指示データをインデックス更新部23に転送する。
インデックス更新部23は、削除指示データを受けると、削除指示データに基づいて、記憶部22から非最新インデックス情報の削除を行う。この際、インデックス更新部23は、削除された非最新インデックス情報のコンテンツ識別データが付与されたコンテンツデータを保持している場合、該コンテンツデータも削除する。
一方、コンテンツサーバ30の制御部31も、コンテンツサーバ20と同様に、削除指示データを受信すると、削除指示データをインデックス更新部33に転送し、削除指示データを受けたインデックス更新部33は、削除指示データに基づいて、記憶部32から非最新インデックス情報を削除する。この際、インデックス更新部33は、削除されたインデックス情報のコンテンツ識別データが付与されたコンテンツデータを保持している場合、該コンテンツデータも削除する。
一方、コンテンツサーバ30の制御部31も、上述したコンテンツサーバ20と同様に、追加指示データを受信すると、追加指示データをインデックス更新部33に転送する。
インデックス更新部33は、追加指示データを受けると、追加指示データに基づいて、記憶部32にインデックス情報を追加する。
データ検索部35は、古いインデックス情報が登録されているか否かを検索する部であり、インデックス更新部33がインデックス情報の追加を完了すると、記憶部32を参照し、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されているか否かを検索し、登録されていないと、非最新インデックス情報が存在しないことを検知し、登録されていると、非最新インデックス情報が存在していることを検知する。
制御部31は、非最新インデックス情報が存在しないことをデータ検索部35が検知すると、更新処理を完了し、非最新インデックス情報の存在を検知すると、非最新インデックス情報が存在することを示す検知信号を削除指示部38に出力する。
ここで、コンテンツサーバ30の記憶部32には、更新されたインデックス情報と同一のコンテンツ識別データ「b」が対応づけられたインデックス情報が登録されていないことから、データ検索部35は、古いインデックス情報が登録されていないことを検知し、制御部31により更新処理が完了される。
このように、上記構成のコンテンツ配信システムのコンテンツサーバ30にコンテンツデータ「B」が追加された場合、まず、インデックスDB90を更新すべく、コンテンツサーバ30がコンテンツデータ「B」のコンテンツ識別データ「b」およびコンテンツサーバ30を示すサーバ識別データを対応づけたインデックス情報を生成すると共に、生成されたインデックス情報を負荷分散装置40により任意に選択されるインデックスサーバ50、60のいずれかがインデックスDB90に追加すると共に、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられている非最新インデックス情報をコンテンツサーバ20、30の記憶部22、32から削除するようにしたので、インデックスDB90、コンテンツサーバ20、30の各記憶部22、32間のインデックス情報の整合性を維持することができる。
〈実施例の動作〉
次に、本実施例のコンテンツ配信システムの動作について説明を行う。
図2は、本実施例のコンテンツ配信システムの動作フローチャートである。
本実施例において、コンテンツ配信システムは、クライアント端末10、コンテンツサーバ20、負荷分散装置40、インデックスサーバ50、インデックスサーバ60、ルックアップサーバ80、インデックスDB90から構成されていることとする。
ルックアップサーバ80の制御部81は、サーバ管理者等の操作により、起動されると(S1)、通信環境の変化を監視すべく、検知開始指示信号を状態変化検知部84に転送する。
状態変化検知部84は、検知開始指示信号を受けると、確認信号要求部83を制御し、記憶部82の起動サーバリスト情報に基づいた各サーバに対し、確認要求信号を送信させる(S2)。即ち、本実施例では、コンテンツサーバ20、インデックスサーバ50、60のそれぞれに対して確認要求信号が定期的に送信される。
そして、状態変化検知部84は、制御部81を介して、確認対象である各サーバから一定時間内に確認信号を受信すると、通信状態の変化がないことを検知し、引き続き、確認信号要求部83により確認要求信号を送信させ、確認信号の要求先であるサーバのいずれかから一定時間以上確認信号を受信しないと、該サーバが切断されたことを検知する。また、制御部81を介して起動信号を受信すると、新たなサーバが追加されたことを検知する(S3)。以降、状態変化検知部84による検知結果に応じて、起動中の各サーバ間のデータ整合性を維持させるべく、後述する各更新処理が実行される(S4)。
ここで、まず、クライアント端末10、コンテンツサーバ20、負荷分散装置40、インデックスサーバ50、インデックスサーバ60、インデックスDB90、ルックアップサーバ80から構成されるコンテンツ配信システムに対し、コンテンツサーバ30が追加される場合について説明を行う。
図3は、コンテンツサーバ30が追加された場合の動作フローチャートである。
コンテンツサーバ30の制御部31は、サーバ管理者等の操作により、起動されると、記憶部32の通信先データに基づいて、ルックアップサーバ80に対し、起動信号を送信する(S101)。
そして、ルックアップサーバ80の制御部81は、起動信号を受信すると、起動信号を状態変化検知部84に転送し、起動信号を受けつけた状態変化検知部84は、新たなサーバが追加されたことを検知する(S102)。
制御部81は、状態変化検知部84が新たなサーバが追加されたことを検知すると、コンテンツサーバ30に対し、サーバ識別データの送信を指示するデータ送信指示信号を送信する(S103)。
コンテンツサーバ30の制御部31は、データ送信指示信号を受信すると、記憶部32のサーバ識別データをルックアップサーバ80に送信する(S104)。
ルックアップサーバ80の制御部81は、サーバ識別データを受信すると、サーバ識別データをデータ更新部85に転送する。
データ更新部85は、サーバ識別データを受けると、記憶部82の起動サーバリスト情報にサーバ識別データを追加する(S105)。
リスト更新指示部86は、データ更新部85がサーバ識別データを追加すると、該サーバ識別データの追加を指示する追加指示データを記憶部82の起動サーバリスト情報に基づいて、少なくとも各インデックスサーバに送信する。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60に対して追加指示データが送信される(S106)。
インデックスサーバ50の制御部51は、追加指示データを受信すると、追加指示データをリスト更新部53に転送する。
リスト更新部53は、追加指示データを受けると、追加指示データに基づいて、記憶部52の起動サーバリスト情報にサーバ識別データを追加する。即ち、記憶部52の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データが追加される(S107)。
一方、インデックスサーバ60の制御部61は、追加指示データを受信すると、追加指示データをリスト更新部63に転送する。
リスト更新部63は、追加指示データを受けると、追加指示データに基づいて、記憶部62の起動サーバリスト情報にサーバ識別データを追加する。即ち、記憶部62の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データが追加される(S7)。
このように、上記構成のコンテンツ配信システムに対し、コンテンツサーバ30が追加された場合、ルックアップサーバ80が新たなサーバ(=コンテンツサーバ30)の追加を検知すると共に、少なくとも起動中のインデックスサーバ50、60に対し、各記憶部52、62の起動サーバリスト情報にコンテンツサーバ30を示すサーバ識別データを追加する指示を行い、該指示を受けたインデックスサーバ50、60が各記憶部52、62の起動サーバリスト情報にサーバ識別データを追加するようにしたので、ルックアップサーバ80、インデックスサーバ50、60間の起動サーバリスト情報の整合性を維持することができる。
次に、上記コンテンツサーバ30が追加された構成のコンテンツ配信システムに対し、インデックスサーバ70が追加される場合について説明を行う。
図4は、インデックスサーバ70が追加された場合の動作フローチャートである。
インデックスサーバ70の制御部71は、サーバ管理者等の操作により、起動されると、記憶部72の通信先データに基づいて、起動信号をルックアップサーバ80に送信する(S201)。
そして、制御部81は、起動信号を受信すると、起動信号を状態変化検知部84に転送し、起動信号を受けつけた状態変化検知部84は、新たなサーバ(=インデックスサーバ70)が追加されたことを検知する(S202)。
制御部81は、状態変化検知部84が新たなサーバが追加されたことを検知すると、インデックスサーバ70に対し、サーバ識別データの送信を指示するデータ送信指示信号を送信する(S203)。
インデックスサーバ70の制御部71は、データ送信指示信号を受信すると、記憶部72のサーバ識別データおよび最新の起動サーバリスト情報を取得するためのサーバリスト要求信号をルックアップサーバ80に送信する(S204)。
ルックアップサーバ80の制御部81は、サーバ識別データ及びサーバリスト要求信号を受信すると、記憶部82から起動サーバリスト情報を取得し、該取得した起動サーバリスト情報をインデックスサーバ70に送信すると共に、サーバ識別データをデータ更新部85に転送する(S205)。
インデックスサーバ70の制御部71は、起動サーバリスト情報を受信すると、起動サーバリスト情報を記憶部72に登録する。
一方、データ更新部85は、サーバ識別データを受けると、記憶部82の起動サーバリスト情報にサーバ識別データを追加する(S206)。
リスト更新指示部86は、データ更新部85がサーバ識別データを追加すると、上記と同様に、起動中の各インデックスサーバが保持する起動サーバリスト情報を更新すべく、追加されたサーバ識別データの追加を指示する追加指示データを記憶部82の起動サーバリスト情報に基づいた各サーバに対して送信する(S207)。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60、70に対して、追加指示データが送信される。
そして、インデックスサーバ50、60、70は、追加指示データをそれぞれ受信すると、各リスト更新部53、63、73により、記憶部52、62、72の起動サーバリスト情報にサーバ識別データを追加する(S208)。
このように、上記構成のコンテンツ配信システムに対し、インデックスサーバ70が追加された場合、ルックアップサーバ80がインデックスサーバ70の追加を検知すると共に、起動中のインデックスサーバ50、60、70に対し、各記憶部52、62、72の起動サーバリスト情報にインデックスサーバ70を示すサーバ識別データを追加する指示を行い、該指示を受けたインデックスサーバ50、60、70が各記憶部52、62、72の起動サーバリスト情報に該サーバ識別データを追加するようにしたので、ルックアップサーバ80、インデックスサーバ50、60、70間の起動サーバリスト情報の整合性を維持することができる。
次に、上記インデックスサーバ70が追加された構成のコンテンツ配信システムにおいて、インデックスサーバ70が障害等により切断された場合について説明を行う。
図6は、インデックスサーバ70が切断された場合の動作フローチャートである。
例えば、ルックアップサーバ80の状態変化検知部84は、制御部81を介して、確認対象であるインデックスサーバ70から一定時間以上確認信号を受信しないと、インデックスサーバ70が切断されたことを検知する(S301)。
ルックアップサーバ80の制御部81は、状態変化検知部84がインデックスサーバ70の切断を検知すると、切断されたインデックスサーバ70を示すサーバ識別データをデータ更新部85に転送する。
データ更新部85は、サーバ識別データを受けると、サーバ識別データを記憶部82の起動サーバリスト情報から削除する(S302)。
リスト更新指示部86は、データ更新部85がサーバ識別データを削除すると、起動中の各インデックスサーバが保持する起動サーバリスト情報を更新すべく、該サーバ識別データの削除を指示する削除指示データを記憶部82の起動サーバリスト情報に基づいた各サーバに対して送信する(S303)。即ち、本実施例では、起動サーバリスト情報に基づいて、少なくとも起動中のインデックスサーバ50、60に対して削除指示データが送信される。
インデックスサーバ50の制御部51は、削除指示データを受信すると、削除指示データをリスト更新部53に転送する。
リスト更新部53は、削除指示データを受けると、削除指示データに基づいて、記憶部52の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する(S304)。
一方、インデックスサーバ60の制御部61は、削除指示データを受信すると、削除指示データをリスト更新部63に転送する。
リスト更新部63は、削除指示データを受けると、削除指示データに基づいて、記憶部62の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する。
このように、上記構成のコンテンツ配信システムに対し、例えば、インデックスサーバ70が切断された場合、ルックアップサーバ80がインデックスサーバ70の切断を検知すると共に、少なくとも起動中のインデックスサーバ50、60に対し、各記憶部52、62の起動サーバリスト情報から、インデックスサーバ70を示すサーバ識別データを削除する指示を行い、該指示を受けたインデックスサーバ50、60が各記憶部52、62の起動サーバリスト情報から該サーバ識別データを削除するようにしたので、ルックアップサーバ80、インデックスサーバ50、60間の起動サーバリスト情報の整合性を維持することができる。
最後に、上記構成のコンテンツ配信システムのコンテンツサーバ30にコンテンツデータ「B」が追加された場合について説明を行う。この追加されるコンテンツデータ「B」には、該コンテンツデータを識別するためのコンテンツ識別データ「b」が付与されていることとする。
図6は、コンテンツサーバ30にコンテンツデータが追加された場合の動作フローチャートである。
クライアント端末10から、コンテンツサーバ30に対し、最新のコンテンツデータ「B」を追加すべく、コンテンツデータ「B」が送信されると、コンテンツサーバ30の制御部31は、コンテンツデータ「B」をインデックス更新部33に転送する。
インデックス更新部33は、コンテンツデータ「B」を受けると、記憶部32にコンテンツデータ「B」を追加する(S401)。
インデックス情報生成部37は、インデックス更新部33がコンテンツデータ「B」の追加を完了すると、インデックスDB90を更新すべく、コンテンツデータ「B」のコンテンツ識別データ「b」およびコンテンツサーバ30を示すサーバ識別データを対応づけたインデックス情報を生成すると共に、生成されたインデックス情報の追加を指示する追加指示データを負荷分散装置40に送信する(S402)。
負荷分散装置40は、追加指示データを受信すると、追加指示データの転送先を任意に選択すると共に、選択されたインデックスサーバに対し、該追加指示データを転送する。本実施例では、インデックスサーバ50が選択されると共に、選択されたインデックスサーバ50に対し、追加指示データが転送されることとする。
インデックスサーバ50の制御部51は、追加指示データを受けると、追加指示データをデータ更新部56に転送する。
データ更新部56は、追加指示データを受けると、追加指示データに基づいて、インデックスDB90にインデックス情報を追加する(S403)。
更新指示部55は、データ更新部56がインデックス情報の追加を完了すると、該インデックス情報の追加を指示する追加指示データを記憶部52の起動サーバリスト情報に基づいて、少なくとも起動中のコンテンツサーバ20および30に対して送信する(S404)。
コンテンツサーバ20の制御部21は、追加指示データを受信すると、追加指示データをインデックス更新部23に転送する。
インデックス更新部23は、追加指示データを受けると、追加指示データに基づいて、記憶部22にインデックス情報を追加する(S405)。
データ検索部25は、インデックス更新部23がインデックス情報の追加を完了すると、記憶部22を参照し、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されているか否かを検索し、登録されていないと、非最新インデックス情報が存在しないことを検知し、登録されていると、非最新インデックス情報が存在していることを検知する(S406)。
制御部21は、非最新インデックス情報が存在しないことをデータ検索部25が検知すると、更新処理を完了し、非最新インデックス情報の存在を検知すると、非最新インデックス情報が存在することを示す検知信号を削除指示部28に出力する(S407)。
削除指示部28は、検知信号を受けると、該非最新インデックス情報の削除を指示する削除指示データを負荷分散装置40に転送する(S408)。
ここで、コンテンツサーバ20の記憶部22には、追加されたインデックス情報と同一のコンテンツ識別データ「b」が対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されていることから、データ検索部25は、非最新インデックス情報の存在を検知し、削除指示部28が非最新インデックス情報の削除を指示する削除指示データを負荷分散装置40に送信する。
負荷分散装置40は、削除指示データを受信すると、削除指示データの転送先を任意に選択すると共に、選択されたインデックスサーバに対し、該削除指示データを転送する。本実施例では、インデックスサーバ60が選択されると共に、選択されたインデックスサーバ60に対し、削除指示データが転送されることとする。
インデックスサーバ60の制御部61は、削除指示データを受けると、削除指示データをデータ更新部66に転送する。
データ更新部66は、削除指示データを受けると、削除指示データに基づいて、インデックスDB90から非最新インデックス情報を削除する(S409)。
更新指示部65は、データ更新部66が非最新インデックス情報の削除を完了すると、引き続き、記憶部62の起動サーバリスト情報に基づいて、少なくとも起動中のコンテンツサーバ20、30に対して、該非最新インデックス情報の削除を指示する削除指示データを送信する(S410)。
コンテンツサーバ20の制御部21は、削除指示データを受信すると、削除指示データをインデックス更新部23に転送する。
インデックス更新部23は、削除指示データを受けると、削除指示データに基づいて、記憶部22から非最新インデックス情報の削除を行う(S411)。この際、インデックス更新部23は、削除された非最新インデックス情報のコンテンツ識別データが付与されたコンテンツデータを保持している場合、該コンテンツデータも削除する。
一方、コンテンツサーバ30の制御部31も、コンテンツサーバ20と同様に、削除指示データを受信すると、削除指示データをインデックス更新部33に転送し、削除指示データを受けたインデックス更新部33は、削除指示データに基づいて、記憶部32から非最新インデックス情報を削除する。この際、インデックス更新部33は、削除されたインデックス情報のコンテンツ識別データが付与されたコンテンツデータを保持している場合、該コンテンツデータも削除する。
一方、コンテンツサーバ30の制御部31も、上述したコンテンツサーバ20と同様に、追加指示データを受信すると、追加指示データをインデックス更新部33に転送する。
インデックス更新部33は、追加指示データを受けると、追加指示データに基づいて、記憶部32にインデックス情報を追加する。
データ検索部35は、インデックス更新部33がインデックス情報の追加を完了すると、記憶部32を参照し、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられた非最新インデックス情報(=古いインデックス情報)が登録されているか否かを検索し、登録されていないと、非最新インデックス情報が存在しないことを検知し、登録されていると、非最新インデックス情報が存在していることを検知する。
制御部31は、非最新インデックス情報が存在しないことをデータ検索部35が検知すると、更新処理を完了し、非最新インデックス情報の存在を検知すると、非最新インデックス情報が存在することを示す検知信号を削除指示部38に出力する。
ここで、コンテンツサーバ30の記憶部32には、更新されたインデックス情報と同一のコンテンツ識別データ「b」が対応づけられたインデックス情報が登録されていないことから、データ検索部35は、古いインデックス情報が登録されていないことを検知し、制御部31により更新処理が完了される。
このように、上記構成のコンテンツ配信システムのコンテンツサーバ30にコンテンツデータ「B」が追加された場合、まず、インデックスDB90を更新すべく、コンテンツサーバ30がコンテンツデータ「B」のコンテンツ識別データ「b」およびコンテンツサーバ30を示すサーバ識別データを対応づけたインデックス情報を生成すると共に、生成されたインデックス情報を負荷分散装置40により任意に選択されるインデックスサーバ50、60のいずれかがインデックスDB90に追加すると共に、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられている非最新インデックス情報をコンテンツサーバ20、30の記憶部22、32から削除するようにしたので、インデックスDB90、コンテンツサーバ20、30の各記憶部22、32間のインデックス情報の整合性を維持することができる。
〈実施例の効果〉
本実施例のコンテンツ配信システムでは、コンテンツ識別データ毎に、コンテンツデータを保持するコンテンツサーバを示すサーバ識別データが対応づけられたインデックス情報が格納されたインデックスDB90と複数のインデックスサーバ50、60とを設け、ルックアップサーバ80は、サーバの追加を検知すると、追加されたサーバのサーバ識別データの追加を指示する追加指示データを各インデックスサーバ50、60に送信し、サーバの切断を検知すると、切断されたサーバのサーバ識別データの削除を指示する削除指示データを各インデックスサーバ50、60に送信し、コンテンツサーバは、コンテンツデータが更新されると、インデックス情報の更新を指示すべく、更新されたコンテンツデータの追加、変更、削除のいずれかを示す更新指示データを各インデックスサーバ50、60のいずれかに送信し、各インデックスサーバ50、60は、削除指示データを受信すると、削除指示データに基づいて、起動サーバリスト情報からサーバ識別データを削除し、追加指示データを受信すると、追加指示データに基づいて、起動サーバリスト情報にサーバ識別データを追加し、更新指示データを受信すると、更新指示データに基づいて、インデックス記憶部のインデックス情報を更新するようにした。
また、コンテンツサーバ20、30にコンテンツ識別データ毎に、該コンテンツデータを保持するコンテンツサーバのサーバ識別データが対応づけられたインデックス情報を保持する記憶部22、32を設け、インデックスサーバ50、60のいずれかが更新指示データに基づいて、インデックスDB90にインデックス情報を追加すると、コンテンツサーバ20、30は、各記憶部22、32を参照し、追加されたインデックス情報と同一のコンテンツ識別データが対応づけられた非最新インデックス情報を検索し、非最新インデックス情報が検索されると、各インデックスサーバ50、60のいずれかに非最新インデックス情報の削除を指示する削除指示データを送信し、削除指示データを受信したインデックスサーバ50、60のいずれかが削除指示データに基づいて、インデックスDB90から非最新インデックス情報を削除すると、コンテンツサーバ20、30は、各記憶部22、32から非最新インデックス情報を削除するようにした。
これにより、コンテンツデータの更新時、インデックスサーバ50、60、コンテンツサーバ20、30間のインデックス情報の整合性を維持することができると共に、障害等によりコンテンツ配信システムの構成が変更された場合においても、各インデックスサーバ50、60間の起動サーバリスト情報の整合性を維持することができる。従って、インデックス情報または各インデックスサーバ50、60が保持する起動サーバリスト情報間に不整合が生じることがなく、配信サービスが中断するのを防止する可用性の高いコンテンツ配信システムを提供できる。