(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023062467
(43)【公開日】2023-05-08
(54)【発明の名称】データ共有システム及びデータ共有方法
(51)【国際特許分類】
H04L 67/06 20220101AFI20230426BHJP
G06F 16/178 20190101ALI20230426BHJP
【FI】
H04L67/06
G06F16/178
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021172468
(22)【出願日】2021-10-21
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】ブイ ミン フイ
(72)【発明者】
【氏名】清水 俊樹
(72)【発明者】
【氏名】大塚 祐策
(72)【発明者】
【氏名】穂原 和彦
(57)【要約】
【課題】サーバとクライアントとの間のデータ共有における、サーバの負荷及びネットワークの負荷を低減する。
【解決手段】サーバは、生成した共有データと、複数のクライアントに前回送信した共有データと、の差分である差分データを、複数のクライアントに送信し、複数のクライアントは、差分データを正常に受信したと判定した場合、差分データを自身が有するバッファに格納し、複数のクライアントに含まれる第1クライアントは、自身が有する前記バッファの差分データに欠落があると判定した場合、複数のクライアントに含まれる他のクライアントに対して、当該欠落している差分データの再送を要求し、当該他のクライアントのうち当該欠落している差分データを保持するクライアントが、第1クライアントに対して、当該欠落している差分データを送信する。
【選択図】
図1A
【特許請求の範囲】
【請求項1】
サーバと、複数のクライアントと、含むデータ共有システムであって、
前記サーバは、
共有データを複数回生成し、
初回に共有データを生成したときには当該共有データを前記複数のクライアントに送信し、
2回目以降に共有データを生成したときには、当該生成した共有データと、前記複数のクライアントに前回送信した共有データと、の差分である差分データを、前記複数のクライアントに送信し、
前記複数のクライアントは、前記差分データを正常に受信したと判定した場合、前記差分データを自身が有するバッファに格納し、
前記複数のクライアントに含まれる第1クライアントは、
自身が有する前記バッファの差分データに欠落があると判定した場合、
前記複数のクライアントに含まれる他のクライアントに対して、前記欠落している差分データの再送を要求し、
前記他のクライアントのうち前記欠落している差分データを自身が有する前記バッファに保持するクライアントが、前記第1クライアントに対して、前記欠落している差分データを送信する、データ共有システム。
【請求項2】
請求項1に記載のデータ共有システムであって、
前記他のクライアントのうち前記欠落している差分データを保持するクライアントは、前記第1クライアントに対して、前記欠落している差分データを送信可能であることを示す再送可能応答を送信し、
前記第1クライアントは、最も早く受信した前記再送可能応答を送信した第2クライアントに対して、前記欠落している差分データの再送を指示し、
前記第2クライアントは、前記第1クライアントに対して、前記欠落している差分データを送信する、データ共有システム。
【請求項3】
請求項1に記載のデータ共有システムであって、
前記サーバは、前記差分データのデータサイズと、前記差分データから算出されるハッシュ値と、を前記差分データに付加して、前記複数のクライアントに送信し、
前記複数のクライアントは、
受信した前記差分データに付加されたデータサイズと、受信した前記差分データから算出されるデータサイズと、が一致しないと判定した場合、かつ
受信した前記差分データに付加されたハッシュ値と、受信した前記差分データから算出されるハッシュ値と、が一致しないと判定した場合に、
前記差分データを正常に受信できたと判定して、前記差分データを前記バッファに格納する、データ共有システム。
【請求項4】
請求項1に記載のデータ共有システムであって、
前記サーバは、前記差分データを抽出した時刻、又は前記差分データを前記複数のクライアントに送信する時刻を示す時刻情報を、前記差分データに付加して、前記複数のクライアントに送信し、
前記複数のクライアントは、自身が有する前記バッファに格納されている複数の差分データの前記時刻情報を比較することで、自身が有する前記バッファの差分データに欠落があるかを判定する、データ共有システム。
【請求項5】
請求項1に記載のデータ共有システムであって、
前記第1クライアントは、
自身が有する前記バッファの差分データに欠落があると判定した場合、
ランダム時間待ち、
前記ランダム時間の間に前記欠落しているデータの再送を要求されなかった場合、前記他のクライアントに対して、前記欠落している差分データの再送を要求する、データ共有システム。
【請求項6】
請求項5に記載のデータ共有システムであって、
前記他のクライアントのうち、前記欠落している差分データを自身が有する前記バッファに保持するクライアントは、
ランダム時間待ち、
当該ランダム時間の間に前記欠落している差分データを受信しなかった場合、前記第1クライアントに対して、前記欠落している差分データを送信する、データ共有システム。
【請求項7】
請求項1に記載のデータ共有システムであって、
前記サーバは、最後に共有データを生成したときには、以降に差分データを送信しないことを示すフラグを、差分データに付加して、前記複数のクライアントに送信する、データ共有システム。
【請求項8】
請求項1に記載のデータ共有システムであって、
前記複数のクライアントそれぞれの前記バッファには、差分データが重複しないよう分散して格納されている、データ共有システム。
【請求項9】
請求項1に記載のデータ共有システムであって、
前記複数のクライアントは、複数台のクライアントの複数の組み合わせからなり、
同じ組み合わせに属するクライアントそれぞれの前記バッファには、同じ差分データが格納され、異なる組み合わせのクライアントの前記バッファには差分データが重複しないよう分散して格納されている、データ共有システム。
【請求項10】
請求項1に記載のデータ共有システムであって、
前記サーバは、前記差分データを保持するバッファを保持し、
前記第1クライアントは、
自身が有する前記バッファの差分データに欠落があると判定した場合、
前記複数のクライアントに含まれる他のクライアント及び前記サーバに対して、前記欠落している差分データの再送を要求し、
前記サーバ、又は前記他のクライアントのうち前記欠落している差分データを自身が有する前記バッファに保持するクライアントが、前記第1クライアントに対して、前記欠落している差分データを送信する、データ共有システム。
【請求項11】
サーバと、複数のクライアントと、含むデータ共有システムによるデータ共有方法であって、
前記サーバは、
共有データを複数回生成し、
初回に共有データを生成したときには当該共有データを前記複数のクライアントに送信し、
2回目以降に共有データを生成したときには、当該生成した共有データと、前記複数のクライアントに前回送信した共有データと、の差分である差分データを、前記複数のクライアントに送信し、
前記複数のクライアントは、前記差分データを正常に受信したと判定した場合、前記差分データを自身が有するバッファに格納し、
前記複数のクライアントに含まれる第1クライアントは、
自身が有する前記バッファの差分データに欠落があると判定した場合、
前記複数のクライアントに含まれる他のクライアントに対して、前記欠落している差分データの再送を要求し、
前記他のクライアントのうち前記欠落している差分データを自身が有する前記バッファに保持するクライアントが、前記第1クライアントに対して、前記欠落している差分データを送信する、データ共有方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ共有システム及びデータ共有方法に関する。
【背景技術】
【0002】
サーバが複数のクライアントにデータ共有する技術として、特開2011-237924号公報(特許文献1)及び特開2008-85932号公報(特許文献2)がある。特許文献1には、「本発明のファイル配信方法は、配信サーバが、複数のファイルをそれぞれ複数のブロックに分割し(ステップS105)、各ファイルの識別情報を一次アドレスとし(ステップS103)、各ファイルのブロックの識別情報を二次アドレスとし(ステップS105)、一次アドレスと二次アドレスから各ブロックの順序を示すブロックアドレスを生成し、各ブロックにブロックアドレスを付与し(ステップS107)、各ブロックを順次ネットワーク上にマルチキャスト配信する(ステップS109)。」と記載されている(要約参照)。
【0003】
特許文献2には「サーバ1が、複数のブロックデータの各々についての代表クライアントを、複数のクライアント2に、例えばラウンドロビンにより割り当てる。サーバ1が、ブロックデータとこれに割り当てられた代表クライアント2を示す情報とを、マルチキャスト通信により複数のクライアント2に送信する。代表クライアント2が、応答確認をサーバ1に送信する。サーバ1が、応答確認を受信した場合、前記ブロックデータの後続のブロックデータとこれに割り当てられた新たな代表クライアントを示す情報とを、マルチキャスト通信により複数のクライアント2に送信する。」と記載されている(要約参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011-237924号公報
【特許文献2】特開2008-85932号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の技術では、サーバが、全クライアントの再送要求に対して、再送を実施するため、再送要求クライアント数が多くなると、サーバの負荷が大きくなる。また、特許文献2に記載の技術では、各々のブロックデータの再送を担当する代表クライアントに対して、サーバが各々のブロックデータの送信を成功するまでに繰り返すため、代表クライアントがダウンしたときや、ネットワーク障害によって代表クライアントがブロックデータの受信に失敗するとき等に、サーバの負荷とネットワークの負荷が大きくなる。そこで、本発明の一態様は、サーバとクライアントとの間のデータ共有における、サーバの負荷及びネットワークの負荷を低減する。
【課題を解決するための手段】
【0006】
上記課題を解決するために本発明の一態様は以下の構成を採用する。データ共有システムは、サーバと、複数のクライアントと、を含み、前記サーバは、共有データを複数回生成し、初回に共有データを生成したときには当該共有データを前記複数のクライアントに送信し、2回目以降に共有データを生成したときには、当該生成した共有データと、前記複数のクライアントに前回送信した共有データと、の差分である差分データを、前記複数のクライアントに送信し、前記複数のクライアントは、前記差分データを正常に受信したと判定した場合、前記差分データを自身が有するバッファに格納し、前記複数のクライアントに含まれる第1クライアントは、自身が有する前記バッファの差分データに欠落があると判定した場合、前記複数のクライアントに含まれる他のクライアントに対して、前記欠落している差分データの再送を要求し、前記他のクライアントのうち前記欠落している差分データを自身が有する前記バッファに保持するクライアントが、前記第1クライアントに対して、前記欠落している差分データを送信する。
【発明の効果】
【0007】
本発明の一態様によれば、サーバとクライアントとの間のデータ共有における、サーバの負荷及びネットワークの負荷を低減することができる。
【0008】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0009】
【
図1A】実施例1におけるデータ共有システムの構成例を示すブロック図である。
【
図1B】実施例1におけるサーバ1及びクライアントそれぞれを構成する計算機のハードウェア構成例を示すブロック図である。
【
図2】実施例1におけるサーバがクライアントに送信する時刻T
Nの差分データの一例である。
【
図3】実施例1における差分データ受信処理と受信判定処理の概略を示す説明図である。
【
図4】実施例1におけるデータ処理部による処理の一例を示すフローチャートである。
【
図5A】実施例1における再送事前要求処理と再送可能応答処理の概略を示す説明図である。
【
図5B】実施例1における再送実施指示と差分データ再送処理の概略を示す説明図である。
【
図6】実施例2における再送指示と差分データ再送処理の概略を示す説明図である。
【
図7A】実施例2における各クライアントの再送要求処理部による再送要求の一例を示すフローチャートである。
【
図7B】実施例2における再送要求を受信した各クライアントの再送要求処理部による再送処理の一例を示すフローチャートである。
【
図8】実施例3におけるサーバがクライアントに送信する時刻T
Nの差分データの一例である。
【
図9A】実施例4におけるクライアントそれぞれの差分バッファが差分データを保持する方式の一例を示す説明図である。
【
図9B】実施例5におけるクライアントそれぞれの差分バッファが差分データを保持する方式の一例を示す説明図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【0011】
サーバと複数のクライアントを含むデータ共有システムにおいて、時刻的に変化するデータをサーバがブロードキャスト通信でクライアントに共有する際、サーバが初回だけに共有データ全体の配信を行い、その後は前周期との差分データだけを配信する。従来技術では、クライアントが差分データの受信に失敗したときは、サーバが共有データの全体をクライアントに再配信しなければならないため、サーバの負荷及びネットワークの負荷が高くなる。本実施形態では、このようなサーバの負荷及びネットワークの負荷を軽減するデータ共有システムについて説明する。
【実施例0012】
図1は、データ共有システムの構成例を示すブロック図である。データ共有システムは、ネットワーク3で接続された、サーバ1と、複数の(ここではN台とする)クライアント21~2Nと、を含む。ネットワーク3は、例えばインターネット、LAN(Local Area Network)等であり、サーバ1及びクライアント21~2Nは、ネットワーク3を介して、ブロードキャスト通信、マルチキャスト通信、又はユニキャスト通信を行う。なお、データ共有システムに含まれるクライアントは複数台でなく、1台であってもよい。
【0013】
サーバ1は、ブロードキャスト又はマルチキャスト通信により共有データを送信する送信元の計算機である。サーバ1は、例えば、いずれも機能部である、差分データ抽出部13と、データ送信部14とを有する。また、サーバ1は、共有データ(NEW)11及び共有データ(OLD)12を保持する。また、サーバ1は、データを記憶するバッファ領域である差分バッファ16を有する。
【0014】
サーバ1は、例えば、周期的に共有データを生成し、生成した共有データを共有データ(NEW)11として保持し、前の周期で生成した共有データ(直前の共有データ(NEW)11)を共有データ(OLD)12に上書きする。
【0015】
差分データ抽出部13は、例えば、周期的に共有データを生成したときに、共有データ(NEW)11と共有データ(OLD)12との差分を抽出する。差分データ抽出部13は、差分データをクライアント21~2Nに送信する時刻(抽出した共有データ11を生成した時刻であってもよい)を示す時刻要素TNを含むヘッダ領域を、抽出した差分に付加して差分データ15を生成し、生成した差分データ15を差分バッファ16に格納する。差分データ抽出部13は、前の周期で生成した差分データ15を差分バッファ16から破棄してもよい。なお、共有データ(NEW)11と共有データ(OLD)12とが同じである場合、差分データとして空データが送信される。
【0016】
差分データ抽出部13は、生成した差分データ15をクライアント21~2Nにデータ送信部14に対して配信する配信指示を送信し、配信指示を受信したデータ送信部14は、当該差分データ15をブロードキャスト通信又はマルチキャスト通信により、クライアント21~2Nに送信する。
【0017】
なお、サーバ1は、最初の共有データを生成した場合には、前周期の共有データがないため差分データを抽出することなく、当該最初の共有データ全体をクライアント21~2Nに送信する。
【0018】
クライアント21~2Nそれぞれの構成は全て同様であるため、ここでは代表としてクライアント21の構成を説明する。クライアント21は、ブロードキャスト通信又はマルチキャスト通信により共有データを受信する計算機である。クライアント21は、必要に応じてユニキャスト通信を行う。クライアント21は、例えば、いずれも機能部である、データ復元部211と、データ処理部212と、再送要求処理部213と、を有する。また、クライアント21は、共有データ214を保持する。また、クライアント21は、いずれもデータを記憶するバッファ領域である、受信バッファ215と、差分バッファ216と、を有する。
【0019】
データ処理部212は、サーバ1から受信した差分データを受信バッファ215及び差分バッファ216に格納する。なお、データ処理部212は、差分バッファ216に差分データを格納するときに、差分バッファ216に格納された差分データが一定の個数に達したと判定した場合、差分バッファ216に格納された差分データが当該一定の個数を上回らないように古い差分データから順に破棄する。データ復元部211は、共有データ214に対して最新の差分データを付加することで共有データ214を更新する。
【0020】
上記したサーバ1及びクライアント21~2Nの処理により、サーバ1は、新たに生成した共有データと前の周期で生成した共有データとの差分を送信するだけで、クライアント21~2Nとの間で最新の周期のデータを共有することができ、サーバ1からクライアント21~2Nへの通信量を削減することができる。
【0021】
再送要求処理部213は、データ処理部212が差分データを正常に受信できなかった場合に、他のクライアント及び/又はサーバ1に対して、差分データの再送を要求する。なお、本実施例では、全てのクライアント21~2Nの差分バッファ216が全ての時刻の差分データを保持するようにする。これにより、いずれかのクライアントにおいて差分データが欠落しても、極めて高い確率で他のクライアントから当該差分データの再送を受けることができる。
【0022】
図1Bは、サーバ1及びクライアント21~2Nそれぞれを構成する計算機のハードウェア構成例を示すブロック図である。計算機100は、例えば、互いにバス等の内部信号線104で接続された、CPU101、補助記憶装置102、メモリ103、表示装置105、入出力インターフェース106、及び通信インターフェース107を有する計算機によって構成される。
【0023】
CPU101は、プロセッサを含み、メモリ103に格納されたプログラムを実行する。メモリ103は、不揮発性の非一時的な記憶素子であるROM及び揮発性の記憶素子であるRAMを含む。ROMは、不変なプログラム(たとえばBIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU101が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【0024】
補助記憶装置102は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の非一時的な記憶装置であり、CPU101が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置102から読み出されて、メモリ103にロードされて、CPU101によって実行される。
【0025】
入出力インターフェース106は、キーボードやマウスなどが接続され、オペレータからの入力を受けるインターフェースである。また、入出力インターフェース106は、表示装置105やプリンタなどが接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースでもある。表示装置105は、入出力インターフェース106から出力されたプログラムの実行結果を表示する。
【0026】
通信インターフェース107は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信インターフェース107は、例えば、USB(Universal Serial Bus)等のシリアルインターフェースを含んでもよい。
【0027】
CPU101が実行するプログラムの一部又は全部は、計算機が読み取り可能な非一時的記憶媒体であるリムーバブルメディア(CD-ROM、フラッシュメモリなど)から、又はネットワーク600を介して接続された非一時的記憶装置を備える外部計算機から、計算機100に提供され、非一時的記憶媒体である不揮発性の補助記憶装置102に格納されてもよい。このため、計算機100は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【0028】
サーバ1及びクライアント21~2Nそれぞれは、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【0029】
サーバ1を構成する計算機100のCPU101は、例えば、いずれも機能部である、差分データ抽出部13と、データ送信部14と、差分バッファ16と、を含む。クライアント21~2Nそれぞれを構成する計算機100のCPU101は、データ復元部211と、データ処理部212と、再送要求処理部213と、を含む。
【0030】
例えば、サーバ1を構成する計算機100のCPU101は、サーバ1を構成する計算機100のメモリ103にロードされた差分データ抽出プログラムに従って動作することで、差分データ抽出部13として機能し、サーバ1を構成する計算機100のメモリ103にロードされたデータ送信プログラムに従って動作することで、データ送信部14として機能する。サーバ1を構成する計算機100のCPU101に含まれる他の機能部についても、クライアント21~2Nそれぞれを構成する計算機100のCPU101に含まれる機能部についても、機能部とプログラムとの関係は同様である。
【0031】
なお、本実施形態において、データ共有システムが使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【0032】
図2は、サーバ1がクライアント21~2Nに送信する時刻T
Nの差分データ15の一例である。時刻TNの差分データ15は、例えば、時刻データ151と、データサイズ152と、ハッシュ値153と、データ154と、を含む。例えば、時刻データ151と、データサイズ152と、ハッシュ値153と、は差分データ15のヘッダ領域に格納されている。
【0033】
時刻データ151は、時間的に変化する差分データを特定できる情報である。差分データの送信順を示すシーケンス番号、及びタイムスタンプ等の差分データを一意に識別する情報は、いずれも時刻データ151の一例である。
【0034】
データサイズ152は、データ154のサイズを示す情報である。ハッシュ値153は、データ154から算出されるハッシュ値である。データサイズ152とハッシュ値153はデータ154の整合性をチェックする目的で利用される。なお、差分データ15は、データサイズ152とハッシュ値153とを含まなくてもよい。データ154は、共有データ(NEW)11と共有データ(OLD)12との差分のデータである。
【0035】
図3は、差分データ受信処理と受信判定処理の概略を示す説明図である。クライアント21~クライアント2Nのデータ処理部212は、サーバ1が送信した時刻TNの差分データ15を、受信バッファ215に時刻TNの差分データとして一旦格納する。その後、データ処理部212は、
図4に示す処理を実行する。
図4の処理の概要として、データ処理部212は、受信バッファ215に格納した差分データが正常なデータでないと判定した場合、再送要求処理部213に再送要求をするよう指示し、受信バッファ215に格納した差分データが正常なデータであると判定した場合、データ復元部211にデータの復元指示をする。
【0036】
図4は、データ処理部212による処理の一例を示すフローチャートである。データ処理部212は、受信した時刻TNの差分データの実際のデータサイズを計測し、計測したデータサイズと、ヘッダ領域に含まれるデータサイズ152と、が等しいか判定する(S41)。データ処理部212は、計測したデータサイズと、ヘッダ領域に含まれるデータサイズ152と、が等しくないと判定した場合(S41:NO)、時刻T
Nの差分データを正常に受信できなかったと判定して、受信したデータを破棄し(S43)、即ち受信バッファ215から、時刻T
Nの差分データを削除して、
図4の処理を終了する。
【0037】
データ処理部212は、計測したデータサイズと、ヘッダ領域に含まれるデータサイズ152と、が等しいと判定した場合(S41:YES)、受信した時刻TNの差分データからハッシュ値を計算し、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153とが一致するか判定する(S42)。データ処理部212は、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153と、が一致しないと判定した場合(S42:NO)、時刻T
Nの差分データを正常に受信できなかったと判定して、受信したデータを破棄し(S43)、即ち受信バッファ215から時刻T
Nの差分データを削除して、
図4の処理を終了する。
【0038】
データ処理部212は、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153と、が一致すると判定した場合(S42:YES)、時刻TNの差分データを正常に受信できたと判定し、時刻TNの差分データを差分バッファ216にコピーする(S44)。
【0039】
データ処理部212は、差分バッファ216に前回コピーした差分データと、今回コピーした時刻TNの差分データと、を比較して、差分データの欠落があるかを判定する(S45)。具体的には、例えば、時刻データ151として差分データの送信順を示すシーケンス番号が格納されている場合には、データ処理部212は、前回コピーした差分データのシーケンス番号と、今回コピーした時刻TNの差分データのシーケンス番号と、が連続していると判定した場合に差分データの欠落がないと判定し、連続していないと判定した場合に差分データの欠落があると判定する。
【0040】
また、例えば、時刻データ151としてタイムスタンプが格納されている場合、前回コピーした差分データのタイムスタンプが示す時刻と、今回コピーした時刻TNの差分データのタイムスタンプが示す時刻と、の差が、所定値以内であると判定した場合に差分データの欠落がないと判定し、当該所定値より大きいと判定した場合に差分データの欠落が多いと判定する。
【0041】
データ処理部212は、差分データの欠落があると判定した場合(S45:YES)、差分バッファ216に前回コピーした差分データの時刻データ151と、今回コピーした時刻T
Nの差分データの時刻データ151と、に基づいて、欠落した時刻の差分データを特定し、欠落した時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信して(S46)、
図4の処理を終了する。
【0042】
具体的には、例えば、時刻データ151として差分データの送信順を示すシーケンス番号が格納されている場合には、ステップS46において、データ処理部212は、前回コピーした差分データのシーケンス番号と、今回コピーした時刻TNの差分データのシーケンス番号と、の間のシーケンス番号が示す時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信する。
【0043】
また、例えば、時刻データ151としてタイムスタンプが格納されている場合、ステップS46において、データ処理部212は、前回コピーした差分データのタイムスタンプが示す時刻と、今回コピーした時刻TNの差分データのタイムスタンプが示す時刻と、の間の時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信する。
【0044】
データ処理部212は、差分データの欠落がないと判定した場合(S45:NO)、受信バッファ215に格納されている前周期の(つまり時刻TN-1の)差分データを削除し(S47)、データ復元部211に復元指示を送信して(S48)、
図4の処理を終了する。
【0045】
なお、データ復元部211は、データ処理部212から復元指示を受信したら、受信バッファ215に格納している時刻TNの差分データを、共有データ214に反映し(受信バッファ215に格納している時刻TNの差分データのデータ154を付加して)、共有データ214の最新状態を復元する。
【0046】
図5Aは、再送事前要求処理と再送可能応答処理の概略を示す説明図である。再送要求処理部213は、ステップS46においてデータ処理部212から、欠落した時刻の差分データの再送要求を実行する指示を受けたとき(以下、このクライアントがクライアント21であるとする)、他の全てのクライアント22~2Nに対して、欠落した時刻を示す差分データの再送事前要求をブロードキャスト又はマルチキャスト通信で送信する。
【0047】
クライアント21以外のクライアント22~2Nの再送要求処理部213は、クライアント21から、欠落した時刻の差分データの再送事前要求を受信したとき、自身の差分バッファ216に当該欠落した時刻の差分データが格納されているかを確認する。
【0048】
クライアント22~2Nの再送要求処理部213は、自身の差分バッファ216に当該欠落した時刻の差分データが格納されていると判定した場合、クライアント21の再送要求処理部213に対して、当該欠落した時刻の差分データを再送できることを示す再送可能応答をユニキャスト通信で送信する。クライアント22~2Nの再送要求処理部213は、自身の差分バッファ216に当該欠落した時刻の差分データが格納されていないと判定した場合、クライアント21に対して可能応答を送信しない。
【0049】
図5Bは、再送実施指示と差分データ再送処理の概略を示す説明図である。クライアント21(ある時刻の差分データが欠落していると判定したクライアント)の再送要求処理部213は、最も早く受信した可能応答を送信したクライアント(ここでは、クライアント22とする)を、再送クライアントに決定し、再送実施指示をクライアント22のみにユニキャスト通信で送信する。
【0050】
クライアント22の再送要求処理部223は、クライアント21から再送実施指示を受信したら、自身の差分バッファ216に保持している、再送事前要求が示す時刻の差分データを、クライアント21にユニキャスト通信で送信する。
【0051】
クライアント21のデータ処理部212は、クライアント22から再送された当該時刻の差分データを受信し、自身の受信バッファ215に一旦格納する。その後、クライアント21のデータ処理部212は、
図4のフローチャートで説明したように、クライアント22から再送された当該時刻の差分データに対して判定処理を行い、差分データの欠落がなければ、データ復元部211に復元指示を送信するる。データ復元部211は、データ処理部212から、復元指示を受けたとき、受信バッファ215に格納されている差分データを共有データに反映することで、最新状態の共有データを復元する。
【0052】
本実施例のデータ共有システムにおいて、差分データの欠落があったと判定したクライアントは、他のクライアントに対して再送事前要求を送信し、最も早く再送可能応答を送信したクライアントへ当該欠落した差分データの再送を指示し、最も早く再送可能応答を送信したクライアントが、差分データの欠落があったと判定したクライアントへと、当該欠落した差分データを送信する。つまり、本実施例のデータ共有システムにおいて、差分データの欠落があったと判定したクライアントに対して、サーバ1が共有データを再送する必要がないため、サーバ1の処理負荷及び通信負荷を軽減することができる。
再送要求処理部213は、欠落した時刻の差分データの再送要求を実行する指示をデータ処理部212から受信したと判定した場合(S71:YES)、自身が再送要求を送信する前に、ランダム時間待つ(S72)。再送要求処理部213は、ランダム時間待っていた間に、他のクライアントから同じ時刻(欠落した時刻)の差分データの再送要求を受信したかを判定する(S73)。
再送要求を受信したクライアントの再送要求処理部213は、再送要求が示す時刻の差分データが、自身の差分バッファ216に格納されていると判定した場合(S75:YES)、当該時刻の差分データを再送する前に、ランダム時間に待つ(S76)。再送要求を受信したクライアントの再送要求処理部213は、ランダム時間待っていた間に他のクライアントから同じ時刻の差分データを受信したかを判定する(S77)。
上記したように本実施例では、同じ時刻の差分データが欠落している複数のクライアントが存在しても、ランダム時間待っている間に他のクライアントからの再送要求を受信しなかったクライアントのみが、再送要求を他の全てのクライアントに送信する。さらに、再送要求を受信したクライアントであって、再送要求が示す時刻の差分データを自身の差分バッファ216が保持しているクライアント、が複数存在しても、ランダム時間待っている間に他のクライアントからの当該差分データを受信しなかったクライアントのみが、当該差分データを他の全てのクライアントに再送する。
つまり、本実施例では、1つのクライアントが再送要求を送信し、他の1つのクライアントが再送処理を実行するだけで、同じ時刻の差分データが欠落している複数のクライアントが当該差分データの再送を受けることができ、ひいてはネットワークの通信量を低減させることができるし、再送要求を送信しないクライアント及び再送処理を実行しないクライアントの処理負荷を低減させることもできる。