しかしながら、特許文献1に記載の技術は、ユーザがアクセスしようとしている特定共有データを表示する処理を第1のコンピュータが行うタイミングで、この第1のコンピュータが、最新の特定共有データを保持している第2のコンピュータと通信可能な状態となっている必要があり、第1のコンピュータが特定共有データを表示する処理を行う際に、例えば通信回線の障害等により第1のコンピュータが第2コンピュータからの特定共有データのダウンロードを行えない状態であった場合には、ユーザが最新の共有データにアクセスすることができないという問題がある。
一方、特許文献2,3に記載の技術は、各コンピュータに最新の共有データが各々保持されるので、ユーザが共有データにアクセスする際に、必ずしも他のコンピュータと通信可能な状態になっている必要はない。しかし、この方式では、データを共有しているコンピュータのグループ(P2Pシステムではピアグループと称する)内の特定のコンピュータで共有データが更新された場合に、グループ内の特定のコンピュータ以外の各コンピュータが保持している共有データも更新後のデータへ書替えることで、共有データの同期をとる処理を行う必要がある。また、同期をとる処理を行うタイミングでグループ内の一部のコンピュータとの通信が途絶している可能性があることを考慮すると、共有データの同期をとる処理は定期的に行う必要がある。
これに対して特許文献2に記載の技術は、共有データ自体を周期的に送信するので、共有データの同期をとるためにシステム内のトラフィックが増大するという問題があり、特許文献3に記載の技術も共有データ自体を送受することで共有データの同期をとるので、この処理を定期的に行うことに伴ってシステム内のトラフィックが増大する。また、特許文献2,3に記載の技術では、共有データを受信する側のコンピュータにおいて、共有データ自体を受信する処理が周期的に行われることになるので、受信側のコンピュータの負荷が増大するという問題もある。更に、特許文献3に記載の技術では、更新された共有データが、当該共有データのオリジナルを保持するコンピュータを経由して再配信されるので、共有データのオリジナルを保持するコンピュータの負荷が増大する、という問題も有している。
本発明は上記事実を考慮して成されたもので、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することが可能な情報処理装置、情報処理システム、データ同期方法及びデータ同期プログラムを得ることが目的である。
請求項1記載の発明に係る情報処理装置は、自装置と同一の第1グループに属する他の複数台の情報処理装置と通信回線を介して接続された情報処理装置であって、前記第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段と、前記第1グループに属する特定の情報処理装置から、該特定の情報処理装置が保持している前記共有データが更新されたことを通知する通知情報を受信した場合に、ランダムに決定した待機時間が経過した後に、前記共有データの取得要求を前記特定の情報処理装置へ送信する取得要求手段と、前記取得要求手段が送信した取得要求に基づいて前記特定の情報処理装置から送信された前記共有データを受信し、受信した前記共有データを前記記憶手段に記憶させる受信手段と、を含んで構成されている。
請求項1記載の発明に係る情報処理装置は、自装置と同一の第1グループに属する他の複数台の情報処理装置と通信回線を介して接続されており、第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段を備えている。ここで、請求項1記載の発明では、第1グループに属する特定の情報処理装置から、該特定の情報処理装置が保持している共有データが更新されたことを通知する通知情報を受信した場合に、取得要求手段により、ランダムに決定した待機時間が経過した後に、共有データの取得要求が特定の情報処理装置へ送信される。そして受信手段は、取得要求手段が送信した取得要求に基づいて特定の情報処理装置から送信された共有データを受信し、受信した共有データを記憶手段に記憶させる。これにより、請求項1記載の発明に係る情報処理装置の記憶手段に記憶されている共有データの同期をとる処理が完了することになる。
このように、請求項1記載の発明では、特定の情報処理装置が保持している共有データが更新されたことを通知する通知情報を受信した場合に、ランダムに決定した待機時間が経過した後に、共有データの取得要求を特定の情報処理装置へ送信するので、共有データが更新された特定の情報処理装置が、第1グループに属する複数の情報処理装置へ通知情報を送信したとしても、特定の情報処理装置は、通知情報を送信した複数の情報処理装置から互いにずれたタイミングで通知情報を受信することになり、トラフィックや特定の情報処理装置に加わる負荷が一時期に集中して過大となることを防止することができる。従って、請求項1記載の発明によれば、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することができる。
なお、特定の情報処理装置が通知情報を送信した際に、特定の情報処理装置と他の情報処理装置の一部との通信が途絶している可能性があることを考慮すると、請求項1記載の発明においても、特定の情報処理装置からは、通知情報が任意の時間間隔で繰り返し送信されることが望ましく、この通知情報は、前述のように、該通知情報を受信した個々の情報処理装置が、該個々の情報処理装置が保持している共有データが更新前のデータか否かを判断可能な情報であることが望ましい。この場合、取得要求手段は、例えば請求項2にも記載したように、記憶手段に共有データが記憶されていない場合(例えば請求項1記載の発明に係る情報処理装置が第1グループへ新たに参加したために共有データを受信していない状態である等の場合)、及び、受信した通知情報に基づき、記憶手段に記憶されている共有データが更新前のデータであると判断した場合に、特定の情報処理装置へ取得要求を送信し、記憶手段に記憶されている共有データが更新後のデータであると判断した場合は取得要求を送信しないように構成することが好ましい。これにより、請求項1記載の発明に係る情報処理装置が、通知情報を受信する毎に共有データの取得要求を送信する必要がなくなるので、トラフィックの増大を抑制することができる。
また、請求項1記載の発明に係る情報処理装置が、第1グループを包含する第2グループにも属していると共に、第1グループに属さず第2グループに属する他の複数の情報処理装置とも通信回線を介して接続されている場合も考えられるが、この場合、例えば請求項3に記載したように、受信手段が第2グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを特定の情報処理装置から受信して記憶手段に記憶させた後に、共有データが更新されたことを通知する通知情報を、第1グループに属さず第2グループに属する他の全ての情報処理装置へ送信する第2通知手段と、第2通知手段が通知情報を送信した情報処理装置から共有データの取得要求を受信する毎に、記憶手段に記憶されている共有データを、取得要求送信元の情報処理装置へ送信する第2送信手段と、を更に設けることが好ましい。
例えば、特定グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データが、特定グループに属する特定の情報処理装置で更新された場合、該特定グループに多数の情報処理装置が属していたとすると、特定グループに属する特定の情報処理装置から通知情報を受信した各情報処理装置が、各々請求項1に記載したように、互いに異なる待機時間だけ待機した後に取得要求を送信したとしても、特定の情報処理装置に加わる負荷が一時期に集中して過大となる可能性がある。
これに対して請求項3記載の発明では、上記の特定グループに相当する第2グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データが、第2グループ(及び第2グループに包含される第1グループ)に属する特定の情報処理装置で更新された場合に、特定の情報処理装置が第1グループに属する情報処理装置(この情報処理装置には請求項3記載の情報処理装置も含まれる)に対してのみ通知情報の送信、取得要求に基づく共有データの送信(第1グループに属する各情報処理装置が保持する共有データを同期させるための処理)を行えば、請求項3記載の発明に係る情報処理装置によって、第1グループに属さず第2グループに属する情報処理装置に対して通知情報の送信、取得要求に基づく共有データの送信(第1グループに属さず第2グループに属する各情報処理装置が保持する共有データを同期させるための処理)が行われることになる。従って、請求項3記載の発明によれば、多数の情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データが更新された場合に、当該共有データの更新が行われた情報処理装置に多大な負荷が加わることを回避することができる。
なお、請求項3記載の発明において、第2通知手段は、第1グループに属する他の情報処理装置から通知情報を受信することで更新が通知された共有データについて、第1グループに属さず第2グループに属する他の情報処理装置へ常に通知情報を送信するように構成してもよいし、個々の共有データに、何れのグループ内で共有するデータかを表す属性情報を各々付加しておき、第1グループに属する他の情報処理装置から通知情報を受信することで更新が通知された共有データに、第2グループ内で共有するデータであることを表す属性情報が付加されていた場合にのみ、第1グループに属さず第2グループに属する他の情報処理装置へ通知情報を送信するように構成してもよいが、これに代えて、例えば請求項4に記載したように、特定の情報処理装置で更新された共有データが、第2グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべきデータであった場合、特定の情報処理装置から送信される通知情報には、共有データが第2グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべきデータであることを表す識別情報が付加され、第2通知手段は、特定の情報処理装置から受信した通知情報に前記識別情報が付加されていた場合にのみ、第1グループに属さず第2グループに属する他の全ての情報処理装置へ通知情報を送信するように構成してもよい。
請求項5記載の発明に係る情報処理システムは、同一の第1グループに属する複数台の情報処理装置が通信回線を介して接続されて成る情報処理システムであって、前記複数台の情報処理装置の各々が、前記第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段と、前記記憶手段に記憶されている前記共有データが更新された場合に、前記共有データが更新されたことを通知する通知情報を、前記第1グループに属する他の全ての情報処理装置へ送信する第1通知手段と、前記第1通知手段が通知情報を送信した情報処理装置から前記共有データの取得要求を受信する毎に、前記記憶手段に記憶されている前記共有データを、前記取得要求送信元の情報処理装置へ送信する第1送信手段と、前記第1グループに属する特定の情報処理装置から、該特定の情報処理装置が保持している前記共有データが更新されたことを通知する通知情報を受信した場合に、ランダムに決定した待機時間が経過した後に、前記共有データの取得要求を前記特定の情報処理装置へ送信する取得要求手段と、前記取得要求手段が送信した取得要求に基づいて前記特定の情報処理装置から送信された前記共有データを受信し、受信した前記共有データを前記記憶手段に記憶させる受信手段と、を各々備えていることを特徴としている。
請求項5記載の発明に係る情報処理システムは、第1グループに属する複数台の情報処理装置の各々が、上記の記憶手段、第1通知手段と、第1送信手段、取得要求手段及び受信手段を各々備えているので、複数台の情報処理装置のうちの何れの情報処理装置で共有データが更新された場合にも、請求項1記載の発明と同様に、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することができる。
請求項6記載の発明に係るデータ同期方法は、同一の第1グループに属する複数台の情報処理装置が通信回線を介して接続されて成り、前記複数台の情報処理装置が、前記第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段を各々備えた情報処理システムにおいて、特定の情報処理装置の前記記憶手段に記憶されている前記共有データが更新された場合に、前記特定の情報処理装置は、前記共有データが更新されたことを通知する通知情報を、前記第1グループに属する他の全ての情報処理装置へ送信し、前記特定の情報処理装置から前記通知情報を受信した個々の情報処理装置は、ランダムに決定した待機時間が経過した後に、前記共有データの取得要求を前記特定の情報処理装置へ送信し、前記特定の情報処理装置は、前記通知情報を送信した情報処理装置から前記共有データの取得要求を受信する毎に、前記特定の情報処理装置の前記記憶手段に記憶されている前記共有データを、前記取得要求送信元の情報処理装置へ送信し、前記取得要求を送信した個々の情報処理装置は、前記取得要求に基づいて前記特定の情報処理装置から送信された前記共有データを受信し、受信した前記共有データを前記記憶手段に記憶させるので、請求項1記載の発明と同様に、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することができる。
請求項7記載の発明に係るデータ同期プログラムは、自装置と同一の第1グループに属する他の複数台の情報処理装置と通信回線を介して接続され、前記第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段を備えたコンピュータを、前記記憶手段に記憶されている前記共有データが更新された場合に、前記共有データが更新されたことを通知する通知情報を、前記第1グループに属する他の全ての情報処理装置へ送信する第1通知手段、前記第1通知手段が通知情報を送信した情報処理装置から前記共有データの取得要求を受信する毎に、前記記憶手段に記憶されている前記共有データを、前記取得要求送信元の情報処理装置へ送信する第1送信手段、前記第1グループに属する特定の情報処理装置から、該特定の情報処理装置が保持している前記共有データが更新されたことを通知する通知情報を受信した場合に、ランダムに決定した待機時間、或いは前記第1グループに属する個々の情報装置装置毎に相違するように予め設定された待機時間が経過した後に、前記共有データの取得要求を前記特定の情報処理装置へ送信する取得要求手段、及び、前記取得要求手段が送信した取得要求に基づいて前記特定の情報処理装置から送信された前記共有データを受信し、受信した前記共有データを前記記憶手段に記憶させる受信手段として機能させる。
請求項7記載の発明に係るデータ同期プログラムは、自装置と同一の第1グループに属する他の複数台の情報処理装置と通信回線を介して接続され、第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを記憶可能な記憶手段を備えたコンピュータを、上記の第1通知手段、第1送信手段、取得要求手段及び受信手段として機能させるためのプログラムであるので、上記のコンピュータが請求項7記載の発明に係るデータ同期プログラムを実行することにより、コンピュータが請求項1に記載の情報処理装置として機能することになり、請求項1記載の発明と同様に、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することができる。
本発明は、第1グループに属する各情報処理装置が各々保持すべきでかつ互いに同期させるべき共有データを保持している特定の情報処理装置から、前記共有データが更新されたことを通知する通知情報を受信した場合に、ランダムに決定した待機時間が経過した後に、前記共有データの取得要求を特定の情報処理装置へ送信し、送信した取得要求に基づいて特定の情報処理装置から送信された共有データを受信し、受信した前記共有データを記憶手段に記憶させるようにしたので、同一のグループに属する各情報処理装置が各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。
〔第1実施形態〕
以下では、まず本発明に好適なP2Pネットワーク(P2Pシステム)について説明する。図1に示すように、P2Pネットワーク10は、仮想的には各ピア12A〜12Gが相互に接続された構成であり、実際には、例えばピア12A〜12Cがファイアウォール14によるアクセス制限下にあるピアである場合もあれば、ピア12C〜12Eがインターネットに接続されたピアである場合もあれば、ピア12E〜12GがNAT(Network Address Translation)によってアドレス変換されるピアである場合もある。
ここで、ピアとは、例えばパーソナルコンピュータ等のコンピュータ、PDA(Personal Digital Assistance)、携帯電話、プリンタ、コピー機、これらの機能を複数備えた複合機等のように、他の電子機器と通信を行う機能を備えた各種電子機器の何れであってもよく、個々のピアは、対応する電子機器のハードウェア又は対応する電子機器の機能を実現するソフトウェアを指す。また、各ピアは、同種の機器であるか異種の機器であるかに拘らずP2Pネットワークに参加することができる。また、各ピア同士の接続方法は様々であり、例えばIPv4(Internet Protocol version 4)やIPv6(Internet Protocol version 6)の機能を用いるTCP(Transmission Control Protocol)接続や、HTTP(HyperText Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)を用ることができる。
P2Pネットワークの形態としては、図2に示すように、各ピア14A〜14Kの全てが対等な関係にあるピュアP2Pと、図3に示すように、サーバ14Sを設け、一部のサービスの提供をサーバ14Sに委ね、その他のサービスの提供については各ピア14A〜14Hが対等な関係において実現されるハイブリッドP2Pの形態があり、本発明は何れの形態にも適用可能である。
また、P2Pネットワークに参加する各ピアにログオンするユーザ又はピアは、例として図4に示すように、目的に応じたグループを構成することができる。図4では、ピア12A〜12G全てがグループ1に属し、更にピア12A、12C、12E、12Fがグループ2に属し、ピア12B、12E、12F、12Gがグループ3に属している。なお、各ユーザ又はピアは、単一のグループに属してもよいし、複数のグループに属していてもよい。また、ユーザ又はピアは必ずしもグループに属する必要はない。
図5にはP2Pネットワーク10に参加する個々のピアの基本構成を示す。図5に示すように、ピア12は、P2P基盤構成部16、P2P基盤管理データ記憶部18、アプリケーション実行部20及びアプリケーションメモリ22を含んで構成されており、P2P基盤構成部16は、メッセージ制御部24、データ管理部26、送信部28及び受信部30を含んで構成されている。送信部28は、メッセージ制御部24から受け取ったメッセージをネットワーク32へ向けて送信する。受信部30は、P2Pネットワーク10内で送受信されるデータのうち、自ピアにとって必要なデータを受信する。受信部30は常に受信待機状態となっており、P2Pネットワーク10の他ピアからの各種要求やデータを受信し、メッセージ制御部24に受け渡す。なお、受信部30は送信部28とは独立かつ並列に動作する。
図6にはメッセージ制御部24の概略構成を示す。メッセージ制御部24は、図6に示すように、サービス実行部34及びメッセージディスパッチ部36を含んで構成されている。サービス実行部34は、ピア探索サービス部38、告知情報公開サービス部40、告知情報取得サービス部42、グループ管理サービス部44、ユーザ管理サービス部46、及びピア管理サービス部48を含んで構成されており、各サービス部は相互に情報を送受しながら各サービスを実行する。ピア探索サービス部38は、P2Pネットワークに参加しているピアを探索する機能及び自ピアが必要とするサービス(機能)を提供可能なピアを探索する機能を有する。なお、探索の範囲は、必要とするサービスの名称や属性、ホップ数の閾値等を指定することにより制御することができる。ここで、ホップ数とは、メッセージを送信する際に経由するピアの数である。
告知情報公開サービス部40は、自ピアが提供可能なサービス等の情報を告知情報としてP2Pネットワーク上に公開する機能を有する。ここで、提供可能なサービスには、例えばアプリケーション実行部20により実行されるアプリケーションの他、後述するグループ管理サービスやユーザ管理サービス等も含まれる。なお、告知情報の公開は、例えば他ピアから問い合わせがあった場合や自ピアの起動時に実行してもよいし、定期的に実行するようにしてもよい。このように各ピアの告知情報公開サービス部40によって告知情報がP2Pネットワーク上に公開されることにより、P2Pネットワークに参加している各ピアは、P2Pネットワーク上でどのようなサービスを利用できるかを把握することができる。
告知情報取得サービス部42は、ピア探索サービス部38によって探索されたピアから送信された告知情報又は他ピアから自発的に送信された告知情報を取得し、データ管理部26へ受け渡す。データ管理部26では、取得した告知情報をピア情報としてP2P基盤管理データ記憶部18に記憶させる。これにより、個々のピアは、P2Pネットワークに参加している他ピアがどのようなサービスを提供しているのかを把握することができる。また、グループ管理サービス部44は、同じ目的を有するピア同士で構成されたグループへの参加や脱退、新たなグループの生成等をグループ情報に基づいて管理する機能を有する。グループ情報は、例えば少なくともグループIDとユーザIDとの対応関係を表す情報であり、P2P基盤管理データ記憶部18に記憶される。このグループ情報を参照することにより、どのグループにどのユーザが属しているかを把握することができる。
ユーザ管理サービス部46は、ユーザ情報を管理する機能を有する。ユーザ情報は、例えばピアIDとそのピアにログオンしているユーザIDとの対応関係を表すログオン情報や、ユーザの名前、メールアドレス等のユーザ自身に関する情報、そのユーザが属するグループのグループID等の情報を含み、P2P基盤管理データ記憶部18に記憶される。また、ピア管理サービス部48は、P2Pネットワークに参加しているピアのピア情報を管理する機能を有する。また、メッセージディスパッチ部36は、アプリケーション実行部20からのメッセージや他ピアとの間で送受信されるメッセージを解析し、サービス実行部34のうち解析したメッセージに関する処理を行うべきサービス部へ制御を渡す。
一方、P2P基盤管理データ記憶部18は、経路情報18A、グループ情報18B、隣接情報18C、ピア情報18D、及びユーザ情報18Eを記憶する。経路情報18Aは、P2Pネットワークにおける経路の情報、例えばスパニングツリー(ループのない木構造となるメッセージの転送経路)に関する情報を含む。グループ情報18Bは、前述したように例えば少なくともグループIDとユーザIDとの対応関係を表す情報である。隣接情報18Cは、自ピアに隣接するピアに関する情報、例えばピアID等の情報を含む。ここで、隣接するピアとは、例えば自ピアから送信したパケットに対する応答時間が予め定めた所定時間内のピアとすることができる。隣接情報は、例えば他ピアと通信する課程において得られる応答時間に基づいて生成することができるが、オペレータの操作等により手動で設定するようにしてもよい。ピア情報18Dは、ピア探索サービス部38によって探索されたピアに関する情報、例えばピアID等の情報や、告知情報取得サービス部42によって取得したP2Pネットワーク上の各ピアが提供しているサービスに関する情報等を含む。ここで、ピアIDには、例えばIPアドレスやURI(Uniform Resource Identifier)等を用いることができる。ユーザ情報18Eは、前述したようにユーザのログオン情報やユーザ自身に関する情報等を含む。
アプリケーション実行部20は、各種アプリケーションを実行するものであり、メッセージ制御部24を介して他ピアとメッセージの送受信を行う。また、アプリケーションメモリ22は、アプリケーション実行部20の実行に関連する各種の情報を記憶するためのメモリである。
次に、アプリケーション実行の具体例として、或るピアグループ(便宜的にピアグループAと称する)に属する各ピアが、各々同一のデータ(共有データ)を各ピアの不揮発性の記憶手段(例えばHDD(Hard Disk Drive)等)各々記憶している状態で、或るピアに記憶されている共有データが更新された場合に、各ピアのアプリケーション実行部20で実行される処理(共有データを同期化する処理)について説明する。なお、共有データを同期化する処理は、共有データが更新されたピアのアプリケーション実行部20で共有データ配信処理(図8)が実行されると共に、ピアグループAに属する他のピアのアプリケーション実行部20で共有データ同期処理(図9)が実行されることによって実現されるが、これらの処理を行うための共有データ配信プログラム及び共有データ同期プログラムは請求項7に記載のデータ同期プログラムに対応しており、個々のピアに予めインストールされている。また、ピアグループAに属する各ピアは本発明に係る情報処理装置に対応しており、ピアグループAは請求項5に記載の情報処理システムに対応している。また、上記の不揮発性の記憶手段は本発明に係る記憶手段に対応しており、ピアグループAは本発明に係る第1グループに対応している。
例として図7(A)にも示すように、ピアグループA内の任意のピアで共有データが更新されると(図7では例として共有データの更新がピア2で発生した場合を示している)、当該ピアのアプリケーション実行部20では、図8に示す共有データ配信処理が実行される。この共有データ配信処理は、共有データが更新された場合以外に、送信タイマがタイムアウトした場合及び他のピアから取得要求を受信した場合にも実行される。このため、ステップ100では、まず今回の起動要因が共有データの更新か否か判定する。判定が肯定された場合はステップ102へ移行し、更新された共有データXの送信回数iに1を代入し、次のステップ104において、更新された共有データXの識別子xを取得する。
また、ステップ106ではハッシュ関数を用いて共有データXのダイジェスト(ハッシュ値)を生成する。そしてステップ108では、ステップ104で取得した識別子x、ステップ106で生成したダイジェスト、送信元情報(自ピアのID)を含む共有データXの更新通知情報を生成し、アプリケーションメモリ22に記憶させる。ステップ110ではP2P基盤管理データ記憶部18に記憶されている情報を参照し、共有データXを共有しているピアグループAに属する全てのピア(自ピア以外のピア)を送信対象として認識する。そしてステップ112では、先のステップ108でアプリケーションメモリ22に記憶させた共有データXの更新通知情報を、ステップ112で認識した全てのピアへ送信する(図7(B)も参照)。
ステップ114ではi回目の更新通知情報送信における送信時間間隔を取り込み、次のステップ116では、取り込んだ送信時間間隔をタイマ値とする共有データXの送信タイマをスタートさせ、処理を終了する。例として図9に示すように、本実施形態では、更新通知情報の送信回数が増加するに従って更新通知情報の通信時間間隔が長くなるように、更新通知情報の送信回数と通信時間間隔との関係が定められており、1回目の更新通知情報の送信では送信時間間隔が比較的短くされる。
i回目の更新通知情報の送信を完了してからステップ114で取り込んだ送信時間間隔に相当する時間が経過することで、ステップ116でスタートさせた送信タイマがタイムアウトすると、共有データ配信処理が再度起動され、先のステップ100の判定が否定されてステップ120へ移行し、今回の起動要因が送信タイマのタイムアウトか否か判定される。この場合は判定が肯定されてステップ122へ移行し、まずタイムアウトした送信タイマに対応する共有データXを認識する。ステップ124では、共有データXの送信回数iを1だけインクリメントし、次のステップ126ではアプリケーションメモリ22に記憶されている共有データXの更新通知情報を読み出してステップ110へ移行する。これにより、前述のように共有データXの更新を通知する更新通知情報がピアグループAに属する他の全てのピアへ再送信されると共に、共有データXの送信タイマが現在の送信回数iに対応する新たなタイマ値で再スタートされることになる。この更新通知情報の再送信により、ピアグループA内の一部のピアとの通信が一時的に途絶していたとしても、共有データXが更新されたことを前記一部のピアに確実に通知することができる。なお、上述したステップ100〜126は本発明に係る第1通知手段に対応している。
共有データ配信処理で送信する更新通知情報は、共有データXが更新されたことを他のピアへ通知するための情報であり、識別子xやダイジェスト、送信元情報等の情報から構成されているので、共有データX自体と比較してデータ量は大幅に小さい。このため、ピアグループAに属する他の全てのピアへ更新通知情報を定期的に送信しても、ピアグループA内におけるトラフィックの増加はごく僅かであると共に、更新通知情報を受信することで他のピアの負荷が大幅に増大することも回避できる。また、共有データ自体を送信する場合と比較してトラフィックや負荷に与える影響が僅かであることから、更新通知情報の送信時間間隔は、共有データ自体を送信する場合の送信時間間隔よりも短くすることも可能となる。これにより、ピアグループAに属する他のピアの中に、通信回線の障害等の影響で最初に送信された更新通知情報を受信できなかったピアが含まれていたとしても、前記ピアが共有データが更新されたことを認識する迄の平均時間を短縮することが可能となる。
続いて、更新通知情報を受信する側のピアにおける処理を説明する。他のピアから更新通知情報を受信すると、当該ピアのアプリケーション実行部20では、図10に示す共有データ同期処理が実行される。この共有データ同期処理は、更新通知情報を受信した場合以外に、送信タイマがタイムアウトした場合及び他のピアから共有データを受信した場合にも実行される。このため、ステップ150では、まず今回の起動要因が更新通知情報の受信か否か判定する。判定が肯定された場合はステップ152へ移行し、受信した更新通知から更新された共有データの識別子xを抽出する。そしてステップ154では、ステップ152で抽出された識別子xに基づいて、対応する共有データXが自ピアの不揮発性の記憶手段に既に記憶されているか否か判定する。
先にも説明したように、各ピアは新たなピアグループに参加したり、参加していたピアグループから脱退することが可能であり、自ピアがピアグループAに参加した直後であった等の場合には、更新通知情報を受信した時点で共有データXが自ピアの不揮発性の記憶手段に記憶されていない状態も生じ得る。この場合はステップ154の判定が否定されてステップ160へ移行する。一方、共有データXが自ピアの不揮発性の記憶手段に記憶されていた場合には、ステップ154の判定が肯定されてステップ156へ移行し、ハッシュ関数を用いて自ピアの不揮発性の記憶手段に記憶されている共有データXのダイジェスト(ハッシュ値)を生成する。また、ステップ158では受信した更新通知情報からダイジェストを抽出する。そしてステップ159では、ステップ156で生成したダイジェストをステップ158で抽出したダイジェストと照合し、両者が一致しているか否かを判定する。
ステップ159の判定が否定された場合、自ピアの不揮発性の記憶手段に記憶されている共有データXは更新前のデータであると判断できるので、ステップ160へ移行し、更新通知情報送信元のピアに対して共有データXの送信を要求するために、ステップ152で抽出した識別子xと、要求元情報(自ピアのID)を含む共有データXの取得要求情報を生成する。またステップ162では、生成した共有データXの取得要求情報を、受信した更新通知情報から抽出した送信元情報(更新通知情報送信元のピアのID)と対応付けてアプリケーションメモリ22に記憶させる。そして、ステップ164では共有データXの取得要求情報の送信を待機する時間を乱数によって決定し、次のステップ166において、ステップ164で決定した送信待機時間をタイマ値とする共有データXの取得要求情報の送信タイマをスタートさせて処理を終了する。
ステップ164で決定した送信待機時間が経過することで、ステップ166でスタートさせた送信タイマがタイムアウトすると、共有データ同期処理が再度起動され、先のステップ150の判定が否定されてステップ170へ移行し、今回の起動要因が送信タイマのタイムアウトか否か判定される。この場合は判定が肯定されてステップ172へ移行し、まずタイムアウトした送信タイマに対応する共有データXを認識する。ステップ174では、先のステップ162でアプリケーションメモリ22に記憶させた共有データXの取得要求情報と送信元情報を読み出し、次のステップ176では、読み出した共有データXの取得要求情報を、読み出した送信元情報に対応するピア(更新通知情報送信元のピア)へ送信し、処理を終了する。なお、上述したステップ150〜ステップ176は本発明に係る取得要求手段(詳しくは請求項2に記載の取得要求手段)に対応している。
上記のようにして、更新通知情報を受信したピアから共有データXの取得要求情報が送信され、この取得要求情報が更新通知情報送信元のピアで受信されると、更新通知情報送信元のピアで共有データ配信処理が再度起動され、ステップ100,120の判定が各々否定されてステップ130へ移行する。ステップ130では、受信した取得要求情報から識別子xを抽出することで、取得対象の共有データXを認識する。次のステップ132では、認識した共有データX(更新後のデータ)を自ピアの不揮発性の記憶手段から読み出す。そしてステップ134では、ステップ132で読み出した共有データXを識別子xと共に取得要求送信元のピアへ送信し、処理を終了する。なお、上述したステップ130〜ステップ134は本発明に係る第1送信手段に対応している。
この共有データXが取得要求送信元のピアで受信されると、取得要求送信元のピアで共有データ同期処理が再度起動され、ステップ150,170の判定が各々否定されてステップ180へ移行する。ステップ180では、共有データ送信元のピアから共有データXと共に受信した識別子xに基づいて、対応する共有データXが自ピアの不揮発性の記憶手段に既に記憶されているか否か判定する。判定が否定された場合はステップ182へ移行し、受信した共有データXを自ピアの不揮発性の記憶手段に記憶させ、処理を終了する。また、ステップ180の判定が肯定された場合はステップ184へ移行し、受信した共有データXを、自ピアの不揮発性の記憶手段に既に記憶されている共有データXに上書きして記憶させ、処理を終了する。これにより、不揮発性の記憶手段に記憶されている共有データXを最新のデータへ変更する同期化が完了する。なお、上述したステップ180〜ステップ184は本発明に係る受信手段に対応している。
本実施形態において、更新通知情報送信元のピアは、他のピアから取得要求情報を受信する毎に、取得が要求された共有データの送信(ステップ130〜134)を行うが、更新通知情報を受信した各ピアでは、乱数によって決定した送信待機時間が経過した後に取得要求情報を送信するので、例として図7(C)〜(E)にも示すように、更新通知情報を受信した各ピアからは互いに異なるタイミングで取得要求情報が送信され、これに伴い、更新通知情報送信元のピアから各ピアへ共有データXが送信されるタイミングも互いに相違することになる。これにより、ピアグループA内のトラフィック、或いは更新通知情報送信元のピアに加わる負荷が一時期に集中して過大となることが防止され、ピアグループAに属する各ピアが各々保持する共有データの同期をとることを、トラフィックや負荷の増大を抑制しつつ実現することができる。
なお、本実施形態では共有データが更新されたピアが更新通知情報を定期的に送信するので、更新通知情報を受信する側のピアは、同一の更新通知情報を複数回受信することになるが、この場合、不揮発性の記憶手段に既に記憶されている共有データXのダイジェスト(ステップ156で生成したダイジェスト)が、受信した更新通知情報から抽出したダイジェストに一致することになるので、ステップ159の判定が肯定されることで自ピアの不揮発性の記憶手段に記憶されている共有データXは更新後のデータであると判断することができ、何ら処理を行うことなく処理を終了する。これにより、ピアグループA内のトラフィックを抑制することができ、更新通知情報を受信する側のピアに加わる負荷が増大することも回避することができる。
〔第2実施形態〕
次に本発明の第2実施形態について説明する。なお、本第2実施形態は第1実施形態と同一の構成であるので、各部分に同一の符号を付して構成の説明を省略し、以下、本第2実施形態における共有データを同期化する処理について、第1実施形態と異なる部分についてのみ説明する。
第1実施形態では、或るピアグループに属する各ピアに各々保持される共有データが何れかのピアで更新された場合に、共有データの更新が発生したピアが、同一のピアグループに属する他の全てのピアに対して更新通知情報の送信及び共有データの送信を行う例を説明したが、ピアグループに属するピアの数が多数になると、更新通知情報を受信した各ピアが取得要求情報を送信するタイミングが互いにずれていても、更新通知の送信及び共有データの送信を行うピアに多大な負荷が加わる可能性がある。
一方、P2Pネットワークでは、例として図11(A)に示すピアグループAとサブピアグループaのように、或るピアグループに包含される別のピアグループが設定されることがある。本第2実施形態では、ピアグループAに包含されるサブピアグループaを利用し、ピアグループA内の各ピアに保持される共有データの更新された場合に、共有データの更新が発生したピアはサブピアグループa内の他のピアに対してのみ更新通知情報の送信及び共有データの送信を行い、更新通知情報を受信して共有データの更新(同期化)を完了したサブピアグループa内の他のピアが、ピアグループAに属しサブピアグループaに属していない他のピアへの更新通知情報の送信及び共有データの送信を行うことで、共有データの更新が発生したピアに加わる負荷を軽減している。なお、図11において、ピア4〜ピア6が別のサブピアグループにも属していてもよいことは言うまでもない。また、上記のサブピアグループaは請求項3に記載の第2グループに対応している。
すなわち、本第2実施形態に係る共有データ配信処理では、図12に示すように、共有データXの更新が発生し(ステップ100の判定が肯定)、共有データXの送信回数iの初期化(ステップ102)、共有データXの識別子の取得(ステップ106)、共有データXのダイジェストの生成(ステップ106)を行った後に、次のステップ107において、P2P基盤管理データ記憶部18に記憶されている情報を参照することで、共有データXを共有しているピアグループAを認識する。なお、ピアグループAは、ピアグループAに包含されるサブピアグループaが存在している場合(図11(A)参照)と、サブピアグループaが存在していない場合(図7(A)参照)がある。次のステップ109では、識別子x、ダイジェスト、送信元情報(自ピアのID)に、ステップ107で認識したピアグループを表すグループ識別情報(請求項4に記載の識別情報に相当)を加えた情報を含む共有データXの更新通知情報を生成し、アプリケーションメモリ22に記憶させる。
次のステップ136では、ステップ107で認識したピアグループAに、当該ピアグループAに包含されるサブピアグループaが存在しているか否か判定する。判定が否定された場合はステップ138へ移行し、第1実施形態で説明したステップ110と同様に、ピアグループAに属する全てのピア(自ピア以外のピア)を送信対象として認識する。一方、ステップ136の判定が肯定された場合はステップ140へ移行し、P2P基盤管理データ記憶部18に記憶されている情報に基づいて、ピアグループAに包含されるサブピアグループaに属する全てのピア(ピアグループAに属しかつサブピアグループaにも属している自ピア以外のピア)を送信対象として認識する。なお、本第2実施形態に係る共有データ配信処理において、上記以外のステップは第1実施形態に係る共有データ配信処理と同一であるので説明を省略する。
上記処理により、例えば図11(A)に示すように、ピア2で更新された共有データがピアグループA内で共有されている(ピアグループAに属する各ピアが各々保持している)データであり、このピアグループAに包含されるサブピアグループaが存在していた場合、例として図11(B)にも示すように、ピア2からは、ピアグループAに属しかつサブピアグループaにも属しているピア1及びピア3に対してのみ更新通知情報が送信されることになる。
続いて、本第2実施形態に係る共有データ同期処理について説明する。本第2実施形態に係る共有データ同期処理では、図13に示すように、更新通知情報を受信すると(ステップ150の判定が肯定)ステップ167へ移行し、受信した更新通知情報からグループ識別情報と送信元情報を抽出する。ステップ168ではステップ167で抽出したグループ識別情報と送信元情報に基づいて、更新が通知された共有データXが、サブピアグループaに属しかつピアグループAに属するピアで更新されたデータであり、ピアグループAで共有されているデータであるか否かを判断することで、ピアグループAに属しかつサブピアグループaに属さない各ピアへ中継すべきデータか否かを識別する。
また、受信した更新通知情報によって更新が通知された共有データXが、自ピアの不揮発性の記憶手段に記憶されていないデータである場合(ステップ154の判定が否定)、或いは自ピアの不揮発性の記憶手段に既に記憶されている共有データXが更新前のデータであった場合(ステップ159の判定が否定)には、第1実施形態と同様に共有データXの取得を要求するための取得要求情報を生成し(ステップ160)、生成した共有データXの取得要求情報を、更新通知から抽出した送信元情報と対応付けてアプリケーションメモリ22に記憶させる(ステップ163)が、本第2実施形態では、先のステップ168で更新が通知された共有データXが中継対象のデータであると判断された場合、このステップ163において、共有データXの取得要求情報を送信元情報及び中継識別情報と対応付けてアプリケーションメモリ22に記憶させる。
また、本第2実施形態に係る共有データ同期処理では、ステップ150、170の判定が否定された場合にステップ178へ移行し、今回の起動要因が共有データの受信か否か判定するが、更新通知情報送信元のピアから共有データXを受信することでステップ178の判定が肯定された場合、受信した共有データXを自ピアの不揮発性の記憶手段に記憶させ(ステップ180〜184)た後に、先のステップ163でアプリケーションメモリ22に記憶させた共有データXの取得要求情報が、中継識別情報と対応付けられているか否か、すなわち共有データXが中継対象のデータか否か判定する。判定が否定された場合は何ら処理を行うことなく処理を終了するが、判定が肯定された場合はステップ188へ移行し、先のステップ152で受信した更新通知情報から抽出した共有データXの識別子x、先のステップ158で同じく更新通知情報から抽出した共有データXのダイジェスト、送信元情報(自ピアのID)を含む共有データXの更新通知情報を生成し、アプリケーションメモリ22に一時記憶させる。
またステップ190では、P2P基盤管理データ記憶部18に記憶されている情報に基づいて、ピアグループAに属しかつサブピアグループaに属していない全てのピアを認識する。そしてステップ192では、共有データXの更新通知情報を、ステップ190で認識した全てのピアへ送信する。これにより、例として図11(C),(D)にも示すように、ピアグループA及びサブピアグループaに各々属し、共有データXの更新が発生したピア(図ではピア2)から最新の共有データXの取得したピア(図ではピア3)により、ピアグループAに属しかつサブピアグループaに属していない全てのピア(ピア4〜ピア6)に対して共有データXの更新通知が配信されることになる。なお、上述したステップ188〜ステップ192は請求項3に記載の第2通知手段(詳しくは請求項4に記載の第2通知手段)に対応している。
更に、第1実施形態に係る共有データ同期処理では、他のピアから更新通知情報によって共有データXの更新が通知されたものの、自ピアの不揮発性の記憶手段に最新の共有データXが既に記憶されていた場合(ステップ159の判定が肯定された場合)に、何ら処理を行うことなく処理を終了していたが、本第2実施形態に係る共有データ同期処理では、ステップ159の判定が肯定された場合にステップ169へ移行し、ステップ168における認識結果に基づいて共有データXが中継対象のデータか否か判定する。そして、判定が否定された場合は何ら処理を行うことなく処理を終了するが、判定が肯定された場合はステップ188へ移行し、ステップ188〜ステップ192において、ピアグループAに属しかつサブピアグループaに属していない各ピアへの更新通知情報の再送信を行う。この更新通知情報の再送信により、ピアグループAに属しかつサブピアグループaに属していない各ピアのうちの一部のピアとの通信が一時的に途絶していたとしても、共有データXが更新されたことを前記一部のピアに確実に通知することができる。
そして本第2実施形態に係る共有データ同期処理では、更新通知情報を送信したピアから共有データXの取得要求情報を受信すると、ステップ178の判定が否定されてステップ194へ移行し、共有データ配信処理(図8,12)のステップ130〜ステップ134と同様に、受信した取得要求情報から識別子xを抽出することで取得対象の共有データXを認識し(ステップ194)、認識した共有データX(更新後のデータ)を自ピアの不揮発性の記憶手段から読み出し(ステップ196)、読み出した共有データXを識別子xと共に取得要求送信元のピアへ送信する(ステップ198)。これにより、取得要求情報送信元のピア(ピアグループAに属しかつサブピアグループaに属していないピア)の不揮発性の記憶手段に記憶されている共有データXも同期化されることになる(図11(E),(F)も参照)。なお、上述したステップ194〜ステップ198は請求項3に記載の第2送信手段に対応している。
なお、上述した第2実施形態では、サブピアグループaに属し、共有データの更新が発生したピアから更新通知情報を受信した各ピアが、ピアグループAに属しかつサブピアグループaに属していない各ピアへ更新通知情報を各々送信する態様を例に説明したが(例として図11(D)ではピア3が各ピアへ更新通知情報を送信し、図11(E)ではピア1が各ピアへ更新通知情報を送信している状態を示している)、これに限定されるものではなく、サブピアグループaに属し、共有データの更新が発生したピアから更新通知情報を受信したピアが複数存在している場合、ピアグループAに属しかつサブピアグループaに属していない各ピアを複数のグループに分け、サブピアグループaに属し、共有データの更新が発生したピアから更新通知情報を受信した各ピアが、互いに異なるグループ内のピアに対してのみ更新通知情報を送信するようにしてもよい。
また、上記では個々のピアの不揮発性の記憶手段に記憶されている共有データが更新前のデータか否かを判断可能な情報として、共有データのダイジェスト(ハッシュ値)を例に説明したがこれに限定されるものではなく、共有データの更新が発生したピアが、更新通知情報として共有データの更新日時又は更新後の共有データの版数を含む情報を送信し、共有データを受信したピアは受信した共有データと共に通知された更新日時又は版数を記憶し、更新通知情報を受信する毎に、受信した更新通知情報に含まれる更新日時又は版数を、共有データと共に記憶している更新日時又は版数と比較することで、既に記憶している共有データが更新前のデータか否かを判断するようにしてもよい。