説明

ピア・ツー・ピア型のネットワークに接続される装置および分散システム

【課題】分割されたサブデータを各ノードから読み出してオリジナルデータを復元できる確率を従来よりも改善する。
【解決手段】本発明は、例えば、ピア・ツー・ピア型のネットワークに接続された複数のノードにデータの分散格納または分散処理を実行させる分散システムにおいて実現される。本システムには、例えば、管理手段、抽出手段および依頼手段などを含む。管理手段は、複数のノードのうち、1以上のノードのオンライン率または通電率を管理する。また、抽出手段は、各ノードのオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数のノードを抽出する。さらに、依頼手段は、抽出されたノードへデータの分散格納または分散処理を依頼する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ピア・ツー・ピア(P2P)型のネットワークにおいて、データの分散格納や分散処理に関する。
【背景技術】
【0002】
任意のデータを複数の装置に分散して記憶させたり、任意の処理を複数の装置に分散して実行させたりすることは、処理効率の向上やリソースの有効活用の観点から望ましい。
【0003】
特許文献1によれば、プリンタ装置などの周辺機器には、印刷を実行せずに待機している待機時間がかなり存在することが着目されている。具体的には、複数の周辺装置のうち電源が入れられているにもかかわらず、その時点で稼働率の低い周辺装置へ特定の処理を実行させる方法が開示されている。
【0004】
特許文献2によれば、コンテンツマネージャというサーバを介して複数のユーザ端末がコンテンツを共有する方法が記載されている。具体的には、特定のコンテンツを保存しているユーザ端末のオンライ率(ネットワークへ接続する度合い)が低いときは、当該特定のコンテンツをコンテンツマネージャのキャッシュにも記憶する。これにより、所望のユーザ端末がネットワークに接続されていない場合、他のユーザ端末は、キャッシュから特定のコンテンツを取得できる。
【特許文献1】特開平09−259065号公報、段落0003、0015
【特許文献2】特開2003−296274号公報、段落0036、0037
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、P2Pネットワークに接続されているノード(コンピュータやハブ、ルータなど一台一台の装置)は、そのユーザの都合に応じて自由に電源がOFFにされたり、ネットワークから切断されたりすることが多々ある。そのため、このような複数の装置にデータを分散して記憶しておく場合、そのうちのいくつかがオフラインになると、所望のデータを取得できなくなってしまう。
【0006】
特許文献1や特許文献2によれば、そもそも1つのデータを複数の周辺機器に分散して格納することが考慮されていないので、この課題を解決できない。また、特許文献2によれば、大容量のキャッシュを備えたサーバが必要となるため好ましくない。
【0007】
また、P2Pネットワークに接続されている装置に任意の処理を分散して実行させる場合にも、同様の問題が生じる。すなわち、分散処理を依頼された各装置は、各ユーザの都合で自由に電源がOFFにされたり、ネットワークから切断されたりする。そのため、処理を依頼する時点では稼働率が低いために分散処理を依頼できたとしても、依頼された装置が分散処理中に電源がOFFにされてしまえば、分散処理が強制的に終了されてしまう。
【0008】
一方で、P2Pネットワークに接続されている装置のオンライン率や通電率(例:1日のうちで電源が投入されている時間)は、装置ごとに異なりうる。そのため、オンライン率や通電率が低い装置を避け、これらの率の高い装置にデータを分散格納したり、分散処理させたりすれば、上記の問題を緩和できると考えられる。
【0009】
そこで、本発明は、このような課題および他の課題のうち、少なくとも1つを解決することを目的とする。なお、他の課題については明細書の全体を通して理解できよう。
【課題を解決するための手段】
【0010】
本発明は、例えば、ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる分散システムにおいて実現される。本システムには、例えば、管理手段、抽出手段および依頼手段などを含む。管理手段は、複数の装置のうち、1以上の装置のオンライン率または通電率を管理する。また、抽出手段は、各装置のオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数の装置を抽出する。さらに、依頼手段は、抽出された装置へデータの分散格納または分散処理を依頼する。
【発明の効果】
【0011】
本発明によれば、オンライン率または通電率が相対的に低い装置を分散可能や分散処理の対象から除外することができる。これにより、分散処理を最後まで実行できる確率が従来よりも改善される。また、分割されたサブデータを各装置から読み出してオリジナルデータを復元できる確率が従来よりも改善される。
【発明を実施するための最良の形態】
【0012】
以下に本発明の一実施形態を示す。もちろん以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0013】
<実施形態1>
図1は、実施形態に係る分散システムを構成するノード(コンピュータやハブ、ルータなど一台一台の装置)の構成を示す図である。図1には、便宜上、6つのノード101〜106がネットワーク150に接続されているが、本発明は、ノードの数が2以上であれば適用できる。ネットワーク150は、LAN、WAN、MANまたはインターネットのいずれかであってもよいし、これらの組み合わせであってもよい。ただし、本実施形態に係るP2Pネットワークは、下位層のネットワーク上で実現される上位層のネットワーク(オーバーレイネットワーク)として実現される。ノード101〜106は、それぞれ一般的なPCであってもよいし、他の形態の情報処理装置であってもよい。なお、一般的に、P2Pネットワークにおいて、各ノードは、対等な関係にある。
【0014】
図1によれば、ノード104がデータ送信装置および処理依頼装置として機能している。ノード104は、複数のノードのうち、1以上のノードのオンライン率または通電率を管理する。ノード104は、オンライン率または通電率が相対的に高い特定数のノードを抽出して、抽出されたノードへデータの分散格納または分散処理を依頼する。
【0015】
ここで、オンライン率とは、ノードの総使用時間に対して、ネットワーク150に接続可能な時間が占める割合のことである。また、通電率は、単位期間(例:1日、1週間、1ヶ月、1年など)において電源がONにされていた時間が占める割合のことである。
【0016】
図1によれば、オリジナルデータを3つのサブデータに分割して3つのノードの記憶させる例が示されている。なお、図1によれば、3つのノードに分散処理を実行させる例が示されていると理解してもよい。
【0017】
まず、ノード104は、分散格納または分散処理に必要なノードの数が3であることを認識する。次に、ノード104は、3つのノードを抽出する。図1によれば、ノード101、103および106のオンライン率や通電率は、ノード102および105のそれよりも高い。よって、ノード104は、3つのノードとして、ノード101、103および106を選択して、分散格納または分散処理を依頼する。
【0018】
この際に、ノード104は、オリジナルのデータの識別情報(例:ファイル名)と、サブデータを格納しているノードの識別情報(例:ノードID)とを対応付けテーブルを作成して記憶しておいてもよい。ノード104または他のノードは、このテーブルを参照することで、所望のデータを復元するために必要となるサブデータを記憶しているノードを特定し、特定されたノードにサブデータを要求できるようになる。
【0019】
図2は、実施形態に係るノードの構成例を示すブロック図である。ここでは、便宜上、各ノードのハードウエア構成は同一であるとして説明するが、本発明に影響がない範囲で異なるハードウエア構成が採用されてもよい。
【0020】
CPU201は、コンピュータプログラムに基づいて、コンピュータの各ユニットを統括的に制御する制御ユニットである。ROM202は、ファームウエアなどの制御プログラムを記憶する不揮発性の記憶ユニットである。RAM203は、ワークエリアとして機能する揮発性の記憶ユニットである。ハードディスクドライブ(HDD)204は、大容量の記憶ユニットである。表示装置205は、ユーザに対して各種情報を表示するための表示ユニットである。操作部206は、ポインティングデバイスやキーボードなどの入力ユニットである。通信インターフェース207は、ネットワーク通信カードなどの通信ユニットである。
【0021】
図3は、実施形態に係るノードにおいて実現されるデータ格納や分散処理の依頼機能の一例を示すブロック図である。ここでは、主に、データの格納を依頼する機能について説明する。各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【0022】
ノード管理部300は、複数あるノードのうち、1以上のノードのオンライン率または通電率を管理するモジュールである。問い合せ部301は、P2Pネットワークに参加している各ノードに問い合せを送信するモジュールである。この問い合せは、オンライン率、通電率、または、これらを算出するために必要な情報を問い合わせるために送信される。これらの情報を総称してオンライン情報と呼ぶことにする。なお、問い合せ部301は、サブデータを送信する直前にP2Pネットワークに接続している他のノードに対してオンライン情報を問い合わせることが望ましい。例えば、ノードが、一般消費者のユーザ端末であれば、時々刻々とオンライン状態とオフライン状態とが切り替わる可能性があるからである。
【0023】
受信部302は、問い合わせに対する応答として、または自動的に各ノードから送信されてくるオンライン情報を受信するモジュールである。受信されたオンライン情報には、各ノードを識別するための識別情報が含まれている。記録部303は、受信されたオンライン情報をノード管理テーブル330に登録する。なお、オンライン情報に、オンライン率や通電率を算出するために必要な情報が含まれていた場合、記録部303は、この情報からオンライン率や通電率を算出する算出部として機能してもよい。あるいは、記録部306は、オンライン率や通電率を算出するために必要な情報をそのままノード管理テーブル330に登録してもよい。
【0024】
ノード抽出部310は、各ノードのオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数のノードを抽出するモジュールである。例えば、ノード抽出部310は、第1段階で、データを格納するために必要となるノードの数(必要ノード数)よりも十分に多い数のノードを抽出する。そして、ノード抽出部310は、第2段階で、そのうちさらに好適なノードを必要ノード数だけ抽出してもよい。
【0025】
ソート部311は、ノード管理テーブル330に登録されているノードを、オンライン率または通電率が相対的に高い順にソートする。なお、低い順にソートが実行されてもよい。選択部312は、オンライン率または通電率が相対的に高い順から、分散格納または分散処理に必要となる数のノードを選択する。なお、選択部312は、オンライン率または通電率が相対的に低い順から、不適当なノードを除外する処理を実行してもよい。いずれの場合も抽出結果は同じだからである。
【0026】
選択部312は、ノードを選択する際に、各ノードの現在の空き容量が、サブデータを格納するのに十分な容量であるかどうかを選択の基準とすることが望ましい。選択されたノードに、サブデータを格納できない場合、ノードの再選択が必要となってしまうからである。なお、選択部312は、選択時点で、オンライン率または通電率が相対的に高い順から、各ノードに現在の空き容量を問い合わせてもよい。また、各ノードから取得したオンライン情報に空き容量の情報が含まれている場合、この空き容量の情報を選択部312が参照してもよい。
【0027】
依頼部320は、抽出されたノードへデータの分散格納または分散処理を依頼するモジュールである。分割部321は、第1の数よりも少ない第2の数のサブデータが揃うとオリジナルのデータを復元できる分割手法を用いて、格納対象となるオリジナルデータを第1の数のサブデータに分割する。
【0028】
オリジナルデータを保全するためデータ分割手法は、どのようなものが採用されてもよい。例えば、(k、L、n)閾値分散法によれば、オリジナルデータ(例:18MB)は、1つあたり2MBとなる18個のサブデータにほぼ均等に分割される。この場合、18個のサブデータのうち、任意の11個のサブデータを取得できれば、オリジナルデータを復元できる。
【0029】
また、サブデータをどのように格納対象ノードに分散するかについては、オリジナルデータのデータIDからハッシュ値を算出し、そのハッシュ値をノードIDとする方法がある。この方法では、さらにそのノードIDのハッシュ値から次のノードIDを算出することを繰り返す。この方法の一例である分散ハッシュ法(DHT:distributed hash table)によれば、このようなノードIDをもとに、そのノードIDを有する装置を高速に見つけだす(ルックアップする)ことができる。
【0030】
依頼管理部322は、操作部206から、依頼要求やオリジナルデータの指定を受け付ける。依頼管理部322は、オリジナルデータを分割部321に渡し、その応答として、分割数を取得する。通常、分割数が、分散対象となるノードの数となる。依頼管理部322は、分割数(必要なノード数)として、ノード抽出部310に渡す。依頼送信部324は、ノード抽出部311から通知されたノードの情報にしたがって、抽出されたノードにサブデータを送信する。この際にまたは前もって、サブデータの格納依頼も送信されることになる。なお、サブデータとノードとの対応関係は、データ管理テーブル340に保持されてもよい。
【0031】
図4は、実施形態に係るノードにおいて実現されるデータ格納機能や分散処理機能の一例を示すブロック図である。ここでは、データの格納を依頼されるノードの機能を説明する。なお、各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【0032】
受信部401は、オンライン情報の問い合せなどを受信するモジュールである。送信部402は、他のノードからの問い合せを受信すると、オンライン情報を送信するモジュールである。オンライン判定部403は、ネットワークに対してオンライン状態になったか否かを判定するモジュールである。オンライン状態になると、オンライン判定部403は、オンライン情報を取得して他のノードに送信するよう送信部402へ指示する。このように、オンライン情報を通知するためのトリガーは2つあるが、少なくとも1つを備えていればよい。なお、本発明に係るオンライン情報の送信方法は、この2例にのみ限定されることはない。結果として、他のノードがオンライン情報を取得できるのであれば、どのような方法が採用されてもよい。
【0033】
サブデータ格納部404は、受信部401を通じて受け取ったサブデータをHDD204などに記憶するモジュールである。また、サブデータ格納部404は、他のノードからの読み出し要求に応じてサブデータをHDD204から読み出して、送信部402を通じて当該サブデータを送信する。
【0034】
分散処理部405は、受信部401を通じて他のノードからの分散処理の依頼を受信すると、割り当てられた分散処理を実行し、実行結果を、送信部402を通じて送信するモジュールである。なお、分散処理部405とサブデータ格納部404は、必ずしも両方が必要となるわけではない。ノードの用途に応じて、少なくとも一方のモジュールが含まれていればよい。
【0035】
計時部410は、オンライン情報のうち、時間に関する情報を生成するモジュールである。総使用時間計時部411は、ノードの総使用時間を計時するタイマーモジュールである。総使用時間は、例えば、所定時期(例:工場出荷時またはタイマーのリセット時など)から現在時刻までのトータルの時間である。総オンライン時間計時部412は、ノードの総オンライン時間を計時するタイマーモジュールである。総オンライン時間は、例えば、所定時期(例:工場出荷時またはタイマーのリセット時など)から現在時刻までのうち、実際にノードがオンライン状態になっていたトータルの時間である。総通電時間計時部413は、ノードの総通電時間を計時するタイマーモジュールである。総通電時間は、例えば、所定時期(例:工場出荷時またはタイマーのリセット時など)から現在時刻までで、実際にノードの電源がONになっていたトータルの時間である。
【0036】
図5は、実施形態に係るノードにおいて実現されるデータ取得機能の一例を示すブロック図である。なお、各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【0037】
ノード特定部501は、所望のオリジナルデータ(サブデータ)の取得要求が操作部206から入力されると、データ管理テーブル304を参照して、所望のデータを格納しているノードを特定するモジュールである。読み出し要求送信部502は、特定されたノードに対してサブデータを送信することを要求するための情報を送信するモジュールである。サブデータ受信部503は、特定されたノードから送信されてきたサブデータを受信するモジュールである。サブデータ復元部504は、受信されたサブデータからオリジナルデータを復元するモジュールである。
【0038】
図6は、実施形態に係るオンライン情報の記録方法の一例を示すフローチャートである。以下では、上述した各モジュールをCPU201が実現するものとして説明する。
【0039】
ステップS601において、CPU201は、通信IF207を通じて、各ノードからオンライン情報610を受信する。なお、CPU201は、通信IF207を通じて、オンライン情報の問い合せを各ノードに予め送信してもよい。あるいは、各ノードが、オンラインになったことに応じて、オンライン情報を送信してきてもよい。
【0040】
ステップS602において、CPU201は、受信したオンライン情報610をオンライン情報620としてHDD204に記憶する。受信したオンライン情報610と、記憶されるオンライン情報620とは同一であってもよいし、一部加工されたものであってもよい。上述したように、受信したオンライン情報610には、総使用時間や総オンライン時間が含まれていた場合、CPU201は、オンライン率を算出して、算出したオンライン率をオンライン情報620としてHDD204に記憶する。例えば、オンライン率と、対応するノードIDとがノード管理テーブル330に記憶されることになる。なお、総使用時間や総オンライン時間がそのままノード管理テーブル330に記憶されてもよい。
【0041】
図7は、実施形態に係るノードの抽出方法の一例を示すフローチャートである。以下では、上述した各モジュールをCPU201が実現するものとして説明する。
【0042】
ステップS701において、CPU201は、各ノードのオンライン率を参照し、オンライン率が高いものから各ノードが並ぶようソート処理を実行する。なお、ノード管理テーブル330に登録されているオンライン情報620が総使用時間と総オンライン時間であれば、この時点で、CPU201は、オンライン率を算出する。(オンライン率=総オンライン時間÷総使用時間)。なお、このようにソートされたオンライン情報と対応するノードIDは、ソート済みオンライン情報710として、RAM203に書き出される。
【0043】
ステップS702において、CPU201は、ソート済みオンライン情報710において、ソートされた順番にしたがって、ノードIDを選択する。ステップS703において、CPU201は、選択されたノードIDをリスト720に記録する。なお、この際に、CPU201は、選択されたノードIDに対応するノードが、サブデータを格納するために十分な空き容量を有しているか否かを判定してもよい。もし、当該ノードが十分な空き容量を有していなければ、CPU201は、当該ノードのノードIDをリスト720には記録しない。すなわち、当該ノードが除外されることになる。
【0044】
ステップS704において、記録されたノードの数が、オリジナルデータを分散格納するために必要となるノード数に達したか否かを判定する。達してしなければ、ステップS702に戻る。達していれば、本処理を終了する。
【0045】
図8は、実施形態に係るサブデータの送信方法の一例を示すフローチャートである。以下では、上述した各モジュールをCPU201が実現するものとして説明する。
【0046】
ステップS801において、CPU201は、オリジナルデータ810をHDD204から読み出して、複数のサブデータ820に分割する。ステップS802において、CPU201は、リスト720に登録されているノードIDを1つ読み出すとともに、サブデータ820も1つ読み出し、ノードIDに対応するノードへサブデータを送信する。ステップS803において、CPU201は、選択された全てのノードに対して、対応するサブデータ820を送信することが完了したか否かを判定する。完了していなければ、次のノードに次のサブデータを送信するために、ステップS801に戻る。完了していれば、本処理を終了する。
【0047】
図9は、実施形態にか係るオンライン情報の取得処理および送信処理の一例を示すフローチャートである。本処理は、例えば、オンライン状態となったことをCPU201が認識したとき、あるいは、他のノードからオンライン情報の問い合せを受信したときに実行される。以下では、上述した各モジュールをCPU201が実現するものとして説明する。
【0048】
ステップS901において、CPU201は、ROM202に記憶されている初期時刻と、タイマーから取得した現在時刻との差を算出する。この差が、総使用時間となる。初期時刻の設定方法は、種々考えられる。例えば、工場出荷時に、そのときの時刻をROM202に書き込んだり、ユーザの下で最初に電源が投入された時刻をROM202またはHDD204に書き込んだりする方法がある。
【0049】
ステップS902において、CPU201は、ROM202またはHDD204から総オンライン時間を読み出す。なお、総オンライン時間は、ノードがオンライン状態になった時刻と、オフライン状態になった時刻との差の累積時間となる。すなわち、CPU201は、オンライン状態になったときにタイマーの計時を開始し、オフライン状態になるとタイマーの計時を停止させる。そして、CPU201は、タイマーにより計時された時間を、ROM202またはHDD204に記憶されているこれまでの総オンライン時間に加算する。
【0050】
ステップS903において、CPU201は、総使用時間910、総オンライン時間920およびノードID930からオンライン情報を作成し、他のノードに送信する。ノードIDは、ノード固有の識別情報であり、IPアドレスやMACアドレスおよびその他の固有情報である。
【0051】
図10は、実施形態に係るサブデータの格納方法の一例を示すフローチャートである。本フローチャートは、データ格納の依頼を受信すると開始されるものとする。以下では、上述した各モジュールをCPU201が実現するものとして説明する。
【0052】
ステップS1001において、CPU201は、通信IF207を通じて格納対象のサブデータ1010を受信する。ステップS1002において、CPU201は、受信したサブデータ1010を格納データ1020としてHDD204に格納する。ここで、受信したサブデータ1010と格納データ1020は、同一であってもよいし、一部内容を追加または変更されてもよい。なお、サブデータが要求されたときは、CPU201が、格納データ1020を元のサブデータ1010に復元してから送信することはいうまでもない。
【0053】
図11は、実施形態に係る空き容量情報の取得処理および送信処理の一例を示すフローチャートである。本処理は、他のノードから空き容量の確認依頼1010を受信したときに実行されるものとする。なお、本処理は、オンライン情報の送信処理(図9)と統合されてもよい。
【0054】
ステップS1101において、CPU201は、他のノードから空き容量の確認依頼1110を受信する。ステップS1102において、CPU201は、HDD204の格納領域における空き容量データ1120を取得すべく、ファイルシステムに空き容量を計算させる。ステップS1103において、CPU201は、空き容量のデータと自己のノードIDとを含む空き容量データ1130を作成して、確認依頼を送信してきた他のノードに送信する。
【0055】
本実施形態によれば、オンライン率または通電率が相対的に低いノードを分散可能や分散処理の対象から除外することができる。すなわち、オンライン率または通電率が相対的に高いノードへ分散可能や分散処理を依頼することができる。これにより、分散処理を最後まで実行できる確率が従来よりも改善される。あるいは、分割されたサブデータを各ノードから読み出してオリジナルデータを復元できる確率が従来よりも改善される。
【0056】
また、ネットワークに対してオンライン状態になったことをトリガーとして、オンライン情報を送信することで、データの格納を依頼しようとするノードは、オンラインとなっているノードを簡単に識別できる。
【0057】
あるいは、データの格納を依頼しようとするノードが、各ノードにオンライン情報を問い合わせることで、オンライン情報を取得してもよい。この場合は、問い合せを受信したノードだけがオンライン情報を送信してくることになるので、オンライン情報のリアルタイム性や信頼性が増すことになろう。
【0058】
また、オンライン率を算出するために必要となる情報の1つである総使用時間や総オンライン時間を計時する計時部を設けることで、各ノードのオンライン率を正確に認識できるようになる。また、通電率を算出するために必要となる総使用時間や総通電時間を計時する計時部を設けることで、各ノードの通電率を正確に認識できるようになる。
【0059】
また、データの分割方法として、オリジナルデータを第1の数のサブデータに分割し、第1の数よりも少ない第2の数のサブデータが揃えるだけでオリジナルのデータを復元できる分割方法を採用してもよい。オンライン率は、確率の一種である。そのため、オリジナルデータを復元する際に、対応する第1の数のノードが全てオンラインとなっているわけではない。よって、分割方法を工夫することで、一部のノードが、運悪く、オフラインであっても、オンラインとなっている残りのノードからサブデータを回収してオリジナルデータを復元できるようになる。
【0060】
もちろん、複数あるノードのうち、オンライン率または通電率の高い順にソートしてノードを選択すれば、よりオリジナルデータを復元できる確率が高まることはいうまでもない。
【0061】
なお、分散処理においてもオンライン率を使用して、分散処理を実行するノードを抽出してもよいが、可能であれば、通電率を使用してノードを抽出する方が望ましい。一般に、分散処理については、分散処理の実行中にオフラインとなるよりも、実行中に電源がOFFにされたほうが、よりダメージが大きいからである。すなわち、オフラインとなっても分散処理を継続でき、その後、オンラインに復帰してから処理結果を取得できるからである。しかしながら、電源がOFFにされてしまえば、他のノードに分散処理を実行するよう依頼しなおさせねばならない。さらに、電源がOFFにされたことを検出するモジュールを依頼ノードに実装する必要もある。
【0062】
そのため、分散処理を依頼するときは、ノード抽出部が、通電率に応じてノードを抽出することが望ましい。
【0063】
<実施形態2>
実施形態1では、分散処理や分散格納を依頼するノードと、それを依頼されるノードとが直接的に情報を送受信する分散システムを説明した。ただし、これらのノード間に他のノードが介在してもよい。そこで、実施形態2では、中継ノードが介在する分散システムについて説明する。
【0064】
図12は、実施形態に係る中継ノード1200と依頼ノード1210とにそれぞれ実装されるモジュールの一例を示す図である。なお、既に説明した個所には、同一の参照符号が付されている。
【0065】
各ノードの送信部402は、オンライン状態となるかまたは問い合せを受信すると、オンライン情報を中継ノード1200のノード管理部300に送信する。ノード管理部300は、取得したオンライン情報をノード管理テーブル330に登録する。
【0066】
一方、データの分散格納を希望するノード(依頼ノード)1210の依頼部320は、データを分散格納することになる複数のノードについての問い合せを中継ノード1200に送信する。中継ノード1200のノード抽出部310はデータを分散格納するために必要となるノードを上述した抽出方法により抽出する。さらに、ノード抽出部310は、抽出されたノードのノードIDを依頼ノード1210に返信する。依頼ノード1210は、受信したノードIDに基づいて、対応するノードへサブデータを送信する。
【0067】
このように、中継ノード1200を設けることで、ノードを集中管理することが可能となる。この場合、ノード管理テーブル330は中継ノード1200だけが保有すればよいので、ネットワーク全体でみれば、メモリに関するリソースを削減できる利点がある。また、中継ノード1200以外のノードについては、ノード管理部300やノード抽出部310が不要となるため、構成の簡略化を達成できる。
【0068】
<実施形態3>
図13は、実施形態に係る中継ノード1200と依頼ノード1210とにそれぞれ実装されるモジュールの一例を示す図である。なお、既に説明した個所には、同一の参照符号が付されている。
【0069】
実施形態3は、実施形態2をさらに改良したものである。実施形態3では、依頼部320の一部(依頼処理部1330)の機能をさらに中継ノード1300に実装している。依頼ノード1310には、依頼部320のうち、操作部206からの依頼要求とオリジナルデータの指定を受け付けるユーザインタフェースと、依頼要求とオリジナルデータの指定を中継ノード1300の依頼処理部1330へ転送する転送機能とが実装される。すなわち、依頼部1340には、ユーザインタフェースを実現する機能と転送機能とが実装されている。これによって、サブデータや格納依頼は、中継ノード1300から各対象ノードへと送信されることになる。
【0070】
実施形態3によれば、さらに、依頼ノード1310の構成を簡易化することが可能となる。なお、実施形態1や2で説明した効果も、実施形態3で奏されることはいうまでもない。
【0071】
<実施形態4>
上述の実施形態では、オフライン率や通電率に基づいてノードを抽出していた。しかしながら、最近のPC等は電源がONにされていても省電力モードに移行している場合がある。一般に、省電力モードでは、CPU201がデータの格納や分散処理を実行できない。
【0072】
よって、オフライン率や通電率に代えて、あるいは、オフライン率や通電率とともに省電力モードでの動作率をノード抽出部が考慮してもよい。この場合、ノード抽出部は、省電力モードでの動作率を、省電力モードでの総動作時間を総使用時間で除算することを算出する。そして、ノード抽出部は、省電力モードでの動作率の高い順から、ノードを選択して行く。
【0073】
このように、省電力モードでの動作率を考慮すれば、分散格納や分散処理を実行できる確率がさらに高まることになろう。
【0074】
<他の実施形態>
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【0075】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【0076】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0077】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0078】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。
【0079】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【0080】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【0081】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【0082】
【図1】実施形態に係る分散システムを構成するノードの構成を示す図である。
【図2】実施形態に係るノードの構成例を示すブロック図である。
【図3】実施形態に係るノードにおいて実現されるデータ格納や分散処理の依頼機能の一例を示すブロック図である。
【図4】実施形態に係るノードにおいて実現されるデータ格納機能や分散処理機能の一例を示すブロック図である。
【図5】実施形態に係るノードにおいて実現されるデータ取得機能の一例を示すブロック図である。
【図6】実施形態に係るオンライン情報の記録方法の一例を示すフローチャートである。
【図7】実施形態に係るノードの抽出方法の一例を示すフローチャートである。
【図8】実施形態に係るサブデータの送信方法の一例を示すフローチャートである。
【図9】実施形態にか係るオンライン情報の取得処理および送信処理の一例を示すフローチャートである。
【図10】実施形態に係るサブデータの格納方法の一例を示すフローチャートである。
【図11】実施形態に係る空き容量情報の取得処理および送信処理の一例を示すフローチャートである。
【図12】実施形態に係る中継ノードと依頼ノードとにそれぞれ実装されるモジュールの一例を示す図である。
【図13】実施形態に係る中継ノードと依頼ノードとにそれぞれ実装されるモジュールの一例を示す図である。

【特許請求の範囲】
【請求項1】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる分散システムであって、
複数の前記装置のうち、1以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
を含むことを特徴とする分散システム。
【請求項2】
前記装置は、
前記ネットワークに対してオンライン状態になったか否かを判定する手段と、
前記ネットワークに対してオンライン状態になると、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも1つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする請求項1に記載の分散システム。
【請求項3】
前記装置は、
前記管理手段から問い合せを受信する受信手段と、
前記問い合せに応じて、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも1つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする請求項1に記載の分散システム。
【請求項4】
前記装置は、
前記オンライン率を算出するために必要となる情報の1つとして、該装置の総使用時間を計時する第1の計時手段と、
前記オンライン率を算出するために必要となる情報の1つとして、該装置の総オンライン時間を計時する第2の計時手段と
を含むことを特徴とする請求項3に記載の分散システム。
【請求項5】
前記装置は、
前記通電率を算出するために必要となる情報の1つとして、該装置の総使用時間を計時する第1の計時手段と、
前記通電率を算出するために必要となる情報の1つとして、該装置の総通電時間を計時する第3の計時手段と
を含むことを特徴とする請求項3に記載の分散システム。
【請求項6】
前記抽出手段は、
第1の数よりも少ない第2の数のサブデータが揃うとオリジナルのデータを復元できる分割手法を用いて、格納対象となるオリジナルデータを該第1の数のサブデータに分割する分割手段と、
複数の前記装置を、オンライン率または通電率の高い順にソートするソート手段と、
オンライン率または通電率が相対的に高い順番にしたがって、前記第1の数の装置を選択する選択手段と
を含むことを特徴とする請求項1ないし5のいずれかに記載の分散システム。
【請求項7】
ピア・ツー・ピア型のネットワークに接続される装置であって、
複数の前記装置のうち、1以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、相対的にオンライン率または通電率の高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
を含むことを特徴とする装置。
【請求項8】
ピア・ツー・ピア型のネットワークに接続される装置であって、
前記ネットワークに対してオンライン状態になったか否かを判定する手段と、
前記ネットワークに対してオンライン状態になると、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも1つと、装置を識別するための識別情報とを管理手段へ送信する送信手段と
を含むことを特徴とする装置。
【請求項9】
ピア・ツー・ピア型のネットワークに接続される装置であって、
複数の装置のうち、1以上の装置のオンライン率または通電率を管理する管理手段からの問い合せを受信する受信手段と、
前記問い合せに応じて、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも1つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする装置。
【請求項10】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる方法であって、
複数の前記装置のうち、1以上の装置のオンライン率または通電率を管理する管理工程と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出工程と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼工程と
を含むことを特徴とする方法。
【請求項11】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させるコンピュータプログラムであって、
複数の前記装置のうち、1以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
してコンピュータを機能させることを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate