(57)【特許請求の範囲】
【請求項１】
複数の配布ファイルを保持するマスタサーバから複数のサーバに前記複数の配布ファイルを配布するファイル配布方法であって、
前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成し、
前記マスタサーバによって、前記マスタサーバ及び前記複数のサーバの少なくともいずれかの状態を示すシステム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当て、
前記マスタサーバによって、前記配布構成に基づいて、各サーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと、当該ノードの上位のノードを示す上位ノード情報、配布対象の配布ファイルを示す配布対象ファイル情報、当該ノードが保持する配布ファイルを示す保持配布ファイル情報、当該ノードの下位のノードを示す下位ノード情報、および当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報を含む配布ファイル管理情報とを配布し、
各ノードに対応するサーバによって、前記マスタサーバから受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布し、
各ノードに対応するサーバによって、前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得することを特徴とする、ファイル配布方法。
【請求項２】
前記マスタサーバによる、前記配布構成のノードのそれぞれに対する前記サーバの割り
当ては、前記サーバの重複が生じないように行なわれることを特徴とする請求項１に記載の方法。
【請求項３】
サーバのうち、当該サーバが始点又は終点をなすネットワークの負荷が低いサーバを前記配布構成の上位のノードに割り当てることを特徴とする請求項１又は２に記載の方法。
【請求項４】
異なるスイッチに接続されている複数のサーバが存在する場合、該複数のサーバのうちＣＰＵ負荷の低い方のサーバが優先的に前記配布構成の上位のノードに割り当てられるように、サーバを前記配布構成の上位のノードに割り当てることを特徴とする請求項３に記載の方法。
【請求項５】
複数の配布ファイルを保持するマスタサーバと、該配布ファイルが配布される複数のサーバとを備えるファイル配布システムであって、
前記マスタサーバは、
前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成する配布構成作成部と、
前記ファイル配布システムの状態をシステム状態情報として管理するシステム状態データベースと、
前記システム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当てる割当部と、
前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理する配布ファイル管理データベースと、
前記割当部で割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布する配布部とを備え、
各ノードに対応するサーバは、
受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布するファイル配布制御部と、
前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得するファイル管理部とを備えることを特徴とする、ファイル配布システム。
【請求項６】
複数の配布ファイルを保持し、複数のサーバに前記複数の配布ファイルを配布するマスタサーバであって、
前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成する配布構成作成部と、
システムの状態をシステム状態情報として管理するシステム状態データベースと、
前記システム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当てる割当部と、
前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理する配布ファイル管理データベースと、
前記割当部によって割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布する配布部とを備えることを特徴とするマスタサーバ。
【請求項７】
前記割当部による、前記配布構成のノードのそれぞれに対する前記サーバの割り当ては、前記サーバの重複が生じないように行なわれることを特徴とする請求項６に記載のマスタサーバ。
【請求項８】
前記割当部は、サーバのうち、当該サーバが始点又は終点をなすネットワークの負荷が低いサーバを前記配布構成の上位のノードに割り当てることを特徴とすることを特徴とする請求項６又は７に記載のマスタサーバ。
【請求項９】
前記割当部は、異なるスイッチに接続されている複数のサーバが存在する場合、該複数のサーバのうちＣＰＵ負荷の低い方のサーバが優先的に前記配布構成の上位のノードに割り当てられるように、前記配布構成を構成することを特徴とする請求項８に記載のマスタサーバ。
【請求項１０】
複数の配布ファイルを保持するマスタサーバから複数のサーバに前記複数の配布ファイルを配布するファイル配布プログラムであって、
前記ファイル配布プログラムは前記マスタサーバによって実行されると、前記マスタサーバに、
前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成させ、
前記マスタサーバ及び前記複数のサーバの少なくともいずれかの状態を示すシステム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当て、
前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理させ、
前記割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布させ、
前記複数のサーバによって実行されたときに、
前記マスタサーバから受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布させ、
前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得させることを特徴とする、ファイル配布プログラム。
【請求項１１】
前記マスタサーバによる、前記配布構成のノードのそれぞれに対する前記サーバの割り当ては、前記サーバの重複が生じないように行なわれることを特徴とする請求項１０に記載のファイル配布プログラム。
【請求項１２】
前記割当部による、前記配布構成のノードのそれぞれに対する前記サーバの割り当ては、前記サーバの重複が生じないように行なわれることを特徴とする請求項５に記載のファイル配布システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル（データ）の配布方法、配布システム、マスタサーバ、配布プログラムに関する。
【背景技術】
【０００２】
複数台のサーバ間でファイル（データ）を共有すべく、ファイル（データ）を各サーバに配布する機能を備えたシステムが広く利用されている。
例えば、システム内に１つのマスタサーバを配置し、このマスタサーバが、システム内の各サーバに対して共有すべきファイルを配布するとともに、配布に関する管理情報を一元的に管理するシステム（例えば、ビットトレント（ＢｉｔＴｏｒｒｅｎｔ）（登録商標））が利用されている。
【０００３】
その際、マスタサーバを頂点とするツリー形状により配布経路を予め設定しておき、そのツリー形状に沿って各サーバは、受信したファイル（データ）を下位サーバに送信するといった配布を行なうこともできる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００６／０８００８３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ツリー形状の配布形態では、送信方向は一方向で行われ、通信相手ごとにファイル（データ）の送信時間を要することを考慮すると、ツリーの末端の通信装置に対して共有すべき全てのデータを配布し終わるまでの時間が長い。
また、予め設定されたツリー形状は固定的であるため、システムの状況に応じた臨機応変な対応ができない。
【０００６】
更に、ツリーの頂点に対応する通信装置及びツリーの途中に存在する通信装置における障害発生時に、下位の通信装置への配信が途絶えてしまう。
１つの側面では、本発明は、ファイル（データ）の配布に要する時間の短縮化を図ることを目的とする。
また、他の側面では、本発明は、システムの状況に応じてファイル（データ）の配布経路を変更可能とすることを目的とする。
【０００７】
また、他の側面では、本発明は、ファイル（データ）の配布の際の、配信経路に冗長性を持たせることを目的とする。
【課題を解決するための手段】
【０００８】
このため、このファイル配布方法は、複数の配布ファイルを保持するマスタサーバから複数のサーバに前記複数の配布ファイルを配布するファイル配布方法であって、前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成し、前記マスタサーバによって、前記マスタサーバ及び前記複数のサーバの少なくともいずれかの状態を示すシステム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当て、前記マスタサーバによって、前記配布構成に基づいて、各サーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと、当該ノードの上位のノードを示す上位ノード情報、配布対象の配布ファイルを示す配布対象ファイル情報、当該ノードが保持する配布ファイルを示す保持配布ファイル情報、当該ノードの下位のノードを示す下位ノード情報、および当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報を含む配布ファイル管理情報とを配布し、各ノードに対応するサーバによって、前記マスタサーバから受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布し、各ノードに対応するサーバによって、前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得する。
【０００９】
また、このファイル配布システムは、複数の配布ファイルを保持するマスタサーバと、該配布ファイルが配布される複数のサーバとを備えるファイル配布システムであって、前記マスタサーバは、前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成する配布構成作成部と、前記ファイル配布システムの状態をシステム状態情報として管理するシステム状態データベースと、前記システム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当てる割当部と、前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理する配布ファイル管理データベースと、前記割当部で割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布する配布部とを備え、各ノードに対応するサーバは、受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布するファイル配布制御部と、前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得するファイル管理部とを備える。
【００１０】
また、このマスタサーバは、複数の配布ファイルを保持し、複数のサーバに前記複数の配布ファイルを配布するマスタサーバであって、前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成する配布構成作成部と、システムの状態をシステム状態情報として管理するシステム状態データベースと、前記システム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当てる割当部と、前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理する配布ファイル管理データベースと、前記割当部によって割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布する配布部とを備える。
【００１１】
また、このファイル配布プログラムは、複数の配布ファイルを保持するマスタサーバから複数のサーバに前記複数の配布ファイルを配布するファイル配布プログラムであって、前記ファイル配布プログラムは前記マスタサーバによって実行されると、前記マスタサーバに、前記マスタサーバを頂点とし、複数の前記配布ファイルが配布ファイル群として割り当てられるノードを複数備えるツリー構造を有し、下位のノードに割り当てられる前記配布ファイル群が、上位のノードに割り当てられる前記配布ファイル群の部分集合となる配布構成を作成させ、前記マスタサーバ及び前記複数のサーバの少なくともいずれかの状態を示すシステム状態情報に基づいて、前記配布構成のノードのそれぞれに対して、ＣＰＵ（Central Processing Unit）負荷が低いサーバを前記配布構成の上位のノードに割り当てることで、前記サーバを割り当て、前記配布構成における各ノードのそれぞれに対して、当該ノードの上位のノードを示す上位ノード情報と、配布対象の配布ファイルを示す配布対象ファイル情報と、当該ノードが保持する配布ファイルを示す保持配布ファイル情報と、当該ノードの下位のノードを示す下位ノード情報と、当該下位ノードが保持すべき配布ファイルを示す下位保持配布ファイル情報とを、配布ファイル管理情報として管理させ、前記割り当てられた最上位のサーバに対して、当該サーバに対応するノードに割り当てられる配布ファイルと前記配布ファイル管理情報とを配布させ、前記複数のサーバによって実行されたときに、前記マスタサーバから受信した前記配布ファイル管理情報に基づいて、自サーバが属するノードの一階層下のノードに対応するサーバに、当該サーバに割り当てられる配布ファイルを配布させ、前記保持配布ファイル情報に基づいて、前記配布対象ファイル情報に示されている全配布対象ファイルのうち、該サーバが未所有の配布ファイルが存在する場合に、当該不足配布ファイルを、前記マスタサーバ以外の他のサーバに問い合わせることにより取得させる。
【００１２】
また、複数の通信装置間で複数のデータを共有するためのデータ配布方法は、ツリー状の配布構成において同じ階層に属する複数の通信装置は、上位の通信装置から受信した複数のデータのうち、一部のデータを除くデータを下位の通信装置に送信して、前記複数の通信装置の中で未受信のデータが異なる複数のグループを生じさせ、前記複数の通信装置の各々は、自通信装置が未受信の第１のデータを受信した他のグループに属する通信装置との間で、該他のグループに属する通信装置が未受信の第２のデータの該他の通信装置への送信と、該他の通信装置からの前記第１のデータの受信を並行して行なうことで１以上の不足データを補完する。
【００１３】
また、複数の通信装置間で複数のデータを共有するためのデータ配布システムにおいて、ツリー状の配布構成において同じ階層に属する複数の通信装置が、上位の通信装置から受信した複数のデータのうち、一部のデータを除くデータを下位の通信装置に送信して、前記複数の通信装置の中で未受信のデータが異なる複数のグループを生じさせ、前記複数の通信装置の各々において、自通信装置が未受信の第１のデータを受信した他のグループに属する通信装置との間で、該他のグループに属する通信装置が未受信の第２のデータの該他の通信装置への送信と、該他の通信装置からの前記第１のデータの受信を並行して行なうことで１以上の不足データを補完する手段を有する。
【発明の効果】
【００１４】
１態様によれば、ファイル（データ）の配布に要する時間の短縮化を図ることができる。
また、１態様によれば、他の側面では、本発明は、システムの状況に応じてファイル（データ）の配布経路が変更可能となる。
また、１態様によれば、ファイル（データ）の配布の際の、配信経路に冗長性を持たせることができる。
【００１５】
さらに、１態様によれば、データの送信と受信とが同時に行なわれるため、配布速度を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態の一例としてのファイル配布システムの構成を示す模式図である。
【図２】実施形態の一例としてのファイル配布システムのネットワーク構成の例を示す模式図である。
【図３】実施形態の一例としての状態監視データベースのＣＰＵ負荷データベースの例を示す図である。
【図４】実施形態の一例としての状態監視データベースのネットワーク負荷データベースの例を示す図である。
【図５】実施形態の一例としての状態監視データベースのネットワーク物理構成データベースの例を示す図である。
【図６】実施形態の一例としての配布ファイルデータベースのデータ構造を示す図である。
【図７】実施形態の一例としての配布ファイルデータベースのデータ例の一部を示す図である。
【図８】実施形態の一例としての配布構成の作成例を示す模式図である。
【図９】実施形態の一例としてのサーバの割り当て方法を示す模式図である。
【図１０】実施形態の一例としてのネットワーク物理構成を考慮したサーバの選択方法を示す模式図である。
【図１１】実施形態の一例としてのファイル配布システムの構成の配布構成作成部の処理を示す模式図である。
【図１２】実施形態の一例としてのファイル配布システムにおける配布構造を表すベン図である。
【図１３】実施形態の一例としてのファイル配布方法を示すフローチャートである。
【図１４】実施形態の第一変形例としてのファイル配布システムにおける配布構造を示す模式図である。図１３の配布構造である。
【図１５】図１４の配布構造を表すベン図である。
【図１６】実施形態の第二変形例としてのファイル配布システムにおける配布構造を示す模式図である。
【発明を実施するための形態】
【００１７】
（Ａ）システム構成
以下、図面を参照して本技術の実施形態の一例の構成を説明する。
図１は実施形態の一例としてのファイル配布システム１の構成を示す模式図であり、図２は、当ファイル配布システム１のネットワーク構成の例を示す模式図である。
本ファイル配布システム１は、配布ファイル（データ）を配布（共有）するためのシステムである。
【００１８】
本ファイル配布システム１は、マスタサーバ（通信装置）２と、複数のサーバ（通信装置）３とから構成され、マスタサーバ２と、複数台のサーバ３とが接続されている。
マスタサーバ２と、複数のサーバ３とは、図２に示すように、ネットワーク１０を介して相互に接続されている。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。
【００１９】
ファイル配布システム１においては、例えば、サーバ３に記憶されているファイルの修正ファイルあるいは更新ファイル（例えば、オペレーティングシステムやドライバ、アプリケーションプログラムのパッチなど）が、配布ファイルとして、マスタサーバ２からサーバ３に配布される。
マスタサーバ２は、このような配布ファイルの全てを管理し、配布するサーバ機能を備えたコンピュータ（サーバコンピュータ）である。
【００２０】
マスタサーバ２は、図示しないＣＰＵ、メモリ（ＲＯＭやＲＡＭ）、ハードディスクドライブ等を備える。
以下、実施形態の一例としてのマスタサーバ２の構成について説明する。
マスタサーバ２は、図１に示すように、サーバ割当部１１、配布構成作成部１２、配布部１３、状態監視データベース（ＤＢ：Data Base）１４、及び配布ファイルデータベース（ＤＢ）１８を備える。
【００２１】
サーバ３のハードディスクドライブには、状態監視データベース（ＤＢ：Data Base）１４及び配布ファイルデータベース（ＤＢ）１８が格納されているほか、配布対象の配布ファイルも格納されている。
サーバ割当部１１は、配布元サーバとするサーバ３を選出する。サーバ割当部１１は、後述する状態監視データベース１４に保持されている、サーバ３のＣＰＵ負荷、ネットワーク負荷及びネットワーク物理構成などの条件を統合的に鑑みて、配布元サーバとするサーバ３を選出する。
【００２２】
例えば、ＣＰＵ負荷を優先して配布元サーバとするサーバ３を選出する場合には、サーバ割当部１１は、後述するＣＰＵ負荷データベース１５を参照して、全てのサーバ３をＣＰＵ負荷の軽いものから順に並べ、上位の数台のサーバ３もしくは上位数パーセントのサーバ３を選択する。
また、例えば、サーバ３間のネットワーク負荷を優先して配布元サーバとするサーバ３を選出する場合には、サーバ割当部１１は、後述するネットワーク負荷データベース１６を参照して、全てのサーバ３をネットワーク負荷の軽いものから順に並べ、上位の数台のサーバ３もしくは上位数パーセントのサーバ３を選択する。
【００２３】
また、配布元サーバとするサーバ３を、ＣＰＵ負荷とネットワーク負荷との両方に応じて選択してもよい。その際、ＣＰＵ負荷データベース１５とネットワーク負荷データベース１６とを参照して、重み付けにより、ＣＰＵ負荷とネットワーク負荷との複合値を算出して、この複合値が低い上位の数台のサーバ３もしくは上位数パーセントのサーバ３を選択してもよい。
【００２４】
そして、選択されたこれらのサーバ３を、後述する配布構成作成部１２が作成する配布構成に、配布元サーバとして割り当てる。
配布構成作成部１２は、配布ファイルの配布経路を定義している配布構成を作成する。
その際、配布構成作成部１２は、配布ファイルの種類（サイズや用途など）に応じ、配布ファイルをグループ化する。以下、本ファイル配布システム１において配布すべき配布ファイルの数をｎ（個）（ｎ＝２以上の整数）とする。
【００２５】
また、その際、配布ファイルの種類が少なく、ファイルサイズが大きい場合には、配布構成作成部１２は、一つの配布ファイルを幾つかのファイルに分割する。このようにして、配布構成作成部１２は、本ファイル配布システム１において配布すべきファイルを、グループ化したり適宜分割することにより、ｎ個の配布ファイルとする。なお、ファイルを分割したりグループ化することにより、後述の交換時に、複数グループ（ファイル）の送信と受信とが同時に行なわれ、これら複数グループ（ファイル）のデータサイズが揃っていることにより、タイムロスを減らし、交換の効率を向上できる。
【００２６】
なお、以下の記載においては、１つのファイルを分割することにより形成されたファイルも、複数のファイルをグループ化したものも、総称して「配布ファイル」を称する。そして、これらのファイルの部分集合からなるノードを定義して、サーバ割当部１１に通知する。
更に、配布構成作成部１２は、これらのグループに基づいて、配布ファイルを配布するための配布構成を作成する。配布構成作成部１２における配布ファイルの配布構成の作成手順を以下に述べる。
【００２７】
例えば、配布構成作成部１２は、最上位のノードには配布ファイルの全てが含まれ、下位ノードに行くほど配布ファイル数が少なくなる階層構造を有する配布構成を作成する。このような階層構造の例として、ツリー形式が挙げられる。ツリー形式を用いた説明は後述する。
配布部１３は、配布ファイルが配布対象の全てのサーバ３に配布されるように制御を行なう。例えば、配布部１３は、サーバ３を配布元サーバとして機能させるために、サーバ割当部１１が選択した、配布元サーバとして機能させたいサーバ３に配布ファイルをプッシュする。また、配布部１３は、サーバ３間でＰ２Ｐ方式によるファイル配布を開始させるための命令を発行する。
【００２８】
状態監視データベース１４は、サーバ３の状態（ＣＰＵ負荷など）、サーバ３のネットワーク物理構成、サーバ３間のネットワークトラフィック情報などのシステム状態を管理するデータベースである。本実施形態では、状態監視データベース１４は、ＣＰＵ負荷データベース１５、ネットワーク負荷データベース１６、及びネットワーク物理構成データベース１７を有する。状態監視データベース１４のＣＰＵ負荷データベース１５の例を図３に、状態監視データベース１４のネットワーク負荷データベース１６の例を図４に、状態監視データベース１４のネットワーク物理構成データベース１７の例を図５にそれぞれ示す。
【００２９】
ＣＰＵ負荷データベース１５は、各サーバ３のＣＰＵ負荷を管理するデータベースであって、図３に示す例においては、ファイル配布システム１に存在する各サーバ３を特定するためのサーバＩＤ（本例においてはＩＰアドレス）と、そのサーバのＣＰＵ負荷（パーセント表記）とが管理されている。
ネットワーク負荷データベース１６は、各サーバ３間を接続する個々のリンクの負荷を管理するデータベースであって、図４に示す例においては、ファイル配布システム１に存在する各リンクの始点のサーバ３のサーバＩＤである「Ｆｒｏｍ：サーバＩＤ」（本例においてはＩＰアドレス）と、当該リンクの終点のサーバ３のサーバＩＤである「Ｔｏ：サーバＩＤ」（本例においてはＩＰアドレス）と、当該リンクのネットワーク負荷（パーセント表記）とが管理されている。なお、リンクの「始点」及び「終点」とは、スイッチに近いほうを「始点」、スイッチから遠いほうを「終点」と便宜上表す。
【００３０】
ネットワーク物理構成データベース１７は、本ファイル配布システム１を構成するネットワークの構成を管理するデータベースであって、図５に示す例においては、例えば、ファイル配布システム１に存在する各スイッチを特定するためのスイッチＩＤ（本例においてはＩＰアドレス）と、そのスイッチの配下のサーバ３のサーバＩＤ（本例においてはＩＰアドレス）とが管理されている。
【００３１】
配布ファイルデータベース１８は、サーバ３に配布すべきファイルを管理するデータベースである。配布ファイルデータベース１８のデータ構造の具体例を図６に示す。
図６に示す例においては、配布ファイルデータベース１８は、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、自サーバ取得ファイルＩＤリスト３３、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５を有する。配布元サーバＩＤリスト３１は、配布元サーバとして設定されたサーバ３のＩＤのリストである。また、全配布ファイルＩＤリスト３２は、その配布元サーバが下位のサーバ３に配布すべき配布ファイルのＩＤリストである。自サーバ取得ファイルＩＤリスト３３は、各サーバ３が既に取得している配布ファイルを識別するＩＤの一覧をリストとして表す。配布先サーバＩＤリスト３４は、配布ファイルの配布先である一階層下のノードのサーバ３を識別するＩＤの一覧をリストとして表す。更に、配布先サーバ取得ファイルＩＤリスト３５は、一階層下のノードのサーバ３に配布すべきファイルを識別するＩＤのリストを一覧をして表す。
【００３２】
なお、本願では、サーバ３のＩＤとしてサーバ３のＩＰアドレスを使用しているが、ＩＰアドレスに限定されない。
状態監視データベース１４、ＣＰＵ負荷データベース１５、ネットワーク負荷データベース１６、ネットワーク物理構成データベース１７、及び配布ファイルデータベース１８のデータは、例えば図示しないＨＤＤに記憶されている。
【００３３】
この配布ファイルデータベース１８の具体的なデータ例の一部を、図７に示す。
また、サーバ３は、マスタサーバ２によって配布ファイルが配布される先の配布先サーバとして機能するほか、この配布された配布ファイルを、他のサーバ３に配布する配布元サーバとしても機能することができる。サーバ３は、相互にピアツーピア（Ｐ２Ｐ）通信が可能である。なお、Ｐ２Ｐ通信とは、マスタサーバ２を介さないサーバ３間での通信であり、既知の種々の手法で実施することができる。
【００３４】
各サーバ３は、スイッチ（図１０参照）やルータを介して、それぞれネットワーク１０に接続されている。
次に、サーバ３の構成を説明する。
サーバ３は、図示しないＣＰＵ、メモリ（ＲＯＭやＲＡＭ）、ハードディスクドライブ等を備えるコンピュータまたは通信装置である。
【００３５】
本ファイル配布システム１に含まれる複数のサーバ３は、互いに同じもしくはほぼ同じ構成を有している。
各サーバ３は、図１に示すように、それぞれ、ファイル配布制御部２１、ファイル管理部２２及び前述した配布ファイルデータベース１８と同様の配布ファイルデータベース２３を備える。
【００３６】
サーバ３のハードディスクドライブには、配布ファイルデータベース２３が格納されるほか、マスタサーバ２や他のサーバ３から取得した配布ファイルが格納される。ファイル配布制御部２１は、マスタサーバ２又は上位のサーバ３からの指示に従って、後述する配布ファイルデータベース２３を参照して、自身が属するノードの一階層下のノードのサーバへの配布ファイルの配布を開始する。
【００３７】
ファイル管理部２２は、後述する配布ファイルデータベース２３を参照して、自サーバ３において不足している配布ファイルが存在する場合に、その不足配布ファイルを、Ｐ２Ｐによって他のサーバ３から取得するために問合わせを行ない、その配布ファイルを取得する。また、ファイル管理部２２は、他のサーバ３からの配布ファイルの問合せを受信した場合、後述する配布ファイルデータベース２３を参照して、その配布ファイルを自身が所有している場合には当該配布ファイルを他のサーバ３に送信する。配布する不足データを補完すべきペアは事前に各サーバ３に記憶しておいても、配布ファイルの付加情報としてマスタサーバ２から付加情報として配布し、この付加情報を参照することにより各サーバ３が自律的に見つけてもよい。  配布ファイルデータベース２３は、上記のマスタサーバ１の配布ファイルデータベース１８と同様のデータ構造を有する。配布ファイルデータベース２３は、後述のごとく、配布ファイルデータベース１８や、他のサーバ３の配布ファイルデータベース２３と一致するように更新される。
【００３８】
配布ファイルデータベース２３は、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、自サーバ取得ファイルＩＤリスト３３、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５を有する。配布元サーバＩＤリスト３１は、配布元サーバとして設定されたサーバ３を識別するＩＤの一覧をリストとして表す。また、全配布ファイルＩＤリスト３２は、その配布元サーバが下位のサーバ３に配布すべき配布ファイルのＩＤリストである。自サーバ取得ファイルＩＤリスト３３は、自サーバ３が既に取得している配布ファイルを識別するＩＤの一覧リストである。配布先サーバＩＤリスト３４は、配布ファイルの配布先である一階層下のノードのサーバ３を識別するＩＤの一覧リストとして表す。更に、配布先サーバ取得ファイルＩＤリスト３５は、一階層下のノードのサーバ３に配布すべきファイルを識別するＩＤの一覧をリスト３５として表す。
【００３９】
なお、本願では、サーバ３のＩＤとしてサーバ３のＩＰアドレスを使用しているが、サーバ３のＩＤはＩＰアドレスに限定されない。
ファイル管理部２２は、自サーバ３のＩＤ（本実施形態ではＩＰアドレス）をキーとして、配布ファイルデータベース２３の配布元サーバＩＤリスト３１を検索し、自サーバ３の上位のノードのサーバＩＤを知ることができる。なお、「上位」及び「下位」とは、ルートに近い方を「上位」、末端に近いほうを「下位」と呼ぶ。
【００４０】
また、ファイル管理部２２は、配布ファイルデータベース２３の全配布ファイルＩＤリスト３２のエントリと、自サーバ３のＩＤをキーとして検索した自サーバ３の自サーバ取得ファイルＩＤリスト３３のエントリとを比較して、不足している配布ファイルを知ることができる。
また、ファイル管理部２２は、自サーバ３のＩＤをキーとして、配布ファイルデータベース２３の配布先サーバＩＤリスト３４を検索することによって、自サーバ３が、上位サーバから受け取った配布ファイルの部分集合を配布すべき相手先の下位サーバ３を知ることができる。
【００４１】
また、ファイル管理部２２は、自サーバ３のＩＤをキーとして、配布ファイルデータベース２３の配布先サーバ取得ファイルＩＤリスト３５を検索することによって、自サーバ３が、下位サーバ３に配布すべき配布ファイルを知ることができる。
なお、上記の実施形態の一例では、マスタサーバ２の配布ファイルデータベース１８と、サーバ３の配布ファイルデータベース２３とが同様であると説明したが、配布ファイルデータベース１８と配布ファイルデータベース２３とが異なっていてもよい。例えば、サーバ３の配布ファイルデータベース２３に、自サーバ３の上位の配布元サーバと、これに対応する情報のみが格納されていてもよい。
（Ｂ）システム動作
次に、上記の如く構成された実施形態の一例としてのファイル配布システム１の動作を説明する。
［１］以下に、図８を参照して、配布構成作成部１２による配布構成２０の作成例を説明する。ここでは、配布構成２０の一例として、複数のノードからなるツリー構成を生成する例を示す。
【００４２】
この例において、サーバ３の総数をｉ（台）、配布元として選択するサーバ３の割合をｊ（％）とする。
（１−１）サーバ３全ｉ台のうちのｊ％のサーバを配布元サーバとして選択する。ｊは、事前にシステムの状態などによって決定してもよい。
（１−２）次に、配布すべき配布ファイル数の総数がｎのとき、ｎ！（階乗）＞ｉ×ｊが成立する場合には、ｎ個の配布ファイルをｍ個のグループに分割する。その際、ｍの値は、ｎ／ｍ＜ｉ×ｊとなるように決定する。
（１−３）次に、ツリーを生成する。ｍ（本例ではｍ＝ｎ：但し、ｎ＜ｉ×ｊ）個のグループから、図８のツリーのように、ｍ−１分木から分岐しｍ−１＝１になるまで、配布構成２０としてのツリーを生成する。例えば、図８に示す例ではルートからｍ−１本の分岐を生成させ、その一階層下のノードからはそれぞれｍ−２の分岐を生成させ、この枝の生成を枝の本数が１本になるまで繰り返す。
【００４３】
この際のツリーの形成方法は、以下の通りである。なお、本例では、１ファイルが１つのグループとなる（ｍ＝ｎ）ため、以下の説明では「グループ」を「ファイル」と称する。
ｍ−１本木を生成する。ファイルをファイル１、ファイル２、ファイル３、ファイル４…のようにソートする。そして、ソートしたファイルの並びの先頭のファイルを始点とし、ｍ−１個のファイルを取得する。次に、ソートしたファイルの並びのファイルの並びの２番目のファイルを始点としてｍ−１個のファイルを取得する。次に、ソートした３番目のファイルを始点としてｍ−１個のファイルを取得していき、上記の処理を繰り返す。このとき、ソートしたファイルの並びの最後まで達しても、取得したファイルの数がｍ−１に達しない場合には、ソートしたファイルの並びの先頭から不足分を取得する。この操作を、枝の本数がｍ−１本になるまで繰り返す。
【００４４】
次に、生成したｍ−１本木の各ノードからそれぞれ、ｍ−２本木を生成する。ｍ−１本木の先頭のノードの先頭のファイルを始点とし、ｍ−２個のファイルを取得する。この操作を繰り返してｍ−２本の枝を生成し、次のノードに移る。
上記の操作を、枝の本数が１本になるまで繰り返す。
［２］次に、図９に示すように、サーバ機能プランニング部１１は、上記のように生成した配布構成２０としてのツリーに、サーバ３を割り当てる。サーバ３の割り当て方法を以下に説明する。
（２−１）まず、サーバ３全ｉ台のうちのｊ％の台数のサーバ３を、ＣＰＵ負荷やネットワーク負荷を考慮して選択しソートする。
（２−２）次に、上記で作成したツリーに対し（２−１）のソート順にｉ×ｊ台のサーバ３を、ツリーの上位のノードから下位のノードに、（ｉ×ｊ／１００）／（ノード総数）台ずつそれぞれ割り当てる。
【００４５】
例えば、サーバ３全１０，０００万台のうちの５％を、図１１の２２のノードに割り当てる場合には、ｉ＝１００００、ｊ＝５、ノード総数＝２２となり、（１００００×０．０５）／２２≒２２となり、各ノードに２２台ずつサーバを割り当てることになる。
なお、上記（２−１）において、ＣＰＵ負荷やネットワーク負荷を考慮してサーバ３を選択する以外にも、ネットワーク物理構成を考慮してサーバ３を選択することも可能である。その方法を、図１０を参照して説明する。
【００４６】
例えば、図１０の例では、サーバ３−１〜３−６の６台のサーバ３が存在する。当該選択処理実行時点におけるＣＰＵ負荷が軽い順に並べると、サーバ３−３、サーバ３−４、サーバ３−１、サーバ３−５、サーバ３−２、サーバ３−６となり、サーバ３−３が負荷が最も軽く、サーバ３−６が最も高負荷であるとする。
このとき、ＣＰＵ負荷に鑑みて、配布元サーバとするサーバ３を２台選択する場合には、サーバ３−３とサーバ３−４とが選択される。
【００４７】
しかし、図１０に示すように、サーバ３−３とサーバ３−４とはいずれも、スイッチＳ２の配下に存在する。したがって、サーバ３−３とサーバ３−４とに配布ファイルを割り当てた場合、スイッチＳ２が故障した場合には冗長性が維持できなくなる。
そこで、サーバ３−１を選択した後に、次点の候補のサーバ３−４とサーバ３−３が接続されているスイッチをチェックする。接続元のスイッチが一致する場合には、サーバ３−３とはスイッチが異なるサーバ３のうち、ＣＰＵ負荷の最も軽いサーバ３−１を選択して、最終的には、サーバ３−３と３−１との２台を選択する。このように選択を行なうことにより、スイッチＳ２が故障してサーバ３−３が使用不可となった場合でも、スイッチＳ１の配下にあるサーバ３−１により配布ファイルの配布が行われることが保証される。
【００４８】
次に、配布ファイルのグループの配布構成の作成ならびに配布構成へのサーバの割り当てについて、図１１を参照して、配布ファイル数ｎ＝４、配布構成が階層構造を有する場合を例に説明する。
図１１の例では、配布ファイルは、分割の必要のない、ほぼ同じサイズのファイルが４つ存在するとする。この場合、配布すべき配布ファイル数ｎは４であり、グループ数ｍも４である。このように、例では、各グループに配布すべき配布ファイルが１つずつ含まれる場合、グループを「配布ファイル」と称することもある。
【００４９】
以下、これらの４つのファイルをそれぞれ、「１」、「２」、「３」、「４」で表すものとする。
マスタサーバ３の配布構成作成部１２は、これら４つの配布ファイルのすべてが含まれる集合であるファイル群｛１，２，３，４｝をノード１とし、これら４つの配布ファイルのうちの３つが含まれる部分集合であるファイル群｛１，２，３｝をノード２、ファイル群｛２，３，４｝をノード３、ファイル群｛３，４，１｝をノード４とする。前述のように、この際のノードの形成方法は、以下の通りである。ファイルをファイル１、ファイル２、ファイル３、ファイル４のように、ファイルサイズ順やファイル名順などでソートする。そして、ソートしたファイルの並びの先頭のファイルを始点とし、ｎ−１個のファイルを取得する。次に、ソートしたファイルの並びのファイルの並びの２番目のファイルを始点としてｎ−１個のファイルを取得する。次に、ソートした３番目のファイルを始点としてｎ−１個のファイルを取得していき、上記の処理を繰り返す。このとき、ソートしたファイルの並びの最後まで達しても、取得したファイルの数がｎ−１に達しない場合には、ソートしたファイルの並びの先頭から不足分を取得する。
【００５０】
そして、配布構成作成部１２は、ノード２｛１，２，３｝の部分集合である下位ノードとして、ノード５｛１，２｝とノード６｛２，３｝とを形成する。また、ノード３｛２，３，４｝の部分集合である下位ノードとして、ノード７｛２，３｝とノード８｛３，４｝とを形成する。また、ノード４｛３，４，１｝の部分集合である下位ノードとして、ノード９｛３，４｝とノード１０｛４，１｝とを形成し、グループの部分集合であるノードを作成する。
【００５１】
最後に、配布構成作成部１２は、最下位のノードとして、ノード５｛１，２｝の部分集合である下位ノードとして、ノード１１｛１｝とノード１２｛２｝とを作成し、同様に、最下位のノード１３〜２２を作成し、グループの部分集合であるノードを作成する。
そして、これらのノード１〜２２のそれぞれにサーバ３を割り当てる。
例えば、ノード１にサーバａ、ノード２にサーバｂ、ノード３にサーバｃ、ノード４にサーバｄ、ノード５にサーバｅ、ノード６にサーバｆ、ノード７にサーバｇ、ノード８にサーバｈ、ノード９にサーバｉ、ノード１０にサーバｊ、ノード１１にサーバｋ、ノード１２にサーバｌ…をそれぞれ割り当てる。この際、割り当てるサーバａ〜ｕは、前述のごとくサーバをＣＰＵ負荷及び／又はネットワーク負荷に応じてソートし、ネットワーク構成を鑑みて選択する。
【００５２】
次に、例えば、マスタサーバ２の配布部１３によって、４つのファイルのうち４つ全てが含まれるノード１に割り当てられたサーバａに、グループ１〜４の４つのファイルの全てがプッシュされる。４つのファイルがプッシュされるサーバａには、後に行なわれるＰ２Ｐでのファイル配布により負荷がかかることが予測されるため、元々のＣＰＵ負荷あるいはネットワーク負荷の低いサーバを割り当てることが望ましい。
【００５３】
また、ファイル１〜４のプッシュと同時に、マスタサーバ２によって、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５もプッシュされる。サーバａは、これらの情報により、自サーバの配布ファイルデータベース２３の配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５を更新すると共に、自サーバの配布ファイルデータベース２３の自サーバ取得ファイルＩＤリスト３３も更新する。
【００５４】
次に、４つのファイルのうち３つが含まれるノード２に割り当てられたサーバｂに、サーバａによってグループ１〜３のファイルがプッシュされる。同様にノード３に割り当てられたサーバｃに、サーバａによってグループ１，２，４のファイルがプッシュされる。ノード４に割り当てられたサーバｄに、サーバａによってグループ３，４，１のファイルがプッシュされる。その際、同様に、サーバａによって、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５も、サーバｂ、ｃ、ｄにプッシュされる。これらのリストと配布された配布ファイルＩＤとに基づいて、サーバａ、ｂ、ｃ、ｄは、上記と同様に配布ファイルデータベース２３を更新する。
【００５５】
更に、４つのグループのうち２つのグループが含まれるノードに割り当てられたサーバに、上位のサーバ３によって、２つのグループのファイルがプッシュされる。例えば、ノード５に割り当てられたサーバｅに、サーバｂによってグループ１，２のファイルがプッシュされる。ノード６に割り当てられたサーバｆに、サーバｂによってグループ２，３のファイルがプッシュされる。ノード７に割り当てられたサーバｇに、サーバｃによってグループ２，３のファイルがプッシュされる。ノード８に割り当てられたサーバｈに、サーバｃによってグループ３，４のファイルがプッシュされる。ノード９に割り当てられたサーバｉに、サーバｄによってグループ３，４のファイルがプッシュされる。ノード１０に割り当てられたサーバｊに、サーバｄによってグループ４，１のファイルがプッシュされる。同様に、その際、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５もサーバにプッシュされる。これらのリストと配布された配布ファイルＩＤとに基づいて、サーバｅ〜ｊは配布ファイルデータベース２３を更新する。
【００５６】
最後に、４つのグループのうち１つのグループだけが含まれる最下位ノードに割り当てられたサーバｋ〜ｖに、上位のサーバ３によって、１つのグループのファイルがプッシュされる。同様に、その際、配布元サーバＩＤリスト３１、全配布ファイルＩＤリスト３２、配布先サーバＩＤリスト３４、及び配布先サーバ取得ファイルＩＤリスト３５もサーバにプッシュされる。これらのリストと配布された配布ファイルＩＤとに基づいて、サーバｋ〜ｖは配布ファイルデータベース２３を更新する。
【００５７】
この際、ノードに複数台のサーバ３が割り当てられている場合、当該ノードのサーバ３のうちの１台にファイルがプッシュされ、ノードの残りのサーバ３は、ファイルのプッシュを受けたサーバ３から、Ｐ２Ｐでファイルを受け取ってもよい。
次に、各サーバ３は不足している配布ファイルを取得する。各サーバ３のファイル管理部２２は、配布ファイルデータベース２３を参照して、他のサーバ３に、不足している配布ファイルを要求する。要求されたサーバ３は、要求してきたサーバ３が属するノードに、既に同ファイルを取得したサーバ３が存在すれば、そのサーバ３に不足している配布ファイルを要求し、同ファイルを送信する。更に、同ノードにないファイルであれば、隣接するノードのサーバに問い合わせる。この問い合わせは再帰的に行なわれるため、このファイルを取得できる。
【００５８】
例えば、ノード２に属し、グループ１，２，３のファイルがプッシュされたサーバｂは、配布ファイルデータベース２３を参照する。そして、配布ファイルデータベース２３の全配布ファイルＩＤリスト３２と自サーバ取得ファイルＩＤリスト３３とを参照し、サーバａから、不足しているグループ４のファイルをＰ２Ｐで取得する。サーバｂは、自サーバ取得ファイルＩＤリスト３３リストを送信する。また、サーバａも、配布先サーバ取得ファイルＩＤリストを更新する。
【００５９】
この不足ファイルの取得の際には、同じ階層に属するサーバ３間でファイルの送信と受信とを並行して行なうことができるため、ファイル配布速度を向上させることができる。
不足する配布ファイルを補完しあうペアは、事前に定義して各サーバ３に記憶させておいても、配布ファイルの付加情報としてマスタサーバ２から送信されてもよい
また、上記の配布構成は、ベン図でも表すことができる。図１２は、図１１の配布構成をベン図で表した配布構成を示す。
【００６０】
図１２において、「１（図中では○付き数字）」で示すＡ１領域はファイル１、「２（図中では○付き数字）」で示す領域Ａ２はファイル２、「３（図中では○付き数字）」で示す領域Ａ３はファイル３、「４（図中では○付き数字）」で示す領域Ａ４はファイル４の配布をそれぞれ示す。また、各領域Ａ１〜Ａ４の積は、複数ファイルの配布を示す。
このように、配布構成の作成は、配布ファイルの部分集合を定義する作業であると考えることもできる。
【００６１】
なお、上記の例においては、配布構成と配布構成へのサーバの割り当てとを動的に定義する例を記載した。このように、配布構成と配布構成へのサーバの割り当てとを動的に定義する場合は、作成した配布構成を、配布ファイルの付加情報として、マスタサーバ２からサーバ３に配布してもよい。
あるいは、別の実施形態として、マスタサーバ２が配布構成とサーバの割り当てとを定義して、定義した配布構成とサーバの割り当てとをサーバ３に記憶させておいてもよい。
【００６２】
また、本件は、ファイル配布方法も考察するものであり、図１３のフローチャートを参照して、本ファイル配布方法１００を説明する。
まず、ステップＳ１０１において、マスタサーバ２の配布構成作成部１２により、配布ファイルの種類やサイズが大きい場合はそれを分割し、ｍ個のグループを作成する。
次に、ステップＳ１０２において、マスタサーバ３のサーバ機能プランニング部１１により、ｍ個のグループからツリーを定義して、ツリーのそれぞれのノードにグループの部分集合を割り当てる。その際、最上位のノードにはグループの全てが含まれ、下位ノードに行くほどグループ数が少なくなるようなツリーを形成する。
【００６３】
次に、ステップＳ１０３において、マスタサーバ２のサーバ機能プランニング部１１により、全サーバ３の内、ＣＰＵもしくはネットワーク負荷が小さいものを、ｉ×ｊ（ｉはサーバ３の総数、ｊはサーバ３全ｉ台のうち選択する割合％）台、配布元サーバとして選択し、ツリーの各ノードにｉ×ｊ／（ノード総数）台ずつサーバ３を割り当てる。
次に、ステップＳ１０４において、マスタサーバ２の配布部１３により、ｍ個の配布ファイルを持つノードに属するサーバ３が、ｍ個の配布ファイルを持つルートノードに属する任意の１台のサーバ３に、そのノードに属するｍ個の配布ファイルをプッシュする。なお、その際、ルートノードに複数のサーバ３が存在する場合、ファイルの配布を受けたサーバ３から、ルートノードに属する他の全てのサーバ３が、ｍ個の配布ファイルをＰ２Ｐで取得してもよい。ルートノードの配布ファイルを取得したサーバ３は、配布完了の旨の通知をマスタサーバ２へ通知する。
【００６４】
次に、ステップＳ１０５において、ｍ個の配布ファイルを持つノードに属するサーバ３が、ｍ−１個の配布ファイルを持つノードに属する任意の１台のサーバ３に、そのノードに属するｍ−１個の配布ファイルをプッシュする。同様に、その際、ｍ−１個の配布ファイルを持つノードに複数のサーバ３が存在する場合、ファイルの配布を受けたサーバ３から、ｍ−１個を持つノードに属する他の全てのサーバ３が、ｍ−１個の配布ファイルをＰ２Ｐで取得してもよい。当該ノードの配布ファイルを取得したサーバ３は、配布完了の旨の通知をマスタサーバ２へ通知する。
【００６５】
次に、ステップＳ１０６において、ｍ−１個の配布ファイルを持つノードに属するサーバ３が、ｍ−２個を持つノードに属するサーバ３に対し、上記の処理を繰り返す。処理を、ｍ−ｉ（ｋ＝１，…，ｍ−１）＝１になるまで繰り返し、各ノードに属するサーバ３が、ノードが持つ配布ファイルを共有する。
次に、ステップＳ１０７において、マスタサーバ２は、全てのサーバ３から、ノードに属する配布ファイルの受領完了通知を受ける。
【００６６】
ステップＳ１０８において、マスタサーバ２は、配布元サーバとして選択した全てのサーバ３に対し、残りの配布ファイルの配布を開始する指示を出す。
ステップＳ１０９において、各サーバ３は、自分の属するノードのファイル数＋１のノードから、不足している配布ファイルをＰ２Ｐで取得する。
次に、ステップＳ１１０において、ファイル数＋２のノードから不足している配布ファイルを取得し、これをファイル数＋ｋ（＝ｍ−ファイル数）分繰り返し、最終的にはｎ個全ての配布ファイルが、配布元サーバとして選択されたサーバ３に配布される。
【００６７】
次に、ステップＳ１１１において、ｎ個全てのファイルを取得したサーバ３は、マスタサーバ２に対し、配布を完了した旨の通知を送信する。
最後に、ステップＳ１１２において、マスターサーバ２の配布部１３が、サーバ３間でＰ２Ｐ方式によるファイル配布を開始させるための命令を発行し、これにより、配布元サーバとして選択されていない他のサーバ３にも全ての配布ファイルが配布される。
【００６８】
このように、実施形態の一例としてのファイル配布システム１及びファイル配布方法１００においては、マスタサーバ２が、全ての配下のサーバ３に配布ファイルを個々に配布するのではなく、マスタサーバ２が、配布ファイルをグループ化し、これらのグループを少なくとも１つ含む配布構成を作成して、配布構成に配布元サーバとする選択されたサーバを割り当てる。その際の割り当ては、サーバ３の負荷及び／又はネットワーク構成に応じて行なう。そして、配布構成の各ノードのサーバ３に、グループのファイルを配布する。その後、不足している配布ファイルを、サーバ３がピアツーピア（Ｐ２Ｐ）で相互に取得し合うように構成されている。
【００６９】
このため、サーバ３が配布元サーバとして機能するため、マスタサーバ２に冗長性を持たせることができる。このため、マスタサーバ２に万が一障害が生じた場合であっても、配布元サーバとして選択されたサーバ３により、ファイル配布システム１内の各サーバに配布ファイルを配布することができる。
更には、マスタサーバ２が一部のサーバ３にのみ配布ファイルを配布するので、ネットワーク負荷を低減することができる。
【００７０】
上述した実施形態においては、配布構成を示すツリーにおいて、上位のノードから下位のノードに向かって、各ノードから出る枝数が減少する例を示しているが、これに限定されるものではない。
（Ｃ）第一変形例
以下、図面を参照して本技術の実施形態の変形例の構成を説明する。
【００７１】
本第一変形例において、上記実施形態とは異なる配布構成の作成方法を示す。
図１４は実施形態の変形例としてのファイル配布システムにおける配布構造を示す模式図であり、図１５は、この配布構造を表すベン図である。
図１４の変形例では、配布構成の作成方法が上記例とは異なり、枝の本数が、上位ノードと下位ノードとで等しい。それ以外のマスタサーバ２及びサーバ３の機能及び構成については、上記の実施形態と同じである。
【００７２】
マスタサーバ２は、サーバ３−１，３−２に、配布ファイル１とファイル２とを配布する。
サーバ３−１は、サーバ３−３，３−４に配布ファイル１を配布し、サーバ３−２は、サーバ３−５，３−６に配布ファイル２を配布する。
その後、サーバ３−３とサーバ３−５とが配布ファイル１，２を交換し、サーバ３−４とサーバ３−６とが配布ファイル１，２を交換しあう。この交換時には、サーバ３−３による配布ファイル１の送信、サーバ３−５による配布ファイル１の受信、サーバ３−５による配布ファイル２の送信、サーバ３−３による配布ファイル２の受信が同時に行われる。これにより、配布速度を向上させることができる。
【００７３】
なお、不足する配布ファイルを補完しあうペアは、事前に定義して各サーバ３に記憶させておいても、配布ファイルの付加情報としてマスタサーバ２から送信されてもよい。
図１５は、図１４の配布形態をベン図で表した図である。
図１５において、「１（図中では○付き数字）」で示す領域Ａ１はファイル１、「２（図中では○付き数字）」で示す領域Ａ２はファイル２の配布をそれぞれ示す。また、各領域Ａ１，Ａ２の積Ａ１∩Ａ２は、ファイル１，２の配布を示す。
【００７４】
このように、配布構成の作成は、配布ファイルの部分集合を定義する作業であると考えることもできる。
このように、前述の実施形態の効果に加えて、第一変形例においては、サーバ３−３による配布ファイル１の送信、サーバ３−５による配布ファイル１の受信、サーバ３−５による配布ファイル２の送信、サーバ３−３による配布ファイル２の受信が同時に行われるため、配布速度を向上させることができる。
（Ｄ）第二変形例
以下、図面を参照して本技術の実施形態の第二変形例の構成を説明する。
【００７５】
本第二変形例において、上記実施形態とは異なる配布構成の作成方法を示す。
図１６は実施形態の第２変形例としてのファイル配布システムにおける配布構造を示す模式図である。
図１６に示す例においては、図１４と同様にマスタサーバ２からサーバ３に配布ファイル１と２を配布する場合を示すが、２階層目よりも３階層目のほうが枝の本数が多い。すなわち、図１６に示すように、上位のノードから出る枝数よりも、下位のノードから出る枝数を多くしてもよい。それ以外のマスタサーバ２及びサーバ３の機能及び構成については、上記の実施形態と同じである。
【００７６】
例えば、ファイル１の配布にかかる時間と、ファイル２の配布にかかる時間とをともにＴとすると、サーバ３−１，サーバ３−２がそれぞれ、ファイル１とファイル２とを下位サーバ３に配布する場合には、マスターサーバからサーバ３−１，サーバ３−２へのファイル１，２の配信に４Ｔ、サーバ３−１からサーバ３−３，３−４，３−５へのファイル１およびファイル２の配布に６Ｔを要する。また、この６Ｔの間に、サーバ３−２からサーバ３−６，３−７，３−８へのファイル１およびファイル２の配布も行なわれるため、全サーバ３−１〜３−８へのファイル１およびファイル２の配布に要する時間は、４Ｔ＋６Ｔ＝１０Ｔとなる。
【００７７】
しかし、図１６の配布構成を採用する場合には、マスターサーバからサーバ３−１，サーバ３−２へのファイル１，２の配信には同じく４Ｔがかかるものの、サーバ３−１からサーバ３−３，３−４，３−５へのファイル１の配布は３Ｔで済み、この同じ３Ｔの間に、サーバ３−２からサーバ３−６，３−７，３−８へのファイル２の配布も行なわれる。さらに、サーバ３−３とサーバ３−６の間のファイル交換、サーバ３−４とサーバ３−７の間のファイル交換、およびサーバ３−５とサーバ３−８の間のファイル交換が、Ｔの間に一度に行なわれる。このため、全サーバ３−１〜３−８へのファイル１およびファイル２の配布に要する時間は、４Ｔ＋３Ｔ+Ｔ＝８Ｔとなり、サーバ３−１，サーバ３−２がそれぞれ、ファイル１とファイル２とを下位サーバ３に配布する場合に比べ、配布時間を短縮できる。
【００７８】
このように、前述の実施形態および第一変形例の効果に加えて、第二変形例においては、枝の本数を増やすことにより、同じ配布時間で、より多くのサーバ３に配布ファイルを配布することが可能となる。これにより、配布時間を短縮することが可能となる。
（Ｅ）その他
なお、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００７９】
上記の実施形態では、ＣＰＵ負荷及び／又はネットワーク負荷、ならびにネットワーク構成に鑑みて、配布元とするサーバを選択したが、例えば、サーバを他のステータスによって選択してもよい。
また、上記の実施形態においては、配布ファイルを、更新ファイルや修正ファイルとして説明したが、例えば、配布ファイルが、マルチメディアファイルなど、他の形式のファイルでもよい。
【００８０】
また、上記の実施形態においては、配布構成として、ツリーのような階層構造を定義したが、ファイルのグループの部分集合を、ベン図などによって定義してもよい。
また、上記の実施形態においては、マスタサーバ２の配布部１３による制御に従い、各サーバ３に、マスタサーバ２または上位のサーバ３からファイルがプッシュされるが、そのファイルの分配の数及び／又はファイルサイズが、例えば、サーバの負荷（ＣＰＵ負荷、ネットワーク負荷など）に応じて異なってもよい。
【００８１】
また、上記の実施形態においては、マスタサーバや、サーバ、スイッチのＩＤをこれらのＩＰアドレスによって管理したが、これに限られず、ＭＡＣアドレスなど他の識別情報によって管理してもよい。
本技術においては、マスタサーバ２のＣＰＵ（Central Processing Unit）が、ファイル配布プログラムを実行することにより、サーバ割当部１１、配布構成作成部１２、配布部１３、状態監視データベース１４、及び配布ファイルデータベース１８として機能するようになっている。
【００８２】
また、サーバ３のＣＰＵ（Central Processing Unit）が、ファイル配布プログラムを実行することにより、ファイル配布制御部２１、ファイル管理部２２、及び配布ファイルデータベース２３として機能するようになっている。
なお、これらのサーバ割当部１１、配布構成作成部１２、配布部１３、状態監視データベース１４、配布ファイルデータベース１８、ファイル配布制御部２１、ファイル管理部２２、及び配布ファイルデータベース２３としての機能を実現するためのプログラム（ファイル配布プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置又は外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００８３】
サーバ割当部１１、配布構成作成部１２、配布部１３、状態監視データベース１４、配布ファイルデータベース１８、ファイル配布制御部２１、ファイル管理部２２、及び配布ファイルデータベース２３としての機能を実現する際には、内部記憶装置（サーバのＲＡＭやＲＯＭ）に格納されたファイル配布プログラムがコンピュータのマイクロプロセッサ（本実施形態ではサーバのＣＰＵ）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００８４】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、マスタサーバ２及びサーバ３がコンピュータとしての機能を有しているのである。
【符号の説明】
【００８５】
１      ファイル配布システム
１１    サーバ割当部（割当部）
１２    配布構成作成部（作成部）
１３    配布部（配布部）
１４    状態監視データベース（システム状態データベース）
１５    ＣＰＵ負荷データベース
１６    ネットワーク負荷データベース
１７    ネットワーク物理構成データベース
１８，２３  配布ファイルデータベース（配布ファイル管理情報）
１００  ファイル配布方法
２      マスタサーバ
２０    配布構成
２１    ファイル配布制御部
２２    ファイル管理部
３      サーバ（通信装置）
３１    配布元サーバＩＤリスト（上位ノード情報）
３２    全配布ファイルＩＤリスト（配布対象ファイル情報）
３３    自サーバ取得ファイルＩＤリスト（保持配布ファイル情報）
３４    配布先サーバＩＤリスト（下位ノード情報）
３５    配布先サーバ取得ファイルＩＤリスト（下位保持配布ファイル情報）
【図１】
0005776339.tif 000002
【図２】
0005776339.tif 000003
【図３】
0005776339.tif 000004
【図４】
0005776339.tif 000005
【図５】
0005776339.tif 000006
【図６】
0005776339.tif 000007
【図７】
0005776339.tif 000008
【図８】
0005776339.tif 000009
【図９】
0005776339.tif 000010
【図１０】
0005776339.tif 000011
【図１１】
0005776339.tif 000012
【図１２】
0005776339.tif 000013
【図１３】
0005776339.tif 000014
【図１４】
0005776339.tif 000015
【図１５】
0005776339.tif 000016
【図１６】
0005776339.tif 000017