(57)【要約】【課題】【解決手段】  本開示は、各データエントリが、データエントリＩＤ、データエントリバージョン識別子、およびノードまたは他のノードの動作情報を表すデータペイロードを含む、複数のデータエントリを格納するように構成されたデータ記憶部（１０１）と、処理部（１０２）と、他のノードと通信する第１のインタフェース（１０３）と、を含む、ノード（１１、１２、１３、１４）を提供する。ノードは、データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のデータパケットを、他のノードに送信し、他のノードにより送信された第２のデータパケットを受信し、第２のデータパケットは、他のノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、第２のデータパケットの受信したデータエントリバージョン識別子を、第２のデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成される。【選択図】図１
2021519539.tif 000002
【特許請求の範囲】
【請求項１】
各データエントリが、データエントリＩＤ、データエントリバージョン識別子、およびノードまたは他のノードの動作情報を表すデータペイロードを含む、複数のデータエントリを格納するように構成されたデータ記憶部（１０１）と、
処理部（１０２）と、
前記他のノードと通信する第１のインタフェース（１０３）と、を含み、
前記ノードは、
前記データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、前記第１のインタフェース（１０３）を介して、他のノードに送信し、
前記第１のインタフェース（１０３）を介して、前記他のノードにより送信された第２のハートビートデータパケットを受信し、前記第２のハートビートデータパケットは、前記他のノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、
前記第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、前記第２のハートビートデータパケットと同じデータエントリＩＤを有する前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成され、
前記ノードは、その記憶部に格納されたデータエントリが前記他のノードの対応するデータエントリよりも新しいと判断した場合、前記ノードは、データ記憶部内の対応するデータエントリのデータエントリＩＤ、データエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む第１の同期データパケットを前記他のノードに送信するように構成され、
前記第１の同期データパケットのサイズは、前記第１のハートビートデータパケットのサイズより大きい、
データ通信ネットワークのノード（１１、１２、１３、１４）。
【請求項２】
前記ノード（１１、１２、１３、１４）は、さらに、前記他のノードのデータ記憶部内の第２のデータエントリの、第２のデータエントリＩＤ、第２のデータエントリバージョン識別子、および第２のデータペイロードの少なくとも一部、を含む第２の同期データパケットを受信するように構成され、
前記第２の同期データパケットのサイズは、前記第２のハートビートデータパケットのサイズよりも大きく、
前記第２の同期データパケットの前記第２のデータエントリバージョン識別子が、前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、前記第２のデータペイロードの一部と前記第２の同期データパケットの前記第２のデータエントリバージョン識別子に応じて、前記ノード（１１、１２、１３、１４）は、前記データ記憶部内の前記対応するデータエントリの前記データペイロードおよび前記データエントリバージョン識別子を更新するように構成される、
請求項１に記載のノード（１１、１２、１３、１４）。
【請求項３】
前記ノード（１１、１２、１３、１４）は、そのデータペイロードの変更および／またはそのデータバージョン識別子の変更に基づいて、その記憶部に格納された前記データエントリが、前記他のノードの前記対応するデータエントリよりも新しいと決定するように構成される請求項１又は２に記載のノード（１１、１２、１３、１４）。
【請求項４】
前記ノード（１１、１２、１３、１４）は、前記第２のハートビートデータパケットの前記データエントリバージョン識別子が、前記データ記憶部内の前記対応するデータエントリの前記データエントリバージョン識別子よりも古いと示されることに基づいて、その記憶部に格納された前記データエントリが、前記他のノードの前記対応するデータエントリよりも新しいと決定するように構成される請求項１又は２に記載のノード（１１、１２、１３、１４）。
【請求項５】
前記ノード（１１、１２、１３、１４）は、前記第１の同期データパケットが前記データペイロードの一部を含み、前記一部がデータペイロードのサブセットであるように構成され、
前記第１の同期データパケットは、前記データエントリのための総データペイロードサイズの表示および／またはデータペイロード部分順序表示をさらに含む、
請求項１〜４いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項６】
前記ノードは、データエントリＩＤまたはデータエントリＩＤの範囲など、所定の基準を満たすデータエントリに対してのみ前記第１のハートビートデータパケットを送信するように構成される、請求項１〜５いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項７】
前記ノードは、前記第２のハートビートデータパケットの前記データエントリＩＤが、データエントリＩＤまたはデータエントリＩＤの範囲など、所定の基準を満たしている場合にのみ、前記第２のハートビートデータパケットを受信するように構成される、請求項１〜６いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項８】
外部ユニット（１５、１６）と通信する第２のインタフェース（１０４）をさらに備える、請求項１〜７いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項９】
前記ノード（１１、１２、１３、１４）は、
前記データ記憶部内のデータエントリのデータペイロードを更新するために、前記第２のインタフェース（１０４）を介して前記外部ユニット（１５、１６）から第１の信号を受信するように、および／または
前記外部ユニット（１５、１６）を制御するために、前記第２のインタフェース（１０４）を介して前記外部ユニット（１５、１６）に第２の信号を提供するように、
さらに構成される請求項８に記載のノード（１１、１２、１３、１４）。
【請求項１０】
前記第１の信号が受信されると、前記ノードは、
前記第１の信号に従って、前記データ記憶部内の前記データエントリの前記データペイロードを更新し、
更新されたデータエントリの前記データエントリバージョン識別子を更新して、より新しいバージョンを示す、
ように構成される請求項９に記載のノード（１１、１２、１３、１４）。
【請求項１１】
前記データエントリバージョン識別子は、カウンタまたはタイムスタンプを含む、請求項１〜１０いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項１２】
前記動作情報は、ノード構成などの動作モード、および／またはセンサ状態又はエラー状態などの動作状態を含む、請求項１〜１１いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項１３】
前記ノードは、前記ノードと前記他のノードとは異なる少なくとも１つのノードに、前記第１のハートビートデータパケットを送信するように構成される、
請求項１〜１２いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項１４】
前記ノードは、
前記第１のインタフェースを介して、前記少なくとも１つのノードにより送信されたハートビートデータパケットを受信し、前記ハートビートデータパケットは、前記少なくとも１つのノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、
前記ハートビ―トデータパケットの受信したデータエントリバージョン識別子を、前記ハートビートデータパケットと同じデータエントリＩＤを有する前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成され、
前記ノードは、その記憶部に格納された前記データエントリが前記少なくとも１つのノードの前記対応するデータエントリよりも新しいと判断した場合、前記ノードは、前記データ記憶部内の前記対応するデータエントリの前記データエントリＩＤ、前記データエントリバージョン識別子、および前記データペイロードの少なくとも一部を含む同期データパケットを前記少なくとも１つのノードに送信するように構成され、
前記同期データパケットのサイズは、前記第１のハートビートデータパケットのサイズより大きい、
請求項１３いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項１５】
前記データペイロードはさらに、前記ノードおよび前記他のノードとは異なる少なくとも１つのノードの動作情報を表す、
請求項１〜１４いずれか一項に記載のノード（１１、１２、１３、１４）。
【請求項１６】
第１および第２のノード（１１、１２、１３、１４）を含むネットワークシステム（１）であって、
前記第１のノードは、
各第１のデータエントリが、データエントリＩＤ、データエントリバージョン識別子、および前記第１のノードまたは前記第２のノードの動作情報を表すデータペイロードを含む、複数の第１のデータエントリを格納するように構成された第１のデータ記憶部と、
第１の処理部と、
前記第２のノードと通信する第１のインタフェースと、を含み、
前記第２のノードは、
各第２のデータエントリが、データエントリＩＤ、データエントリバージョン識別子、および前記第１のノードまたは前記第２のノードの動作情報を表すデータペイロードを含む、複数の第２のデータエントリを格納するように構成された第２のデータ記憶部と、
第２の処理部と、
前記第１のノードと通信する第２のインタフェースと、を含み、
前記第１のノードは、
前記第１のデータ記憶部内の第１のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、前記第１のインタフェースを介して、前記第２のノードに送信し、
前記第１のインタフェースを介して、前記第２のノードにより送信された第２のハートビートデータパケットを受信し、前記第２のデータパケットは、前記第２のノードの第２データエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、
前記第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、前記第２のデータパケットと同じデータエントリＩＤを有する前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成され、
前記第１のノードは、その記憶部に格納された前記データエントリが前記第２のノードの前記対応するデータエントリよりも新しいと判断した場合、前記第１のノードは、
前記データ記憶部内の前記対応する第１のデータエントリの前記データエントリＩＤ、前記データエントリバージョン識別子、および前記データペイロードの少なくとも一部を含む第１の同期データパケットを前記第２のノードに送信するよう構成され、
前記第１の同期データパケットのサイズは、前記第１のハートビートデータパケットのサイズより大きく、
前記第２のノードは、
前記第２のノードの前記第２のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む前記第２のハートビートデータパケットを送信し、
前記第１のデータ記憶部内の前記対応する第１のデータエントリの前記データエントリＩＤ、前記データエントリバージョン識別子、および前記データペイロードの少なくとも一部を含む第１の同期データパケットを受信し、
前記第１の同期データパケットの受信したデータエントリバージョン識別子を、前記第２のデータ記憶部内の前記第２のデータエントリのデータエントリバージョン識別子と比較するよう構成され、
前記第１の同期データパケットの前記データエントリバージョン識別子が、前記第２のデータ記憶部内の前記第２のデータエントリの前記第２のデータエントリバージョン識別子よりも新しいと示される場合、および前記第１の同期データパケットが、前記第２のデータ記憶部の前記第２のデータエントリと同じデータエントリＩＤに関連付けられたデータペイロードの一部を含む場合、前記第２のノードは、
前記第１の同期データパケットの前記データペイロードの一部および前記データエントリバージョン識別子に従って、前記第２のデータ記憶部内の前記第２のデータエントリの前記データペイロードおよび前記データエントリバージョン識別子を更新する、ように構成される、ネットワークシステム。
【請求項１７】
ネットワークシステム（１）の複数のノード（１１、１２、１３、１４）間のデータ同期の方法であって、
各ノード（１１、１２、１３、１４）は、
各データエントリが、データエントリＩＤ、データエントリバージョン識別子、およびノードまたは他のノードの動作情報を表すデータペイロードを含む、複数のデータエントリを格納するように構成されたデータ記憶部（１０１）と、
処理部（１０２）と、
前記他のノードと通信する第１のインタフェース（１０３）と、を含み、
前記方法は、各ノードにおいて、
前記データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、前記第１のインタフェースを介して、他のノードに送信し（ｓ１）、
前記第１のインタフェースを介して、前記他のノードにより送信された第２のハートビートデータパケットを受信し、前記第２のデータパケットは、前記他のノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み（ｓ２）、
前記第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、前記第２のハートビートデータパケットと同じデータエントリＩＤを有する前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較する（ｓ３）、ことを含み、
前記ノードは、その記憶部に格納された前記データエントリが前記他のノードの前記対応するデータエントリよりも新しいと判断した場合、前記方法は、
前記データ記憶部内の前記対応するデータエントリの前記データエントリＩＤ、前記データエントリバージョン識別子、および前記データペイロードの少なくとも一部を含む第１の同期データパケットを前記他のノードに送信し（ｓ４）、
前記第１の同期データパケットのサイズは、前記第１のハートビートデータパケットのサイズより大きい、方法。
【請求項１８】
前記他のノードのデータ記憶部内の第２のデータエントリの、第２のデータエントリＩＤ、第２のデータエントリバージョン識別子、および第２のデータペイロードの少なくとも一部、を含む第２の同期データパケットを受信し、
前記第２の同期データパケットのサイズは、前記第２のデータパケットのサイズよりも大きく、
前記第２の同期データパケットの前記第２のデータエントリバージョン識別子が、前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、前記方法は、前記第２のデータペイロードの一部と前記第２の同期データパケットの前記第２のデータエントリバージョン識別子に応じて、前記データ記憶部（１０１）内の前記対応するデータエントリの前記データペイロードおよび前記データエントリバージョン識別子を更新する、
請求項１７に記載の方法。
【請求項１９】
前記第１のハートビートデータパケットを、前記ノードおよび前記他のノードとは異なる少なくとも１つのノードに送信する、ことをさらに含む、
請求項１７又は１８に記載の方法。
【請求項２０】
前記第１のインタフェースを介して、前記少なくとも１つのノードにより送信されたハートビートデータパケットを受信し、前記ハートビートデータパケットは、前記少なくとも１つのノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、
前記ハートビートデータパケットの受信したデータエントリバージョン識別子を、前記ハートビートデータパケットと同じデータエントリＩＤを有する前記データ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較する、ことをさらに含み、
前記ノードは、その記憶部に格納された前記データエントリが前記少なくとも１つのノードの前記対応するデータエントリよりも新しいと判断した場合、前記方法は、
前記データ記憶部内の前記対応するデータエントリの前記データエントリＩＤ、前記データエントリバージョン識別子、および前記データペイロードの少なくとも一部を含む同期データパケットを前記少なくとも１つのノードに送信し、
前記同期データパケットのサイズは、前記第１のハートビートデータパケットのサイズより大きい、
請求項１９に記載の方法。
【請求項２１】
前記データペイロードは、前記ノードおよび前記他のノードとは異なる少なくとも１つのノードの動作情報をさらに表す、請求項１７〜２０いずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本文書は、ノード、ネットワークシステム、およびネットワークシステムの複数のノード間のデータ同期方法に関する。
【０００２】
ノードは、異なるノード間の自動データ同期を提供するネットワークシステム、すなわち、人間の介入なしに、および中央制御ノードなしに、データがノード間で同期されるネットワークシステムでの使用に適する。
【背景技術】
【０００３】
ネットワークシステムは、リソースまたは情報を共有するために一緒にリンクされた複数のノードを含むシステムである。データリンクは通常、光ケーブルなどの有線メディア、またはＷｉ−Ｆｉなどの無線メディアを介して確立される。ネットワークシステムは便利で効率的なデータ交換で知られているため、コンピュータネットワーク、電気通信、クラウドコンピューティング、テレビネットワークなどの我々の日常生活で広く使用されている。他のアプリケーションには、製造および／または倉庫保管に関連するアイテムの取り扱いと移動を制御する産業タイプの制御システムが含まれる。さらに他のアプリケーションには、車両の様々な構成要素間の通信のための、車両の内部通信ネットワークが含まれる。
【０００４】
ネットワークシステムは通常、他のノードに接続された通信チャネルを介して情報を作成、受信、または送信することができる複数のノードを含む。
【０００５】
ファイル同期など、ネットワークシステムの様々なアプリケーションでは、ネットワークシステムの様々なノード間でデータの整合性を長期間維持することが基本となる。従って、ネットワークシステムのソースノードからターゲットノードへ、またはその逆において、特定のデータ間の継続的な同期が必要である。例えば、あるノードに他のノードの誤動作が通知された場合、異常ノードへのデータの送信を停止し、他の機能ノードにデータをルーティングして、データが失われたり、データ送信が遅れたりしないようにし得る。その結果、通常、中央制御ノードと相当量の労力を要することになる、異常ノードによるネットワークシステム内のノードのデータ処理容量の再調整の必要性が回避され得、ネットワークシステムの効率とロバスト性を向上させることができる。
【０００６】
さらに、ロバストな手順でノードを再構成できることが望ましい。
【０００７】
したがって、人間の介入を減らし、ネットワークシステムの効率とロバスト性を向上させることができるノードが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本開示の目的は、改善されたノード、および特に人間の介入を減らしてネットワークシステムの効率およびロバスト性を改善することができるノードを提供することである。
【０００９】
本発明は、添付の独立請求項によって定義され、実施形態は、添付の従属請求項および以下の説明および図面に記載されている。
【００１０】
第１の態様によれば、各データエントリが、データエントリＩＤ、データエントリバージョン識別子、およびノードまたは他のノードの動作情報を表すデータペイロードを含む、複数のデータエントリを格納するように構成されたデータ記憶部を備えたノードが提供される。ノードは、処理部と、前記他のノードと通信する第１のインタフェースとをさらに備える。ノードは、データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、第１のインタフェースを介して、他のノードに送信するよう構成される。ノードは、第１のインタフェースを介して、前記他のノードにより送信された第２のハートビートデータパケットを受信するよう構成され、第２のハートビートデータパケットは、前記他のノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む。ノードは、第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、第２のハートビートデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成される。ノードは、その記憶部に格納されたデータエントリが前記他のノードの対応するデータエントリよりも新しいと判断した場合、ノードは、データ記憶部内の対応するデータエントリのデータエントリＩＤ、データエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む第１の同期データパケットを前記他のノードに送信するように構成される。第１の同期データパケットのサイズは、第１のハートビートデータパケットのサイズより大きい。
【００１１】
第１のデータパケットは、本質的に、データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子からなり得る。
【００１２】
データエントリＩＤおよび１つまたは複数のデータエントリの対応するデータエントリバージョン識別子のみを含むことにより、第１のデータパケットは、少量のデータのみでデータエントリのデータエントリバージョン識別子をブロードキャストするために使用され得る。
【００１３】
あるノードが他のノードの同期を引き起こす場合、送信された第１の同期データパケットは、データペイロードの一部など、同期用の追加データを含むことにより、より大きなサイズになる場合がある。
【００１４】
送信されたデータパケットの内容および／またはサイズを制御する利点は、他のすべてのデータパケットは比較的小さいサイズである一方、同期を引き起こすノードのみがより大きなサイズのデータパケットを送信できるため、ネットワークシステムが、多数のノード、すなわち、ノード間で同時に通信される多数のデータパケットを含んでいた場合であっても、帯域幅が狭いデータ通信チャネルは、ノード間のデータパケットの通信を処理できるため、ネットワークシステムを実装するためのコストと複雑さも軽減される。
【００１５】
さらに、本開示の方法およびノードの柔軟性は、送信および／または受信されたデータパケットの数またはサイズが大きいことによって引き起こされる問題を処理するために必要な変更なしに、多数のノードを含むネットワークシステムで使用できるように改善される。
【００１６】
複数の現在のノードを含むネットワークシステムに新しいノードを設置する必要がある場合、または既存のノードを再構成する必要がある場合、ノードは、「新しい」データエントリを有するノードにより引き起こされる同期によって、他のノードと自動的に同期され得る。従って、ネットワークシステム内の新しいノードの設置および既存のノードの再構成を容易にし得る。
【００１７】
本発明の１つのノードは、定期的に他のノードからハートビートデータパケットを送受信する。あるノードは、ノードの新しい操作情報など、他のノードよりも新しいデータエントリがあることを学習すると、同期データパケットを、古いデータエントリを有する他のノードに更新のために送信する。従って、同期サイクル中に２つのノード間で送信するために必要なデータパケットは２種類だけである。１）ハートビートデータパケット、および２）同期データパケット。
【００１８】
さらに、２つのノード間の同期は、一のノードが他のノードよりも新しいデータエントリを有することに気付いたときに、一のノードにより自動的に初期化できる。すなわち、本発明では、２つのノード間の同期を初期化するために特別な「同期の要求」は必要とされない。その結果、本発明の全てのノードは、同期を初期化するために同じ状態を有する。
【００１９】
また、一のノードが他のノードの同期を引き起こすために一時的な「マスタ」ノードとして機能し、「マスタ」ノードで同期するために他のノードが「スレーブ」ノードとして機能する場合も有利である。従って、データ同期は、中央制御ノードまたは人間の介入なしに、ネットワークシステム内の複数のノード間で達成することができる。
【００２０】
各ノードは、他のノードの同期を引き起こす「マスタ」ノードとして機能し得るため、フローティングマスタネットワークシステムが実現される。
【００２１】
ノードは、前記他のノードのデータ記憶部内の第２のデータエントリの、第２のデータエントリＩＤ、第２のデータエントリバージョン識別子、および第２のデータペイロードの少なくとも一部、を含む第２の同期データパケットを受信するようさらに構成され得る。第２の同期データパケットのサイズは、第２のデータパケットのサイズよりも大きい。第２の同期データパケットの第２のデータエントリバージョン識別子が、データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、第２のデータペイロードの一部と第２の同期データパケットの第２のデータエントリバージョン識別子に応じて、ノードは、データ記憶部内の対応するデータエントリのデータペイロードおよびデータエントリバージョン識別子を更新するように構成される。
【００２２】
ノードは、そのデータペイロードの変更および／またはそのデータバージョン識別子の変更に基づいて、その記憶部に格納されたデータエントリが、前記他のノードの対応するデータエントリよりも新しいと決定するように構成され得る。
【００２３】
ノードは、第２のハートビートデータパケットのデータエントリバージョン識別子が、データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも古いと示されることに基づいて、その記憶部に格納されたデータエントリが、前記他のノードの対応するデータエントリよりも新しいと決定するように構成され得る。
【００２４】
ノードは、第１の同期データパケットがデータペイロードの一部を含み、前記一部がそのデータエントリのデータペイロードのサブセットであるように構成され、第１の同期データパケットは、前記データエントリのための総データペイロードサイズの表示および／またはデータペイロード部分順序表示をさらに含む。
【００２５】
この場合、ノードは、２以上の同期パケットからのデータペイロードを併合するように構成され得る。このような併合は、データペイロードサイズおよびデータペイロード部分順序表示に基づいて実行され得る。
【００２６】
さらに、この場合、ノードは、データエントリに関して少なくとも２つ、好ましくは全ての同期パケットが受信された後にのみ、データエントリバージョン識別子を更新するように構成され得る。
【００２７】
ノードは、データエントリＩＤまたはデータエントリＩＤの範囲など、所定の基準を満たすデータエントリに対してのみ第１のハートビートデータパケットを送信するように構成され得る。
【００２８】
ノードは、第２のハートビートデータパケットの前記データエントリＩＤが、データエントリＩＤまたはデータエントリＩＤの範囲など、所定の基準を満たしている場合にのみ、前記第２のハートビートデータパケットを受信するように構成され得る。
【００２９】
ノードは、外部ユニットと通信する第２のインタフェースをさらに含み得る。
【００３０】
ノードは、データ記憶部内のデータエントリのデータペイロードを更新するために、第２のインタフェースを介して外部ユニットから第１の信号を受信するように、および／または外部ユニットを制御するために、前２のインタフェースを介して外部ユニットに第２の信号を提供するように、さらに構成され得る。
【００３１】
ノードは、第１の信号が受信されると、第１の信号に従って、データ記憶部内のデータエントリのデータペイロードを更新し、更新されたデータエントリのデータエントリバージョン識別子を更新して、より新しいバージョンを示す、ように構成され得る。
【００３２】
外部ユニットは、アクチュエータ、センサ、タグライタ、タグリーダ、カメラ、フォトアイ、押しボタン、キーボード、携帯電話、スマートデバイス、スキャナなどであり得る。
【００３３】
データエントリバージョン識別子はカウンタまたはタイムスタンプであり得る。
【００３４】
動作情報は、ノード構成などの動作モード、および／またはセンサ状態またはエラー状態などの動作状態を含み得る。
【００３５】
第１のインタフェースは、限定されないが、ＣＡＮ、イーサネット、ＰＲＯＦＩＢＵＳ、ＰｒｏｆｉＮＥＴ、Ｉ２Ｃ、ＳＰＩ、およびＲＳ−４８５で構成されるグループから選択されたプロトコルを使用するシリアルインタフェースなどの無線インタフェースまたは有線インタフェースを備えてもよい。
【００３６】
第２のインタフェースは、単一のインタフェース、または２つ以上の別個のインタフェースであり得る。
【００３７】
更新されたデータエントリのデータエントリバージョン識別子は、カウンタの値に対して演算動作を実行することにより更新し得、演算動作は、カウンタの値に、および／またはカウンタの値から所定の数を加算および／または減算することを含み、所定の数は１である。
【００３８】
動作情報は、動作モードおよび／または動作状態を含み得る。
【００３９】
ノードは、第１のハートビートデータパケットを、ノードおよび他のノードとは異なる少なくとも１つのノードに送信するように構成され得る。ノードは、アクセス可能な全てのノードに第１のハートビートデータパケットを送信するように構成され得る。
【００４０】
ノードは、第１のインタフェースを介して、前記少なくとも１つのノードにより送信されたハートビートデータパケットを受信し、前記ハートビートデータパケットは、前記少なくとも１つのノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、前記ハートビートデータパケットの受信したデータエントリバージョン識別子を、前記ハートビートデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するよう構成され得、ノードは、その記憶部に格納されたデータエントリが前記少なくとも１つのノードの対応するデータエントリよりも新しいと判断した場合、ノードは、前記少なくとも１つのノードに、記憶部内の対応するデータエントリの、データエントリＩＤおよびデータエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む同期データパケットを送信するように構成され、同期データパケットのサイズは、第１のハートビートデータパケットのサイズよりも大きい。
【００４１】
データペイロードは、ノードおよび前記他のノードとは異なる少なくとも１つのノードの動作情報をさらに表し得る。データペイロードは、全てのノードの動作情報を表し得る。第２の態様によれば、第１および第２のノードを含むネットワークシステムが提供される。
【００４２】
第１のノードは、各第１のデータエントリが、データエントリＩＤ、データエントリバージョン識別子、および第１のノードまたは第２のノードの動作情報を表すデータペイロードを含む、複数の第１のデータエントリを格納するように構成された第１のデータ記憶部と、第１の処理部と、第２のノードと通信する第１のインタフェースと、を含む。
【００４３】
第２のノードは、各第２のデータエントリが、データエントリＩＤ、データエントリバージョン識別子、および第１のノードまたは第２のノードの動作情報を表すデータペイロードを含む、複数の第２のデータエントリを格納するように構成された第２のデータ記憶部と、第２の処理部と、第１のノードと通信する第２のインタフェースと、を含む。
【００４４】
第１のノードは、第１のデータ記憶部内の第１のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、第１のインタフェースを介して、第２のノードに送信し、第１のインタフェースを介して、第２のノードにより送信された第２のハートビートデータパケットを受信し、第２のデータパケットは、第２のノードの第２データエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、第２のデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成される。第１のノードは、その記憶部に格納されたデータエントリが第２のノードの対応するデータエントリよりも新しいと判断した場合、第１のノードは、データ記憶部内の対応する第１のデータエントリのデータエントリＩＤ、データエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む第１の同期データパケットを第２のノードに送信するように構成され、第１の同期データパケットのサイズは、第１のハートビートデータパケットのサイズより大きい。
【００４５】
第２のノードは、第２のノードの第２のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第２のハートビートデータパケットを送信し、第１のデータ記憶部内の対応する第１のデータエントリのデータエントリＩＤ、データエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む第１の同期データパケットを受信し、第１の同期データパケットの受信したデータエントリバージョン識別子を、第２のデータ記憶部内の第２のデータエントリのデータエントリバージョン識別子と比較するよう構成され、第１の同期データパケットのデータエントリバージョン識別子が、第２のデータ記憶部内の第２のデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、および第１の同期データパケットが、第２のデータ記憶部内の第２のデータエントリと同じデータエントリＩＤに関連付けられたデータペイロードの一部を含む場合、データペイロードの一部と第１の同期データパケットのデータエントリバージョン識別子に応じて、第２のノードは、データ記憶部内の第２のデータエントリのデータペイロードおよびデータエントリバージョン識別子を更新するように構成される。
【００４６】
導入により定義された２つ以上のノードをネットワークシステムで使用し得る。
【００４７】
第１のノードは、外部ユニットと通信する第２のインタフェースをさらに含み得る。
第３の態様によれば、ネットワークシステムの一部を形成する複数のノード間のデータ同期の方法が提供され、各ノードは、複数のデータエントリを格納するように構成されたデータ記憶部を含み、各データエントリはデータエントリＩＤ、データエントリバージョン識別子、およびノードまたは他のノードの動作情報を表すデータペイロードを含み、処理ユニットおよび、前記他のノードと通信する第１のインタフェースを含む。
【００４８】
方法は、各ノードにおいて、データ記憶部内のデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のハートビートデータパケットを、第１のインタフェースを介して、他のノードに送信し、第１のインタフェースを介して、前記他のノードにより送信された第２のハートビートデータパケットを受信し、第２のデータパケットは、前記他のノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、第２のハートビ―トデータパケットの受信したデータエントリバージョン識別子を、第２のハートビートデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成される。ノードは、その記憶部に格納されたデータエントリが前記他のノードの対応するデータエントリよりも新しいと判断した場合、方法は、データ記憶部内の対応するデータエントリのデータエントリＩＤ、データエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む第１の同期データパケットを前記他のノードに送信することを含む。第１の同期データパケットのサイズは、第１のハートビートデータパケットのサイズより大きい。
【００４９】
第１および第２のハートビートデータパケットは、本質的に、それぞれのデータエントリＩＤおよびデータエントリバージョン識別子からなり得る。
【００５０】
方法は、他のノードのデータ記憶部内の第２のデータエントリの、第２のデータエントリＩＤ、第２のデータエントリバージョン識別子、および第２のデータペイロードの少なくとも一部、を含む第２の同期データパケットを受信し、第２の同期データパケットのサイズは、第２のデータパケットのサイズよりも大きく、第２の同期データパケットの第２のデータエントリバージョン識別子が、データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、第２のデータペイロードの一部と第２の同期データパケットの第２のデータエントリバージョン識別子に応じて、方法は、データ記憶部内の対応するデータエントリのデータペイロードおよびデータエントリバージョン識別子を更新するようにさらに構成される。
【００５１】
方法は、第１のハートビートデータパケットを、ノードおよび他のノードとは異なる少なくとも１つのノードに送信するようにさらに構成され得る。方法は、アクセス可能な全てのノードに第１のハートビートデータパケットを送信するようにさらに構成され得る。
方法は、第１のインタフェースを介して、前記少なくとも１つのノードにより送信されたハートビートデータパケットを受信し、前記ハートビートデータパケットは、前記少なくとも１つのノードのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含み、前記ハートビートデータパケットの受信したデータエントリバージョン識別子を、前記ハートビートデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するようさらに構成され得、ノードは、その記憶部に格納されたデータエントリが前記少なくとも１つのノードの対応するデータエントリよりも新しいと判断した場合、方法は、前記少なくとも１つのノードに、記憶部内の対応するデータエントリの、データエントリＩＤおよびデータエントリバージョン識別子、およびデータペイロードの少なくとも一部を含む同期データパケットを送信するように構成され、同期データパケットのサイズは、第１のハートビートデータパケットのサイズよりも大きい。
【００５２】
データペイロードは、ノードおよび前記他のノードとは異なる少なくとも１つのノードの動作情報をさらに表し得る。データペイロードは、全てのノードの動作情報を表し得る。
【００５３】
方法は、導入として説明したように、ノードおよび２つ以上のそのようなノードを含むネットワークシステムによって実行することができる。
【図面の簡単な説明】
【００５４】
【図１】本開示に係るネットワークシステムの概略図である。
【図２】本開示に係るネットワークシステムの概略図である。
【図３】本開示によるノードのデータ記憶部に記憶されたデータエントリの第１の例である。
【図４ａ−４ｃ】本開示によるノードのデータ記憶部に記憶されたデータエントリの第２の例である。
【図５】本開示に係る方法フローチャートである。
【発明を実施するための形態】
【００５５】
図１は、本開示に係るネットワークシステムの概略図である。ネットワークシステム１は、複数のノードを含み得る。例えば、図１のネットワークシステム１は、４つのノード１１、１２、１３、１４を含む。
【００５６】
ネットワークシステム１は、特定のタスクを実行する装置、またはユーザからの指示を受信するおよび／またはユーザにフィードバックを提供するＨＭＩ装置などの、ノード（図示せず）以外の装置を含み得る。ノードは、センサ、マイクロプロセッサ、外付けハードドライブ、キーボード、ディスプレイ、タッチスクリーンなどの特定のタスクを実行するそれぞれの装置に関連付け得る。ノード１１、１２、１３、１４は、ネットワークシステムの１つまたは複数の装置を制御および／または監視する装置であり得る。
【００５７】
図２に示すように、各ノード１１、１２、１３、１４は、データ記憶部１０１、処理部１０２、および第１のインタフェース１０３を備え得る。
【００５８】
データ記憶部１０１は、その中にデータまたは情報を記録するように適合された任意の種類の装置または媒体であり得る。データ記憶部に保存されているデータは、読み取り可能である。新しいデータは、データ記憶部に書き込み可能である。そのようなデータ記憶部の例は、ＣＤ‐ＲＷディスク、ハードドライブ、およびフラッシュメモリを含むがこれらに限定されない、揮発性または不揮発性メモリ装置であり得る。
【００５９】
処理部１０２は、命令によって指定された基本的な演算、論理、制御、および入出力操作を実行することにより命令を実行するように適合された任意の種類の装置であり得る。処理部は、ＣＰＵ、ＭＣＵ、ＤＳＰ、ＰＬＣ、または単一の集積回路であり得る。
【００６０】
第１のインタフェース１０３は、１つまたは複数の他のノードと通信するために使用し得る。ノードは、第１のインタフェース１０３を介して、ネットワークシステム内の他のノードまたは複数の他のノードに第１のデータパケットを送信し得る。ノードは、第１のインタフェース１０３を介して、他のノードの１つにより送信された第２のデータパケットを受信し得る。
【００６１】
第１のインタフェース１０３は、無線インタフェースを含み得る。第２のインタフェースは、有線インタフェースを含み得る。その結果、１つのノードと他のノード間の通信は有線および／または無線であり得る。有線インタフェースは、ＣＡＮ、イーサネット、ＰＲＯＦＩＢＵＳ、Ｉ２Ｃ、ＳＰＩ、またはＲＳ−４８５から選択されたプロトコルを含むシリアルインタフェースであってもよい。無線インタフェースは、無線ＬＡＮ、Ｗｉ−Ｆｉ、セルラーネットワークなどから選択される規格の下で無線通信を可能にし得る。
【００６２】
図２に示されるように、各ノード１１、１２、１３、１４は、外部ユニットと通信する第２のインタフェース１０４を備え得る。図２では、第２のインタフェース１０４は、２つの外部ユニット１５および１６と通信する。
【００６３】
第２のインタフェースは、単一のインタフェース、または２つ以上の別個のインタフェースであり得る。
【００６４】
外部ユニット１５、１６は、外付けハードドライブ、アクチュエータ、センサ、タグライタ、タグリーダ、カメラ、フォトアイ、押しボタン、キーボード、携帯電話、スマートデバイス、スキャナなどであり得る。
【００６５】
従って、ノード１１、１２、１３、１４は、第２のインタフェース１０４を介して、外部ユニット１５、１６から第１の信号を受信し得る。そのような信号を受信すると、処理部は、データ記憶部１０１内のデータエントリのデータペイロードを更新し得る。
【００６６】
例えば、外付けハードドライブのデータオーバーフローを示す信号を受信すると、プロセッサは、対応するデータエントリを更新して、外付けハードドライブでデータオーバーフローが発生したことを示し得る。
【００６７】
ノードは、第２のインタフェース１０４を介して、タスクを実行する外部ユニットを制御する命令などの第２の信号を外部ユニットに提供し得る。
【００６８】
例えば、ノードは、ノードを再起動させる信号を外付けハードドライブに提供し得る。
【００６９】
第２のインタフェース１０４は、無線インタフェースを含み得る。あるいは、第２のインタフェースは、シリアルインタフェースなどの有線インタフェースを含み得る。その結果、第２のインタフェースを介したノードと外部ユニットとの間の通信は、有線または無線であり得る。
【００７０】
本開示は、共通の通信ネットワークを介して情報を送信するように構成されたノード１１、１２、１３、１４に特に適用可能である。ノード１１、１２、１３、１４は、全てのノードが共通の通信ネットワークを介して通信される全ての情報を受信できるように通信するように構成され得る。
【００７１】
データ記憶部１０１には、複数のデータエントリが記憶されている。図３は、ノード１１、１２、１３、１４のデータ記憶部１０１に記憶されたデータエントリの例である。
【００７２】
各データエントリは、データエントリＩＤ、データエントリバージョン識別子、およびデータペイロードを含み得る。
【００７３】
図３および４ａ−４ｃに示すように、各データエントリのデータエントリＩＤはユニークであり得る。従って、ユニークなデータエントリＩＤを使用して、あるデータエントリを他のデータエントリと区別し得る。
【００７４】
データペイロードは、１つのノードの動作情報を表し得る。動作情報は、ノードの動作モードおよび／または動作状態を含み得る。
【００７５】
動作モードは、動作構成情報、例えば、このまたは他のノードが実行する機能の情報を含み得る。
【００７６】
動作状態は、ノードがフル稼働しているか、誤動作しているかなど、コントローラの実際の状態の情報を含み得る。動作状態は、非限定的な例として、外付けハードドライブの動作状態などの外部装置の動作状態を示し得る。
【００７７】
データエントリバージョン識別子は、データエントリのバージョンを示し得る。従って、例えば他のノードの対応するデータエントリと比較するときに、データエントリがより新しいかより古いかを表すために使用され得る。
【００７８】
図３および４ａ−４ｃに示すように、データエントリバージョン識別子は、カウンタであり得る。データエントリが更新されたとき、例えば、更新されたデータペイロードとともに、カウンタの値に対して演算動作を実行することにより、カウンタを更新し得る。カウンタの値は、全てのデータエントリに対して最初は「０」に設定し得る。１つのデータエントリの更新ごとに、そのデータエントリバージョン識別子、すなわちカウンタは、所定の値だけ増加され得る。所定の値は「１」であり得る。あるいは、減算などの他の算術動作も、カウンタの値に対して実行され得る。
【００７９】
データエントリバージョン識別子はタイムスタンプであり得る。タイムスタンプは、システムの起動時に全てのデータエントリに対して最初は「０」に設定し得る。システム起動後のデータエントリの更新ごとに、データエントリバージョン識別子としてタイムスタンプが付与され得る。付与されたタイムスタンプは、システムが起動してから更新が行われるまでに計算された時間間隔であり得る。
【００８０】
リアルタイムシステムが使用される場合、ネットワークシステム内の各ノードは、例えば、システムのグローバルクロック信号、外部の共通タイムサーバ、または外部のＧＰＳ信号によって同期され得、これにより必然的にシステム全体の複雑さが増加する。さらに、ネットワークシステムは、全てのノードをリアルタイムで同期させる中央ノードをさらに備え得る。従って、データエントリバージョン識別子を使用すると、ネットワークシステムが簡素化され得る。
【００８１】
さらに、リアルタイムシステムを使用する場合、２つのノード間のわずかな同期ミスにより、データエントリの時系列にエラーが発生し、システムが希望どおりに機能しなくなる可能性がある。ただし、リアルタイムの代わりにタイムスタンプを使用することにより、システムの起動時にタイムスタンプを初期値「０」に設定するだけで、正しい時系列を保証できる。従って、データエントリバージョン識別子を使用すると、ネットワークシステムのロバスト性が向上され得る。
【００８２】
各ノードは、ネットワークシステム内の全てのノードの全てのデータエントリを含むデータセット全体を格納し得る。あるいは、各ノードは、データセット全体の一部のみを格納し得る。例えば、各ノードは、それ自体に関連するシステム内のいくつかのノードのデータエントリのみを格納し得る。特に、ノードの特定のグループは、各ノードがそのグループを形成するノードの完全な情報を格納するように構成され得る。
【００８３】
図４ａ−４ｃは、ノードのデータ記憶部に記憶されたデータエントリの第２の例である。
【００８４】
図４ａでは、上記の動作情報の１つまたは複数の変数を表すために各データエントリをどのように工夫し得るかが示されている。この例では、最初のデータエントリであるデータエントリＩＤ１００は、１０桁の長さで、４つの異なる変数を表す場合があり得る。従って、データ構造は、データペイロードの最初の２桁が変数１を表し、次の３桁が変数２を表し、次の２桁が変数３を表し、最後の３桁が変数４を表すように定義される。このデータ構造定義は、このデータエントリを処理できる必要がある全てのノードに認識される。
【００８５】
同様の方法で、第２のデータエントリ１０１は１５桁の長さを有し、そして５つの異なる変数を表すように定義され得、第３のデータエントリ１０２は４桁のデータペイロードを有し、単一の変数を表し得る。
【００８６】
ハートビートデータパッケージは、
１００  １、
の形式となり、ここで「１００」はデータエントリＩＤを表し、「１」はデータエントリバージョン識別子を表す。
【００８７】
データ同期パケットは、データエントリのデータペイロード全体が１つの同期データパケットで送信され得るように定義され得る。このようなデータ同期パケットには、データエントリＩＤ、データエントリバージョンＩＤ、およびデータペイロードを含めるだけで済む。
【００８８】
従って、図４ａに基づく同期データパケットは、
１００  １  １２３４５６７８９０
の形式を取り得る。
【００８９】
図４ｂでは、送信されているデータペイロード長が４桁に制限されている状況でのデータ同期パケット送信のためのデータ構造が示されている。つまり、データペイロード長は、特定のデータエントリに関連付けられているデータペイロードの合計よりも短くなる。従って、データエントリは３つのメッセージに分割される。このような場合、データペイロードの一部を含む２つ以上のパケットに基づいて、受信ノードがデータエントリのデータペイロード全体を正しくつなぎ合わせることができるようにする情報を提供する必要がある。
【００９０】
図４ｂには、データペイロードサイズの表示と、データペイロードのどの部分が送信されているかを示すフラグが提供されている。従って、受信ノードは、最大データペイロードサイズが４であるという知識に基づいて、パケットからのデータペイロードをつなぎ合わせるべき順序を決定できる。従って、データ同期パケットは、
１００  １  １５  １  １２３４、
１００  １  １５  ２  ５６７８、
１００  １  １５  ３  ９０、
という形式を取り得る。
【００９１】
他の方法として、各データエントリのペイロードサイズを全てのノードが認識し得、その場合、フラグのみが必要となる。
【００９２】
上記の例では、ペイロードフラグは、別個のデータフィールドまたはデータエントリ内の所定の位置を形成することに留意されたい。
【００９３】
他の方法として、ペイロードフラグは、データエントリＩＤフィールドなどの他のデータフィールドの１つに含まれ得る。例えば、上記の例による第１のデータエントリ１００の同期データパケットは、
１００１  １  １５  １２３４、
１００２  １  １５  ５６７８、
１００３  １  １５  ９０、
であり得る。
【００９４】
すなわち、データエントリＩＤを示すデータフィールドは、このデータエントリのどの部分がデータパケットに含まれるかを示すために展開され得る。
【００９５】
図４ｃを参照すると、さらに他の方法として、ペイロードフラグは、特定の範囲のデータエントリＩＤが、その範囲内のＩＤを有する各同期データパッケージがそのデータエントリに属するものとして識別できるように、一緒に１つのデータエントリを形成することを決定することにより完全に省略され得、これにより、受信ノードは、前記範囲内のデータエントリＩＤを有する同期データパケットのデータペイロードを併合する。この場合、第１のデータエントリ１００の対応するデータパケットは、
１００  １  １５  １２３４、
１０１  １  １５  ５６７８、
１０２  １  １５  ９０、
であり得る。
【００９６】
また、この例では、データペイロードサイズを省略し得る。
【００９７】
次に、図５を参照して、ネットワークシステム１の動作について説明する。
【００９８】
ノード１１、１２、１３、１４は、データ記憶部内の１つまたは複数、好ましくは全てのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む第１のデータパケットを、第１のインタフェース１０３を介して、他のノードに送信するように構成され得る、ステップｓ１。この送信は、ハートビート信号として定期的に実行し得る。
【００９９】
ノード１１、１２、１３、１４は、第１のインタフェース１０３を介して、他のノードの１つ、一部、または全てにより送信される１つまたは複数の第２のデータパケットを受信するように構成され得、ここで、第２のデータパケットは、他のノードのうちの前記１つのデータエントリのデータエントリＩＤおよびデータエントリバージョン識別子を含む、ステップｓ２。従って、各ノードは、それ自体のハートビート信号を送信するだけでなく、他のノードの１つまたは全てからハートビート信号を受信し得る。
【０１００】
ノード１１、１２、１３、１４は、受信した第２のデータパケットのデータエントリバージョン識別子を、第２のデータパケットと同じデータエントリＩＤを有するデータ記憶部内の対応するデータエントリのデータエントリバージョン識別子と比較するように構成され得る、ステップｓ３。通常、このような比較は、受信した第２のデータパケットごとに実行され得る。
【０１０１】
ノードは、例えば、データペイロードを更新する第１の信号を受信したときに、データ記憶部内のデータエントリのデータペイロードを更新し、更新されたデータエントリのデータエントリバージョン識別子を更新して、より新しいバージョンを示すように構成され得る。
【０１０２】
ステップｓ３において、第２のデータパケットのデータエントリバージョン識別子が、データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも古いと示される場合、ノードは、データエントリＩＤ、データエントリバージョン識別子、およびデータ記憶部内の対応するデータエントリのデータペイロードの少なくとも一部、好ましくは全てを含む第１の同期データパケットを送信するように構成され得、第１の同期データパケットのサイズは第１のデータパケットのサイズよりも大きい、ステップｓ４。
【０１０３】
従って、ノードは、ノードのデータ記憶部内の対応するデータエントリと比較して古いデータエントリを含むデータパケットを受信すると、ノードは、全てのノードがデータエントリに関して更新するまで、最新の対応するデータエントリを送信する。
【０１０４】
第２のデータパケットのデータエントリバージョン識別子が、データ記憶部内の対応するデータエントリのデータエントリバージョン識別子よりも新しいと示されている場合、および第２のデータパケットが、データ記憶部内の対応するデータエントリと同じデータエントリＩＤに関連付けられたデータペイロードの一部を含む場合、データペイロードの一部と第２のデータパケットのデータエントリバージョン識別子に応じて、ノードは、データ記憶部内の対応するデータエントリのデータペイロードおよびデータエントリバージョン識別子を更新するように構成され得る、ステップｓ５。
【０１０５】
一方、第２のデータパケットのデータエントリバージョン識別子が、記憶部内の対応するデータエントリのデータエントリバージョン識別子と同じである場合、同期操作を実行する必要はない。
【０１０６】
ネットワークシステム１の複数のノード１１、１２、１３、１４間のデータ同期は、２つのノード１１、１２を含む以下の例で説明される。
【０１０７】
第１のノード１１は、そのデータ記憶部に記憶されたデータエントリＡ−１１を有し得る。データエントリＡ−１１は、データエントリＩＤ１００、データエントリバージョン識別子１、および第１のノード１１の動作状態の情報を含むデータペイロードを有し得る。
【０１０８】
第２のノード１２は、そのデータ記憶部に記憶されたデータエントリＡ−１２を有し得る。データエントリＡ−１２は、データエントリＡ−１１のコピーであり得る。その結果、データエントリＡ−１２は、データエントリＡ−１１として、データエントリＩＤ１００、データエントリバージョン識別子１、および第１のノード１１の動作状態の情報を含むデータペイロードを有し得る。
【０１０９】
第１のノード１１は、外付けハードドライブのデータオーバーフローを示す信号を外付けハードドライブから受信し得る。
【０１１０】
信号を受信すると、ノード１１の処理部１０２は、データエントリＡ−１１のデータペイロードの更新を発生させ得る。従って、更新されたデータエントリＡ’−１１では、更新されたデータペイロードは、外付けハードドライブのデータオーバーフローを示し得る。結果として、ノード１１は、更新されたデータエントリＡ’−１１のデータエントリバージョン識別子を更新して、より新しいバージョンを示し得る。例えば、Ａ’−１１のデータエントリバージョン識別子が１から２に更新され得る。
【０１１１】
つまり、データエントリのデータペイロードの変更は、同期データパケットの送信を発生させ得る。
【０１１２】
あるいは、受信したハートビートデータパケットが古いデータエントリバージョン識別子を有することを第１のノードが発見したことに応答して、データ同期パケットの送信を発生することができる。
【０１１３】
第２のノード１２は、データエントリＡ−１２のデータエントリＩＤ１００およびデータエントリバージョン識別子１を含む第２のデータパケットを第１のノード１１に送信し得る。
【０１１４】
第１のノード１１は、第２のノード１２により送信された第２のデータパケットを受信し得る。受信したデータエントリＩＤが１００であるため、第１のノード１１は、受信した第２のデータパケットの受信したデータエントリバージョン識別子１を、同じデータエントリＩＤ１００を有するそのデータ記憶部内の対応するデータエントリＡ’−１１のデータエントリバージョン識別子２と比較し得る。
【０１１５】
比較後、第２のデータパケットのデータエントリバージョン識別子１は、対応するデータエントリＡ’−１１のデータエントリバージョン識別子２よりも古いと示されていると結論付けられる。すなわち、データエントリＡ−１１に対応する第２のノード１２のデータエントリＡ−１２は、第１のノード１１の更新されたデータエントリＡ’−１１ほど更新されていない。
【０１１６】
受信した第２のデータパケットの古いバージョンのデータエントリＡ−１２を検出すると、第１のノード１１は、更新されたデータエントリＡ’−１１の、データエントリＩＤ１００、データエントリバージョン識別子２、および外付けハードドライブのデータオーバーフローを示すデータペイロードの少なくとも一部を含む第１の同期データパケットを送信することができる。
【０１１７】
更新のための追加のデータペイロードを構成するので、第１の同期データパケットのサイズは、それが以前に送信したデータパケットのサイズよりも大きくてもよい。
【０１１８】
第２のノード１２は、第１のノード１１により送信された第１の同期データパケットを受信し得る。第１の同期データパケットは、第１のノード１１の更新されたデータエントリＡ’−１１の、データエントリＩＤ１００、データエントリバージョン識別子２、および外付けハードドライブのオーバーフローを示すデータペイロードの一部を含み得る。
【０１１９】
受信した第１の同期データパケットのデータエントリＩＤが１００であるため、第２のノード１２は、第１の同期データパケットの受信したデータエントリバージョン識別子２を、同じデータエントリＩＤ１００を有するそのデータ記憶部内の対応するデータエントリＡ−１２のデータエントリバージョン識別子１と比較し得る。
【０１２０】
比較後、第１の同期データパケットのデータエントリバージョン識別子２は、対応するデータエントリＡ‐１２のデータエントリバージョン識別子１よりも新しいと示されていると結論付けられる。すなわち、第２のノード１２に記憶されたデータエントリＡ−１２は、データエントリＡ−１１のコピーであり、第１のノード１１に記憶された更新されたデータエントリＡ’−１１ほど更新されていない。
【０１２１】
ノード１１のデータエントリＡ’−１１の新しいバージョンであること、および第１の同期データパケットが、ノード１１のデータ記憶部内の対応するデータエントリＡ’−１１に属するデータペイロードの一部を含むことが検出されると、第２のノード１２は、受信した第１の同期データパケットに従って、データエントリＡ‐１２データペイロードおよびのデータエントリバージョン識別子１を更新し得る。
【０１２２】
更新されたデータエントリＡ’−１２は、データエントリＩＤ１００、更新されたデータエントリバージョン識別子２、およびデータエントリＡ’−１１のデータオーバーフローとして外付けハードドライブのデータオーバーフローを示す更新されたデータペイロードを有し得る。すなわち、第２のノード１２に格納された更新されたデータエントリＡ’−１２は、第１のノード１１の更新されたデータエントリＡ’−１１のコピーとして更新される。
【０１２３】
第２のノード１２は、データ入力が更新されるまで、古いデータエントリバージョンを示す第２のデータパケットを送信し続ける。データエントリが更新された後、ノード１２は、データエントリバージョン識別子も更新する。
【０１２４】
複数のデータ同期パケットを送信する必要がある場合、第２のノードは、全てのデータ同期パケットが受信され、対応するデータペイロードが完全に受信されるまで、データエントリバージョン識別子の更新を延期する場合がある。
【０１２５】
任意で、ノード１２は、第１の通知をノード１１に送信して、第１の同期データパケットが完全に受信され、完全に格納され、および／または更新が正常に行われたことをノード１１に通知し得る。第１の通知は、データエントリＩＤ１００および更新されたデータエントリＡ’−１２の更新されたデータエントリバージョン識別子２を含むデータパケットであり得る。
【０１２６】
任意で、第２のノード１２は、第１の同期データパケットが完全に受信され、完全に格納され、および／または更新が正常に行われるまで、データエントリバージョン識別子１およびデータエントリＡ−１２のデータエントリＩＤ１００を含む第２の通知を第１のノード１１に送信し得る。第２の通知は、第１の同期データパケットが完全に受信されていない、完全に格納されていない、および／または更新がまだ完了していないことを第１のノード１１に通知するために使用され得る。
【０１２７】
ネットワークシステム１内の他のノード１３、１４はそれぞれ、ノード１１のデータエントリＡ−１１のコピーとして、それぞれデータエントリＡ−１３およびＡ−１４を含み得る。他のノード１３、１４もまた、ノード１１、１２と同じ同期を実行することができ、その結果、更新されたデータエントリＡ’−１３およびＡ’−１４の更新されたデータエントリバージョン識別子もまた、更新されたデータエントリＡ’−１２として２に更新され得る。その後、第１のノード１１は、データエントリＩＤ１００を有するデータエントリのデータエントリバージョン識別子が、データエントリバージョン識別子２よりも古いものとして示される第２のノード１２および他のノード１３、１４からデータパケットを受信し得ない。
【０１２８】
第１のノード１１は、そのデータ記憶部内のデータエントリＡ’−１１のデータエントリＩＤ１００およびデータエントリバージョン識別子２を含む第２の同期データパケットを送信し得る。第２の同期データパケットのサイズは、第１の同期データパケットのサイズよりも小さくても良い。
【０１２９】
すなわち、ネットワークシステム内の全てのノード１２、１３、１４が更新されたデータエントリＡ’−１１に同期された後、ノード１１が任意のデータペイロードを含む第１の同期データパケットを送信し続ける必要はない。第１のノード１１は、更新されたデータエントリＡ’−１１のデータエントリＩＤ１００およびデータエントリバージョン識別子２のみを含む、または更新されたデータエントリＡ’−１１のデータエントリＩＤ１００、データエントリバージョン識別子２、データペイロードのごく一部を含む、より小さなサイズのデータパケットの送信を開始し得る。
【０１３０】
複数の現在のノード１１、１２、１３、１４を含むネットワークシステム１に新しいノードを設置する必要がある場合、新しいノードは、古いデータエントリバージョン識別子、例えば「０」、を有するデータエントリを含むように構成し得る。従って、新しいノードは、「新しい」データエントリを有するノードにより引き起こされる同期により、他の既存のノード１１、１２、１３、１４に自動的に同期され得る。従って、ネットワークシステム内の新しいノードの設置を容易にし得る。
【０１３１】
ノード１１を再構成する必要がある場合、ノードは、人間の介入なしに、「新しい」データエントリを有するノードにより引き起こされる同期によって、他のノードに自動的に同期され得る。従って、既存のノードの再構成が容易になり得る。
【０１３２】
図４ａ〜４ｃに開示されているデータ入力構造には、ノードがこのデータエントリを必要とするかどうかを示すために使用され得る追加のフィールドが含まれ得る。このようなフィールドに基づいて、ノードは、不要なデータエントリに関連する全てのデータパケットを無視することができる。
【０１３３】
そのようなネットワークシステムは、フローコンフィギュレータ、すなわち、各ノードの機能を決定するために使用される装置をさらに含み得る。このような決定は、ユーザインタフェースからの入力に基づいて、または受信した構成計画に基づいて行い得る。フローコンフィギュレータは、ノードに関して上記と同じ方法で通信し得るが、そのペイロードはユーザインタフェースまたは構成プランを介して操作できる点が異なる。
【０１３４】
従って、ノードの構成は、フローコンフィギュレータのデータエントリの一部また全てを更新することで達成され得る。従って、フローコンフィギュレータは、他のノードから古いデータエントリがあることを示すメッセージの受信を開始するとすぐに、更新されたデータエントリの送信を開始する。
【０１３５】
さらに、ノードは、特定の機能を割り当てることにより導入され得、受信および格納する必要のあるデータを認識し、そのデータエントリは０または１などの非常に低いデータエントリバージョン表示値にリセットされ得、これにより、既存のネットワークシステムに導入され、第１のハートビートデータパケットの送信を開始すると、他のノードは古いデータバージョンのノードがあることを認識し、そして同期データパケットの送信を開始して、新しいノードがデータエントリを更新できるようにする。
【図１】
2021519539.tif 000003
【図２】
2021519539.tif 000004
【図３】
2021519539.tif 000005
【図４ａ】
2021519539.tif 000006
【図４ｂ】
2021519539.tif 000007
【図４ｃ】
2021519539.tif 000008
【図５】
2021519539.tif 000009
【国際調査報告】
2021519539.tif 000010
2021519539.tif 000011