IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2023-62467データ共有システム及びデータ共有方法
<>
  • 特開-データ共有システム及びデータ共有方法 図1A
  • 特開-データ共有システム及びデータ共有方法 図1B
  • 特開-データ共有システム及びデータ共有方法 図2
  • 特開-データ共有システム及びデータ共有方法 図3
  • 特開-データ共有システム及びデータ共有方法 図4
  • 特開-データ共有システム及びデータ共有方法 図5A
  • 特開-データ共有システム及びデータ共有方法 図5B
  • 特開-データ共有システム及びデータ共有方法 図6
  • 特開-データ共有システム及びデータ共有方法 図7A
  • 特開-データ共有システム及びデータ共有方法 図7B
  • 特開-データ共有システム及びデータ共有方法 図8
  • 特開-データ共有システム及びデータ共有方法 図9A
  • 特開-データ共有システム及びデータ共有方法 図9B
< >
(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の差分データの一例である。
図3】実施例1における差分データ受信処理と受信判定処理の概略を示す説明図である。
図4】実施例1におけるデータ処理部による処理の一例を示すフローチャートである。
図5A】実施例1における再送事前要求処理と再送可能応答処理の概略を示す説明図である。
図5B】実施例1における再送実施指示と差分データ再送処理の概略を示す説明図である。
図6】実施例2における再送指示と差分データ再送処理の概略を示す説明図である。
図7A】実施例2における各クライアントの再送要求処理部による再送要求の一例を示すフローチャートである。
図7B】実施例2における再送要求を受信した各クライアントの再送要求処理部による再送処理の一例を示すフローチャートである。
図8】実施例3におけるサーバがクライアントに送信する時刻Tの差分データの一例である。
図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を生成した時刻であってもよい)を示す時刻要素Tを含むヘッダ領域を、抽出した差分に付加して差分データ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の差分データ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の差分データを正常に受信できなかったと判定して、受信したデータを破棄し(S43)、即ち受信バッファ215から、時刻Tの差分データを削除して、図4の処理を終了する。
【0037】
データ処理部212は、計測したデータサイズと、ヘッダ領域に含まれるデータサイズ152と、が等しいと判定した場合(S41:YES)、受信した時刻TNの差分データからハッシュ値を計算し、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153とが一致するか判定する(S42)。データ処理部212は、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153と、が一致しないと判定した場合(S42:NO)、時刻Tの差分データを正常に受信できなかったと判定して、受信したデータを破棄し(S43)、即ち受信バッファ215から時刻Tの差分データを削除して、図4の処理を終了する。
【0038】
データ処理部212は、計算したハッシュ値と、ヘッダ領域に含まれるハッシュ値153と、が一致すると判定した場合(S42:YES)、時刻Tの差分データを正常に受信できたと判定し、時刻Tの差分データを差分バッファ216にコピーする(S44)。
【0039】
データ処理部212は、差分バッファ216に前回コピーした差分データと、今回コピーした時刻Tの差分データと、を比較して、差分データの欠落があるかを判定する(S45)。具体的には、例えば、時刻データ151として差分データの送信順を示すシーケンス番号が格納されている場合には、データ処理部212は、前回コピーした差分データのシーケンス番号と、今回コピーした時刻Tの差分データのシーケンス番号と、が連続していると判定した場合に差分データの欠落がないと判定し、連続していないと判定した場合に差分データの欠落があると判定する。
【0040】
また、例えば、時刻データ151としてタイムスタンプが格納されている場合、前回コピーした差分データのタイムスタンプが示す時刻と、今回コピーした時刻Tの差分データのタイムスタンプが示す時刻と、の差が、所定値以内であると判定した場合に差分データの欠落がないと判定し、当該所定値より大きいと判定した場合に差分データの欠落が多いと判定する。
【0041】
データ処理部212は、差分データの欠落があると判定した場合(S45:YES)、差分バッファ216に前回コピーした差分データの時刻データ151と、今回コピーした時刻Tの差分データの時刻データ151と、に基づいて、欠落した時刻の差分データを特定し、欠落した時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信して(S46)、図4の処理を終了する。
【0042】
具体的には、例えば、時刻データ151として差分データの送信順を示すシーケンス番号が格納されている場合には、ステップS46において、データ処理部212は、前回コピーした差分データのシーケンス番号と、今回コピーした時刻Tの差分データのシーケンス番号と、の間のシーケンス番号が示す時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信する。
【0043】
また、例えば、時刻データ151としてタイムスタンプが格納されている場合、ステップS46において、データ処理部212は、前回コピーした差分データのタイムスタンプが示す時刻と、今回コピーした時刻Tの差分データのタイムスタンプが示す時刻と、の間の時刻の差分データの再送要求を実行する指示を再送要求処理部213に送信する。
【0044】
データ処理部212は、差分データの欠落がないと判定した場合(S45:NO)、受信バッファ215に格納されている前周期の(つまり時刻TN-1の)差分データを削除し(S47)、データ復元部211に復元指示を送信して(S48)、図4の処理を終了する。
【0045】
なお、データ復元部211は、データ処理部212から復元指示を受信したら、受信バッファ215に格納している時刻TNの差分データを、共有データ214に反映し(受信バッファ215に格納している時刻Tの差分データのデータ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の処理負荷及び通信負荷を軽減することができる。
【実施例0053】
本実施例では、欠落した差分データがあると判定したクライアントと、他のクライアントと、の間の通信が実施例1とは異なる。以下、主に実施例1との相違点を説明する。本実施例では、図5A及び図5Bで説明した処理に代えて、以下の図6図7A、及び図7Bの処理が実行される。
【0054】
図6は、再送指示と差分データ再送処理の概略を示す説明図である。再送要求処理部213は、ステップS46においてデータ処理部212から、欠落した時刻の差分データの再送要求を実行する指示を受けたとき(以下、このクライアントがクライアント21であるとする)、ランダム時間待っても他のクライアント22~2Nのいずれからも欠落した時刻を示す差分データの再送要求を受信しない場合、他の全てのクライアント22~2Nに対して、欠落した時刻を示す差分データの再送要求をブロードキャスト又はマルチキャスト通信で送信する。
【0055】
再送要求を受けたクライアント22~2Nは、ランダム時間待っても他のクライアントのいずれからも欠落した時刻の差分データを受信しない場合、他の全てのクライアントに対して、欠落した時刻の差分データをブロードキャスト又はマルチキャスト通信で送信する。図6で説明した各クライアントによる処理の詳細を図7A及び図7Bを用いて説明する。
【0056】
図7Aは、各クライアントの再送要求処理部213による再送要求の一例を示すフローチャートである。再送要求処理部213は、欠落した時刻の差分データの再送要求を実行する指示をデータ処理部212から受信したか(ステップS46において再送要求指示が送信されたか)を判定する(S71)。再送要求処理部213は、欠落した時刻の差分データの再送要求を実行する指示をデータ処理部212から受信していないと判定した場合(S71:NO)、図7Aの処理を終了する。
【0057】
再送要求処理部213は、欠落した時刻の差分データの再送要求を実行する指示をデータ処理部212から受信したと判定した場合(S71:YES)、自身が再送要求を送信する前に、ランダム時間待つ(S72)。再送要求処理部213は、ランダム時間待っていた間に、他のクライアントから同じ時刻(欠落した時刻)の差分データの再送要求を受信したかを判定する(S73)。
【0058】
再送要求処理部213は、ランダム時間待っていた間に、他のクライアントから同じ時刻の差分データの再送要求を受信したと判定した場合(S73:YES)、再送要求を送信することなく、図7Aの処理を終了する。
【0059】
再送要求処理部213は、ランダム時間待っても、他のクライアントから同じ時刻の差分データの再送要求を受信しなかったと判定した場合(S73:NO)、マルチキャスト又はブロードキャストで他の全てのクライアントに、当該時刻を示す差分データの再送要求を送信して(S74)、図7Aの処理を終了する。なお、図7Aにおいて、ランダム時間の代わりに、クライアントごとに予め定められた異なる時間が用いられてもよい。
【0060】
図7Bは、再送要求を受信した各クライアントの再送要求処理部213による再送処理の一例を示すフローチャートである。再送要求を受信したクライアント(図6の例ではクライアント22~2N)の再送要求処理部213は、再送要求が示す時刻の差分データが、自身の差分バッファ216に格納されているかを判定する(S75)。再送要求を受信したクライアントの再送要求処理部213は、再送要求が示す時刻の差分データが、自身の差分バッファ216に格納されていないと判定した場合(S75:NO)、図7Bの処理を終了する。
【0061】
再送要求を受信したクライアントの再送要求処理部213は、再送要求が示す時刻の差分データが、自身の差分バッファ216に格納されていると判定した場合(S75:YES)、当該時刻の差分データを再送する前に、ランダム時間に待つ(S76)。再送要求を受信したクライアントの再送要求処理部213は、ランダム時間待っていた間に他のクライアントから同じ時刻の差分データを受信したかを判定する(S77)。
【0062】
再送要求を受信したクライアントの再送要求処理部213は、ランダム時間待っていた間に他のクライアントから同じ時刻の差分データを受信したと判定した場合(S77:YES)、再送処理を実施することなく図7Bの処理を終了する。
【0063】
再送要求を受信したクライアントの再送要求処理部213は、ランダム時間待っていた間に他のクライアントから同じ時刻の差分データを受信していないと判定した場合(S77:NO)、当該時刻の差分データを、マルチキャスト又はブロードキャスト通信で全クライアントに送信する再送処理を実行して(S78)、図7Bの処理を終了する。なお、再送要求処理部213がデータ処理部212から再送要求を実行する指示を受信していないものの、再送処理によって差分データを受信したクライアントは、再送処理によって受信した差分データを破棄してもよい。
【0064】
上記したように本実施例では、同じ時刻の差分データが欠落している複数のクライアントが存在しても、ランダム時間待っている間に他のクライアントからの再送要求を受信しなかったクライアントのみが、再送要求を他の全てのクライアントに送信する。さらに、再送要求を受信したクライアントであって、再送要求が示す時刻の差分データを自身の差分バッファ216が保持しているクライアント、が複数存在しても、ランダム時間待っている間に他のクライアントからの当該差分データを受信しなかったクライアントのみが、当該差分データを他の全てのクライアントに再送する。
【0065】
つまり、本実施例では、1つのクライアントが再送要求を送信し、他の1つのクライアントが再送処理を実行するだけで、同じ時刻の差分データが欠落している複数のクライアントが当該差分データの再送を受けることができ、ひいてはネットワークの通信量を低減させることができるし、再送要求を送信しないクライアント及び再送処理を実行しないクライアントの処理負荷を低減させることもできる。
【実施例0066】
本実施例では、差分データ抽出部13が、前周期の共有データ(OLD)12と最新状態の共有データ(NEW)11の差分がないと判定した場合、データ送信部14は、差分データとして空データを送信する代わりに、以降に差分データがないことをクライアント21~2Nに通知する。
【0067】
図8は、サーバ1がクライアント21~2Nに送信する時刻Tの差分データ15の一例である。図2との相違点を説明する。時刻TNの差分データ15は、EoD(End of Data)フラグ155をさらに含む。EoDフラグは、例えば、差分データ15のヘッダ領域に格納されている。
【0068】
EoDフラグは、当該差分データ15よりも後に差分データが送信されるか否かを示すフラグである。差分データ抽出部13が、前周期の共有データ(OLD)12と最新状態の共有データ(NEW)11の差分がないと判定した場合にのみEoDフラグ155がONに設定される。
【0069】
EoDフラグ155が設定されることにより、サーバ1は、差分データがない場合に空データを送信する必要がなくなり、サーバとクライアントによる処理負荷とネットワークの通信量とを低減することができる。
【0070】
なお、クライアント21~2Nは、EoDフラグ155がONである差分データを受信した場合、以後に差分データがないと判定する。また、クライアント21~2Nは、例えば、ステップS45において、最後に受信した差分データのEoDフラグ155がオフであるにも関わらず当該差分データを受信してから所定時間が経過しても次の差分データを受信していないと判定した場合に、データが欠落したと判定する。これにより、クライアント21~2Nは、EoDフラグ155がONであるデータが欠落した場合であっても、再送要求を実行することができる。
【実施例0071】
実施例1では、図1に示したように、全クライアント21~2Nそれぞれの差分バッファ216が全ての時刻の差分データを保持するようにしているが、本実施例では、差分バッファ216がデータを保持する方式の別例を説明する。
【0072】
図9Aは、クライアント21~2Nそれぞれの差分バッファ216が差分データを保持する方式の一例を示す説明図である。図9Aの例では、各クライアント21が保持する差分データが重複しないように分散して、差分データが格納されている。これにより、各クライアントが全ての差分データを保持する場合(実施例1)と比べて、各クライアントが保持する差分データのデータ量が1/Nとなるため、再送対応できる期間がN倍になる。
【実施例0073】
本実施例では、差分バッファ216がデータを保持する方式のさらなる別例を説明する。図9Bは、クライアント21~2Nそれぞれの差分バッファ216が差分データを保持する方式の一例を示す説明図である。図9Bの例では、クライアントの台数Nが偶数であり、同じ差分データを2つのクライアントの組み合わせごとに保持し、かつ異なる組み合わせのクライアントは重複しないように差分データを分散して保持する。
【0074】
これにより、各クライアントが全ての差分データを保持する場合(実施例1)と比べて、再送対応できる期間が長くなり、さらに各クライアント21が保持する差分データが重複しないように分散する場合(実施例4)と比べて、冗長性を得ることができる。
【0075】
なお、図9Bの例では、2つのクライアントの組み合わせごとに差分データを分散して保持しているが、クライアントの台数Nが任意の正数Mの倍数であり、同じ差分データをM台のクライアントの組み合わせごとに保持し、かつ異なる組み合わせのクライアントは重複しないように差分データを分散して保持するようにしてもよい。
【実施例0076】
本実施例では、サーバ1がクライアント21~2Nと同様の差分バッファ216有する。さらに、サーバ1が、実施例1又は実施例2におけるクライアントと同様の処理により、差分データの再送要求を受け付け、再送処理も実行する。これにより、差分データを保持する端末数が多くなり、再送対応できる期間が長くなる。
【0077】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加や削除、置換をすることが可能である。
【0078】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0079】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0080】
1 サーバ、15 差分データ、16 差分バッファ、21~2N クライアント、101 CPU、102 補助記憶装置、103 メモリ、107 通信I/F、151 時刻データ、152 データサイズ、153 ハッシュ値、154 EoDフラグ、154 データ、211 データ復元部、212 データ処理部、213 再送要求処理部、215 受信バッファ、216 差分バッファ
図1A
図1B
図2
図3
図4
図5A
図5B
図6
図7A
図7B
図8
図9A
図9B