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

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

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特許7214295分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器
<>
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図1
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図2
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図3
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図4
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図5
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図6
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図7
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図8
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図9
  • 特許-分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-20
(45)【発行日】2023-01-30
(54)【発明の名称】分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器
(51)【国際特許分類】
   G06F 9/52 20060101AFI20230123BHJP
【FI】
G06F9/52 150Z
【請求項の数】 15
(21)【出願番号】P 2021514604
(86)(22)【出願日】2020-06-15
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 CN2020096119
(87)【国際公開番号】W WO2021008285
(87)【国際公開日】2021-01-21
【審査請求日】2021-03-16
(31)【優先権主張番号】201910636195.1
(32)【優先日】2019-07-15
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】▲劉▼ 攀
【審査官】坂東 博司
(56)【参考文献】
【文献】中国特許出願公開第108924223(CN,A)
【文献】米国特許出願公開第2021/0176160(US,A1)
【文献】特開2013-186692(JP,A)
【文献】特開2017-073000(JP,A)
【文献】再公表特許第2012/086041(JP,A1)
【文献】特開平11-306151(JP,A)
【文献】再公表特許第2014/076838(JP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
電子機器が実行する、複数のノードを含む分散型システムのデータ同期方法であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、
を含み、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する前記ステップは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの過去データ同期情報を取得するステップと、
を含み、
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックデータを含み、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、
前記ターゲットノードにおけるブロックチェーン台帳の第1ブロックヘッダのデータ量を取得するステップと、
前記ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第2ブロックヘッダのデータ量を取得するステップと、
前記第1ブロックヘッダのデータ量と前記第2ブロックヘッダのデータ量との大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出するステップと、を含む方法。
【請求項2】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するステップと、
を含む請求項1に記載の方法。
【請求項3】
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
選択重み値が最も高い候補隣接ノードを前記ターゲット隣接ノードとして決定するステップを含む、
請求項2に記載の方法。
【請求項4】
前記過去データ同期情報は、前記ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、
前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出するステップと、
前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定するステップと、を含む、
請求項1に記載の方法。
【請求項5】
前記過去データ同期情報は、過去データ伝送速度及び過去データ要求時点を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、以下の式によって、前記隣接ノードの選択重み値を計算するステップを含み、
【数1】
ここで、Wiは、i番目の隣接ノードの選択重み値を表し、jは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期を表し、mは、ターゲットノードとi番目の隣接ノードとの過去のm回目のデータ同期を表し、nは、ターゲットノードとi番目の隣接ノードとの過去の直近n回のデータ同期の回数を表し、Sjは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期過程における過去データ伝送速度を表し、tjは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期の過去データ要求時点を表し、tは、前記i番目の隣接ノードの選択重み値の計算時点を表す、
請求項1に記載の方法。
【請求項6】
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、
前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させるステップを含み、
前記方法は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録するステップをさらに含む、
請求項1に記載の方法。
【請求項7】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックヘッダデータと完全なブロックデータとを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第1ターゲット隣接ノードを選択し、前記第1ターゲット隣接ノードから前記ブロックヘッダデータを同期するステップと、
前記ブロックヘッダデータを同期した後に、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択し、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期するステップと、を含む、
請求項1乃至のいずれか1項に記載の方法。
【請求項8】
前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する前に、
前記ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第3ブロックヘッダのデータ量を取得するステップと、
前記ターゲットノードにおけるブロックチェーン台帳の第4ブロックヘッダのデータ量を取得するステップと、
前記第3ブロックヘッダのデータ量と前記第4ブロックヘッダのデータ量との大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があるか否かを検出するステップと、
をさらに含む請求項に記載の方法。
【請求項9】
前記第3ブロックヘッダのデータ量と前記第4ブロックヘッダのデータ量との大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があるか否かを検出する前記ステップは、
前記第3ブロックヘッダのデータ量が第4ブロックヘッダのデータ量よりも小さい場合、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択するステップをさらに含む、
請求項に記載の方法。
【請求項10】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、完全なブロックデータを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択し、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期するステップを含む、
請求項1乃至のいずれか1項に記載の方法。
【請求項11】
前記第2ターゲット隣接ノードから前記完全なブロックデータを同期することは、
前記第2ターゲット隣接ノードにおける完全なブロックデータをダウンロードするステップと、
前記完全なブロックデータの正当性を検証するステップと、
正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するステップと、
を含む請求項又は10に記載の方法。
【請求項12】
前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期することは、
前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出して、前記ターゲットノードのブロックチェーン台帳に書き込むステップを含む、
請求項11に記載の方法。
【請求項13】
分散型システムのデータ同期装置であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するように構成された取得モジュールと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるように構成された決定モジュールと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成された選択モジュールと、
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するように構成された同期モジュールと、
を含み、
請求項1乃至12のいずれか1項に記載の方法を実施するように構成される装置。
【請求項14】
請求項1乃至12のいずれか1項に記載の方法を電子機器に実施させるコンピュータプログラム。
【請求項15】
電子機器であって、
プロセッサと、
前記プロセッサの実行可能命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記実行可能命令を実行することにより、請求項1乃至12のいずれか1項に記載の方法を実施するように構成される、
電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年7月15日に国家知識産権局に提出された、出願番号が201910636195.1であり、発明の名称が「分散型システムのデータ同期方法、装置、媒体、電子機器」である中国特許出願に基づく優先権を主張し、その全ての内容は参照することにより本願に組み込まれる。
【0002】
本願は、コンピュータ技術分野に関し、特に、分散型システムのデータ同期方法、装置、媒体、及び電子機器に関する。
【背景技術】
【0003】
分散型システムは、ネットワークを介して通信を行い、共通のタスクを完了するために協調して動作する1組のコンピュータノードで構成されるシステムである。分散型システムでは、各ノードのいずれもデータの計算又は記憶に用いられる。また、分散型システムでは、ノード間でデータを同期する処理が必要な場合がある。例えば、ブロックチェーンシステムでは、新たなブロックチェーンノードが参加すると、他のブロックチェーンノードからデータを同期する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願は、分散型システムのデータ同期方法及び装置、コンピュータ可読記憶媒体、電子機器を提供して、少なくとも分散型システムにおけるデータ同期にかかる時間を短縮し、同期効率を向上させることができることを目的とする。
【0005】
本願のその他の特徴及び利点は、以下の詳細な説明により明らかになり、又は、部分的に本願の実践により把握される。
【課題を解決するための手段】
【0006】
本願の実施例の一態様によれば、分散型システムのデータ同期方法が提供されている。前記方法は、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、を含む。
【0007】
本願の実施例の一態様によれば、分散型システムのデータ同期装置が提供されている。前記装置は、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するように構成された取得モジュールと、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるように構成された決定モジュールと、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成された選択モジュールと、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するように構成された同期モジュールと、を含む。
【0008】
本願の実施例の一態様によれば、コンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供されており、該コンピュータプログラムには、実行可能命令が含まれ、該実行可能命令がプロセッサによって実行されると、上記実施例に記載の分散型システムのデータ同期方法を実現させる。
【0009】
本願の実施例の一態様によれば、電子機器が提供されている。前記電子機器は、1つ又は複数のプロセッサと、前記プロセッサの実行可能命令を記憶するためのメモリと、を備え、前記実行可能命令が、前記1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに、上記実施例に記載の分散型システムのデータ同期方法を実現させる。
【0010】
図面を参照しながらその例示的な実施例を詳細に説明することにより、本願の上記及びその他の特徴及び利点は、より明らかになる。
【図面の簡単な説明】
【0011】
図1】本願の実施例による分散型システムのデータ同期方法の適用シナリオの模式図である。
図2】本願の実施例による分散型システムのデータ同期のフローチャートである。
図3】本願の実施例による図2に示すステップ210の詳細なフローチャートである。
図4】本願の実施例による図2に示すステップ220の詳細なフローチャートである。
図5】本願の実施例による図2に示すステップ230の詳細なフローチャートである。
図6】本願の実施例によるブロックヘッダデータ同期の詳細なフローチャートである。
図7】本願の実施例による完全ブロックデータ同期の詳細なフローチャートである。
図8】本願の実施例による分散型システムのデータ同期装置のブロック図である。
図9】本願の実施例による上記方法を実現させるコンピュータ可読記憶媒体である。
図10】本願の実施例による上記方法を実現する電子機器の例示的なブロック図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して、例示的な実施例をより完全に説明する。しかしながら、例示的な実施例は、様々な形態で実施され、本明細書に記載の実施形態に限定されるものとして理解されるべきではない。逆に、これらの実施形態を提供することにより、本願が全面的かつ完全になり、例示的な実施例の構想が全面的に当業者に伝えられる。図面において、明瞭にするために、一部の部品の大きさを拡大するか変形させる場合がある。図面において、同一の符号が同一又は類似の構成を表しているので、それらの詳細な説明を省略する。
【0013】
なお、説明される特徴、構成又は特性は、任意の適切な方式で1つ又は複数の実施例に組み合わせることができる。以下の説明において、多くの具体的な細部を提供することにより、本願の実施例に対する十分な理解を提供する。しかしながら、当業者が認識すべきものとして、本願の構成を実施するには、上記特定の細部のうち1つ又は複数がなくてもよいし、又は、他の方法、部品などを採用してもよい。他の場合には、本願の各態様をあいまいにしないように、公知の構成、方法、又は処理を詳しく示したり説明したりしない。
【0014】
従来の分散型システムでは、ノード間のデータ同期処理に、通常、データ同期速度が遅く、同期効率が低いという問題が存在する。
【0015】
これに鑑みて、本願は、上述した分散型システムにおけるノードのデータ同期速度が遅く、データ同期効率が低いという技術的問題を解決できる分散型システムのデータ同期方法、装置、媒体、及び電子機器を提供している。
【0016】
まず、分散型システムのデータ同期方法の適用シナリオについて説明する。
【0017】
図1は、分散型システムのデータ同期方法の適用シナリオの模式図である。
【0018】
図1に示すように、シナリオ100は、分散型システムにおける一部であり、ここで、電子機器101、102、103、104、及び105は、それぞれ、分散型システムにおけるノードであり、前記電子機器は、スマートフォン、タブレットコンピュータ、ノートパソコンなどのポータブルモバイル機器であってもよいし、コンピュータ機器、フィールド端末、デスクトップコンピュータ、サーバ、ワークステーションなどの据え置き型機器であってもよい。本願の実施環境は、分散型システム全体の任意1つのノードであってもよい。図1に示すように、スマートフォン101をデータ同期のターゲットノードとしてもよい。この場合、デスクトップコンピュータ102、ノートパソコン103、タブレットコンピュータ104、及びワークステーション105が、スマートフォン101の隣接ノードとなる。本願によれば、スマートフォン101は、データ同期を行う過程において、まず、デスクトップコンピュータ102、ノートパソコン103、タブレットコンピュータ104及びワークステーション105のそれぞれとの過去のデータ同期の過去データ同期情報を同時に取得し、次に、前記過去データ同期情報に基づいて、前記隣接ノードから前記スマートフォン101へデータを同期する効率をはかるための選択重み値を決定し、最後に、前記選択重み値に基づいて、前記スマートフォン101へデータを同期するためのターゲット隣接ノードを選択し、データ同期過程を完了する。
【0019】
注意すべきものとして、本願において、分散型システムにおける各ノード間のデータ伝送は、通信接続のような接続(例えば有線通信の通信ネットワークの接続又は無線通信の通信ネットワークの接続)により実現されてもよい。
【0020】
本願の第1態様によれば、分散型システムのデータ同期方法が提供されている。
【0021】
分散型システムのデータ同期方法のフローチャートである図2を参照されたい。該データ同期方法の実行主体は、分散型システムに含まれる、データ同期が必要なノードであってもよく、例えば、いずれかのノードとして機能する電子機器であってもよい。該データ同期方法は、以下のステップを含んでもよい。
【0022】
ステップ210で、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する。
【0023】
ステップ220で、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである。
【0024】
ステップ230で、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する。
【0025】
以下、上記の実施ステップについて詳細に説明する。
【0026】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップ210について、
具体的には、前記ターゲットノードとは、分散型システムにおける、データ同期が必要なノードであり、例えば、ブロックチェーンシステムにおけるいずれかのノードである。前記隣接ノードとは、前記分散型システムにおける、前記ターゲットノードに接続された他のノードである。
【0027】
例示的な一実施例では、ステップ210において、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する過程は、図3に示すように完了することができ、具体的に以下のステップを含む。
【0028】
ステップ2101で、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。
【0029】
一実施例の具体的な実現において、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックデータを含んでもよい。前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、以下のように実現されてもよい。
【0030】
まず、ターゲットノードにおけるブロックチェーン台帳の第1ブロックヘッダ高さを取得する。次に、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第2ブロックヘッダ高さを取得する。最後に、前記第1ブロックヘッダ高さと前記第2ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出する。
【0031】
具体的には、ブロックチェーンシステムは、分散型システムの1種であり、その主な役割がデータの記憶である。保存する必要がある任意のデータは、ブロックチェーンに書き込まれてもよく、ブロックチェーンから読み出されてもよい。ブロックチェーンにおけるデータは、主にブロックの形で存在し、即ち、1つのブロックは、ブロックチェーンデータ全体の基本単位である。1つのブロックは、1つのブロックヘッダと、1つのブロック本体とを含み、ここで、ブロックヘッダには、現在ブロックの特徴値データ、例えば、現在時間、ブロックヘッダ高さ、前のブロックのハッシュ、及びブロック本体のハッシュなどが記録されるが、ブロック本体には、保存する必要がある実際のデータが記録される。ブロックチェーンにおけるブロックが厳密な順序で1方向に接続されることで、データチェーンが形成される。ブロックチェーンシステムでは、一定時間毎に1つのブロックが生成され、生成された新たなブロックが、直前に生成されたブロックの後に接続され、時間の経過とともに、ブロックチェーンデータが絶えずに更新される。また、ブロックチェーンシステムでは、新たなサーバがブロックチェーンネットワークに参加して1つのノードとなった後、新たに参加したノードがブロックチェーンシステムにおけるブロックデータを同期する必要がある。また、ブロックチェーンデータの絶え間ない更新に伴って、ブロックチェーンシステムにおける各ノードもブロックデータを絶えずに更新する必要がある。
【0032】
ブロックチェーンデータでは、各々のブロックデータがユニークであるため、各ブロックデータのアイデンティティは、ブロックヘッダにおけるブロックヘッダ高さ又はハッシュ値によって識別可能である。ここで、ブロックチェーンデータにおけるブロックヘッダ高さは、ブロックの絶え間ない更新に伴って、段階的に増加し、即ち、1つのブロックが生成されるたびに、生成された新たなブロックのブロックヘッダ高さは1つ増加する。これに基づいて、本願は、ブロックヘッダ高さを利用することにより、ブロックチェーンシステムにおける前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出する。
【0033】
具体的には、ターゲットノードにおけるブロックチェーン台帳の第1ブロックヘッダ高さと、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第2ブロックヘッダ高さとをそれぞれ取得し、前記第1ブロックヘッダ高さと第2ブロックヘッダ高さとの大きさを比較し、第2ブロックヘッダ高さが第1ブロックヘッダ高さよりも大きい場合は、前記ターゲットノードに接続された隣接ノードには、前記ターゲットノードへ同期する必要があるブロックデータが存在することを表す。
【0034】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する過程では、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得することができる。このようにすると、候補隣接ノードの選択重み値を決定して、前記候補隣接ノードの中からターゲット隣接ノードを選択するだけで、データ同期の見込みがない隣接ノードをフィルタリングして除去することができ、不要な過去データ同期情報の取得を低減し、システムの記憶及び計算の負荷を軽減しつつ、前記過去データ同期情報の利用率を向上させるという利点がある。
【0035】
ステップ2102で、前記候補隣接ノードの過去データ同期情報を取得する。
【0036】
上記のような実施例では、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する利点は、前記隣接ノードの過去データ同期情報を取得する前に、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、全ての隣接ノードの中から、データ同期の見込みがある候補隣接ノードをさらに決定できることである。このようにすると、データ同期の見込みがない隣接ノードをフィルタリングして除去することができ、不要な過去データ同期情報の取得を低減し、システムの記憶及び計算の負荷を軽減しつつ、前記過去データ同期情報の利用率を向上させるという利点がある。
【0037】
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるステップ220について、
例示的な一実施例では、前記過去データ同期情報は、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含んでもよく、ステップ220において、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する過程は、図4に示すように、具体的に以下のステップを含んでもよい。
【0038】
ステップ2201で、前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出する。
【0039】
本実施例において、前記エラー回数とは、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数である。具体的には、分散型システムにおけるノードとノードとの間でデータ同期を行う際に、ノード自体の障害やデータ伝送ネットワークの障害などにより、例えば、データ同期要求がタイムアウトしたり、データの同期ダウンロード中に異常が発生したり、ノードへのアクセスが失敗したりするノード同期失敗は避けられない。
【0040】
本実施例では、前記エラー回数の閾値を設定することにより、ターゲットノードに接続された隣接ノードを選別し、即ち、前記エラー回数がある一定数を超えた隣接ノードをフィルタリングして、前記エラー回数がある一定数を超えていない隣接ノードを残し、最終的に、残された隣接ノードを後続のターゲット隣接ノード決定の候補としてもよい。前記エラー回数の閾値は、実際の状況に応じて設定されてもよく、例えば、3回に設定される。隣接ノード1、隣接ノード2、隣接ノード3、及び隣接ノード4の過去のデータ同期過程におけるエラー回数がそれぞれ4回、3回、1回、及び0回である場合、最終的に残された隣接ノードは、隣接ノード2、隣接ノード3、及び隣接ノード4であってもよい。
【0041】
ステップ2202で、前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定する。
【0042】
上記のような実施例によれば、エラー回数の閾値を設定して、データ同期に常にエラーが発生した隣接ノードをフィルタリングして除去し、前記エラー回数の少ない隣接ノードを残すことで、後続の同期過程におけるデータの同期成功率を向上させることができ、前記選択重み値を計算するためのシステムの負担を低減することもでき、さらに、システムの計算の負荷を軽減し、データ同期効率を向上させる。
【0043】
例示的な一実施例では、前記過去データ同期情報は、過去データ伝送速度を含んでもよく、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定することは、以下の式によって、前記隣接ノードの選択重み値を計算することを含んでもよく、
【0044】

【数1】
【0045】
ここで、Wは、i番目の隣接ノードの選択重み値を表し、jは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期を表し、mは、ターゲットノードとi番目の隣接ノードとの過去のm回目のデータ同期を表し、nは、ターゲットノードとi番目の隣接ノードとの過去の直近n回のデータ同期の回数を表し、Sは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期過程における過去データ伝送速度を表す。
【0046】
具体的には、前記過去データ伝送速度とは、過去のデータ同期過程において伝送されたターゲットデータの大きさとデータ伝送時間との比であってもよいが、データ伝送時間とは、ターゲットノードが前記ターゲットデータを完全に受信した時点と、ターゲット隣接ノードに前記ターゲットデータのダウンロードを要求した時点との差であってもよい。例えば、あるデータ同期過程において、ターゲットノードがターゲット隣接ノードにターゲットデータのダウンロードを要求した時点が2019年7月1日12時00分00秒であり、ターゲットノードが前記ターゲットデータを完全に受信した時点が2019年7月1日12時00分03秒である場合、データ伝送時間は3.00秒であり、前記ターゲットデータの大きさが30Mbであれば、今回の過去データ伝送速度は10Mb/sである。
【0047】
一実施例の具体的な実現において、ターゲットノードとある隣接ノードとの過去の直近5回のデータ同期過程におけるデータ伝送速度の平均値を、前記隣接ノードの選択重み値とするようにしてもよい。表1に示すように、ターゲットノードとある隣接ノードとの過去の直近5回のデータ同期過程におけるデータ伝送速度は、それぞれ、10Mb/s、30Mb/s、20Mb/s、15Mb/s、25Mb/sである。従って、計算することにより、前記選択重み値がW=20であると決定することができる。
【0048】

【表1】
【0049】
上記のような実施例によれば、前記隣接ノードの過去の直近n回のデータ同期の平均データ伝送速度を、前記選択重み値を決定する要因として計算することにより、前記隣接ノードのデータ同期効率をよくはかることができる。これにより、ターゲット隣接ノードをより適切に選択し、さらに、データ同期効率を向上させる。
【0050】
例示的な一実施例では、前記過去データ同期情報は、過去データ伝送速度と過去データ要求時点とを含んでもよく、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定することは、以下の式によって、前記隣接ノードの選択重み値を計算することを含んでもよい。
【0051】

【数2】
【0052】
ここで、Wは、i番目の隣接ノードの選択重み値を表し、jは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期を表し、mは、ターゲットノードとi番目の隣接ノードとの過去のm回目のデータ同期を表し、nは、ターゲットノードとi番目の隣接ノードとの過去の直近n回のデータ同期の回数を表し、Sは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期過程における過去データ伝送速度を表し、tは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期の過去データ要求時点を表し、tは、前記i番目の隣接ノードの選択重み値の計算時点を表す。
【0053】
具体的には、本実施例において、前記過去データ伝送速度とは、データ同期過程において伝送されたターゲットデータの大きさとデータ伝送時間との比であってもよい。前記過去データ要求時点は、過去のデータ同期過程においてターゲットノードがi番目の隣接ノードにターゲットデータのダウンロードを要求した時点であってもよく、本実施例では、主に前記i番目の隣接ノードの選択重み値の計算時点から、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期の過去データ要求時点までの時間長をはかるために用いられる。前記時間長は、前記ターゲットノードとi番目の隣接ノードとの間でデータ同期を行った頻度をはかることができ、つまり、前記時間長が短いほど、前記ターゲットノードとi番目の隣接ノードとの間でデータ同期を行った頻度が高くなることを表す。
【0054】
一実施例の具体的な実現においては、ターゲットノードとi番目の隣接ノードとの過去の直近5回のデータ同期過程におけるデータ伝送速度の平均値と、前記i番目の隣接ノードの選択重み値の計算時点から、ターゲットノードとi番目の隣接ノードとの過去の直近5回のデータ同期の過去データ要求時点までの時間長の平均値との和を、前記隣接ノードの選択重み値とするようにしてもよい。表2に示すように、ターゲットノードとi番目の隣接ノードとの過去の直近5回のデータ同期過程におけるデータ伝送速度は、それぞれ、10Mb/s、30Mb/s、20Mb/s、15Mb/s、25Mb/sである。ターゲットノードが過去の直近5回でi番目の隣接ノードにターゲットデータのダウンロードを要求した時点は、それぞれ、2019年7月1日12時00分00秒、2019年7月1日12時00分10秒、2019年7月1日12時00分20秒、2019年7月1日12時00分30秒、2019年7月1日12時00分40秒である。
【0055】

【表2】
【0056】
前記i番目の隣接ノードの選択重み値の計算時点tが2019年7月1日12時00分50秒である場合、本実施例の計算式によって、前記隣接ノードの選択重み値がW=50であることを計算することができる。
【0057】
上記のような実施例によれば、前記隣接ノードの過去の直近n回のデータ同期の平均データ伝送速度を、前記選択重み値を決定する要因として計算することにより、前記隣接ノードのデータ同期効率をよくはかることができる。しかしながら、ある隣接ノードのデータ伝送速度が高すぎると、他のノードが常にこの隣接ノードをターゲット隣接ノードとして選択することになり、これにより、ノードの負荷が重すぎてデータ同期効率が低下してしまう。データ伝送速度が高い隣接ノードについて、ターゲット隣接ノードとして選択された回数が頻繁になり、さらに、この隣接ノードの選択重み値の計算時点から、ターゲットノードとこの隣接ノードとの過去のj回目のデータ同期の過去データ要求時点までの時間長が短くなる。これに基づいて、前記ターゲットノードが前記隣接ノードへデータ同期を要求した過去データ要求時点を、前記選択重み値を決定する他の要因とすることにより、分散型システムにおけるターゲットノードに接続された隣接ノードのリソースのバランスをとり、ある隣接ノードが過度に利用されることによる前記隣接ノードの負荷が重すぎることを防ぐことができる。以上のような実施例に基づいて、より良好な隣接ノードを選択することができる。
【0058】
上述したように、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する方式は、任意であってもよく、以上に示した例に限定されないことが理解できる。
【0059】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップ230について、
例示的な一実施例では、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、図5に示すようなステップを含んでもよい。
【0060】
図5は、本願の実施例によるステップ230の詳細なフローチャートであり、具体的に以下のステップを含む。
【0061】
ステップ2301で、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。
【0062】
一実施例の具体的な実現において、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックデータを含んでもよい。前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、以下のように実現されてもよい。
【0063】
ターゲットノードにおけるブロックチェーン台帳の第1ブロックヘッダ高さと、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第2ブロックヘッダ高さとをそれぞれ取得する。そして、前記第1ブロックヘッダ高さと前記第2ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出し、第2ブロックヘッダ高さが第1ブロックヘッダ高さよりも大きい場合は、前記ターゲットノードに接続された隣接ノードには、前記ターゲットノードへ同期する必要があるブロックデータが存在することを表し、前記ターゲットノードへ同期する必要があるブロックデータが存在する隣接ノードを候補隣接ノードとする。
【0064】
ステップ2302で、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択する。
【0065】
一実施例の具体的な実現において、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、以下のように実現されてもよい。
【0066】
前記候補隣接ノードの選択重み値に基づいて、前記候補隣接ノードを大きい順にソートし、前記選択重み値が最も大きい隣接ノードをターゲット隣接ノードとする。
【0067】
上記のような実施例によれば、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。これにより、選択されたターゲット隣接ノードのデータ不全に起因してデータ同期が失敗したことを回避することができ、さらにコンピュータネットワークリソースの浪費を低減させる。
【0068】
例示的な一実施例では、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、完全なブロックデータを含んでもよく、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【0069】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択し、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期する。
【0070】
例示的な一実施例では、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックヘッダデータと完全なブロックデータとを含んでもよく、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【0071】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第1ターゲット隣接ノードを選択し、前記第1ターゲット隣接ノードから前記ブロックヘッダデータを同期する。
【0072】
前記ブロックヘッダデータを同期した後、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択し、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期する。
【0073】
一実施例の具体的な実現において、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する前に、
ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第3ブロックヘッダ高さを取得するステップと、
ターゲットノードにおけるブロックチェーン台帳の第4ブロックヘッダ高さを取得するステップと、
前記第3ブロックヘッダ高さと前記第4ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があるか否かを検出するステップとを実現してもよい。前記第3ブロックヘッダ高さが第4ブロックヘッダ高さよりも小さい場合は、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があることを表す。
【0074】
説明すべきものとして、ターゲットノードにおけるブロックチェーン台帳には、完全なブロックデータを有するブロックと、完全なブロックデータを有しないブロックとが存在し、ここで、完全なブロックデータを有するブロックは、ブロックヘッダとブロック本体とを含むが、完全なブロックデータを有しないブロックは、ブロックヘッダだけを含む。したがって、この具体的な実施例において、前記第3ブロックヘッダ高さとは、完全なブロックデータを有するブロックのブロックヘッダの高さを指し、前記第4ブロックヘッダ高さとは、完全なブロックデータを有しないブロックのブロックヘッダの高さを指す。完全なブロックデータを有するブロックのブロックヘッダの高さが、完全なブロックデータを有しないブロックのブロックヘッダの高さよりも小さい場合は、前記ターゲットノードには、完全なブロックデータを有しないブロックが存在することを表し、さらに、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があることを表す。
【0075】
以下、分散型システムがブロックチェーンシステムである場合を例として、本願の実施例におけるデータ同期方式について詳細に説明する。ここで、該実施例では、ブロックデータを同期する過程が、ブロックヘッダデータを同期する過程と、完全なブロックデータを同期する過程とを含む場合を例として説明する。
【0076】
一実施例の具体的な実現において、ターゲットノードがブロックヘッダデータを同期する具体的な実現は、図6に示すようなフローで繰り返し実施してもよく、前記フローは、具体的に以下のステップを含む。
【0077】
ステップ610で、ローカルのブロックチェーン台帳のブロックヘッダ高さを取得する。
【0078】
ステップ620で、ターゲットノードに接続された各隣接ノードの選択重み値を計算してソートする。
【0079】
ステップ630で、全ての隣接ノードには、自ノードに必要な次のブロックヘッダデータが含まれるか否かをチェックし、自ノードに必要な次のブロックヘッダデータが含まれる場合、ステップ640を実行し、自ノードに必要な次のブロックヘッダデータが含まれない場合、ステップ610を実行して、次の同期サイクルを行う。
【0080】
ステップ640で、選択重み値が最も高く、かつ、必要なブロックヘッダデータが存在する隣接ノードを決定する。
【0081】
ステップ650で、前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信し、前記要求の時点を記録し、最も早いデータ同期ダウンロード要求の時点を削除する。
【0082】
ステップ660で、ブロックヘッダデータを受信し、正当なブロックヘッダデータをローカルのブロックチェーン台帳に書き込む。
【0083】
ステップ670で、今回のブロックヘッダデータ同期のデータ伝送速度を計算する。
【0084】
注意すべきものとして、上記のようなステップ650を当業者がより容易に理解するために、ここでは具体的な例を挙げて説明する。例えば、前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信する前に、過去に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求履歴が3回存在し、かつ前記3回の要求履歴の要求時点が、それぞれ、2019年7月1日12時00分00秒、2019年7月1日12時01分01秒、2019年7月1日12時02分01秒であり、ここで、2019年7月1日12時00分00秒が、初回に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点である。2019年7月1日12時03分01秒に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を再度送信すると、この時点、即ち2019年7月1日12時03分01秒を記録し、初回に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点、即ち2019年7月1日12時00分00秒を削除する。最終的に記録された直近3回で前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点は、それぞれ、2019年7月1日12時01分01秒、2019年7月1日12時02分01秒、及び2019年7月1日12時03分01秒である。
【0085】
一実施例の具体的な実現において、ターゲットノードが完全なブロックデータを同期する具体的な実現は、図7に示すようなフローで繰り返し実施してもよい。前記フローは、具体的に以下のステップを含む。
【0086】
ステップ710で、ローカルのブロックチェーン台帳のブロックヘッダ高さと、完全なブロックデータのブロックヘッダ高さとを取得する。
【0087】
ステップ720で、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高いか否かを検出し、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高い場合、ステップ730を実行し、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高くない場合、ステップ710を実行して、次の同期サイクルを行う。
【0088】
ステップ730で、ターゲットノードに接続された各隣接ノードの選択重み値を計算してソートする。
【0089】
ステップ740で、ソートされた隣接ノードに前記ターゲットノードの次の完全なブロックデータが含まれるか否かを検出し、前記ターゲットノードの次の完全なブロックデータが含まれる場合、ステップ750を実行し、前記ターゲットノードの次の完全なブロックデータが含まれない場合、ステップ710を実行して、次の同期サイクルを行う。
【0090】
ステップ750で、選択重み値が最も高く、かつ、必要な完全なブロックデータが存在する隣接ノードを決定する。
【0091】
ステップ760で、前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信し、前記要求の時点を記録し、最も早いデータ同期ダウンロード要求の時点を削除する。
【0092】
ステップ770で、前記完全なブロックデータを受信し、正当で完全なブロックデータを完全なブロックデータのバッファに記憶する。
【0093】
ステップ780で、今回の完全なブロックデータ同期のデータ伝送速度を計算し、最も早い完全なブロックデータ同期のデータ伝送速度を削除する。
【0094】
注意すべきものとして、上記のようなステップ760を当業者がより容易に理解するために、ここでは具体的な例を挙げて説明する。例えば、前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信する前に、過去に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求履歴が3回存在し、かつ前記3回の要求履歴の要求時点が、それぞれ、2019年7月1日12時00分00秒、2019年7月1日12時01分01秒、2019年7月1日12時02分01秒であり、ここで、2019年7月1日12時00分00秒が、初回に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点である。2019年7月1日12時03分01秒に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を再度送信すると、この時点、即ち2019年7月1日12時03分01秒を記録し、初回に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点、即ち2019年7月1日12時00分00秒を削除する。最終的に記録された直近3回で前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点は、それぞれ、2019年7月1日12時01分01秒、2019年7月1日12時02分01秒、及び2019年7月1日12時03分01秒である。
【0095】
上記のような実施例では、前記完全なブロックデータを同期する前にブロックヘッダデータを同期することによる利点が2つある。1つは、完全なブロックデータは、データ量が大きく、安全性の要求が高いため、ブロックチェーンシステムに新たに追加されたターゲットノードに対して完全なブロックデータの同期を行うとき、データ同期時間が長く、データ同期要求が拒否されてしまうことが非常に起こりやすい。しかしながら、ブロックヘッダデータは、データ量が小さく、安全性の要求が高くないため、ブロックチェーンシステムに新たに追加されたターゲットノードに対してデータ同期を行うのに非常に好適である。もう1つは、ターゲットノードがまずブロックヘッダデータを同期することは、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するためのターゲット隣接ノードを選択する必要があるか否かを検出することに役立ち、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するためのターゲット隣接ノードを選択する必要がないことを検出すると、前記ターゲットノードが隣接ノードの選択重み値を計算する必要がないため、コンピュータリソースを節約する。
【0096】
一実施例の具体的な実現において、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期することは、以下のように実現されてもよい。
【0097】
前記第2ターゲット隣接ノードにおける完全なブロックデータをダウンロードし、前記完全なブロックデータの正当性を検証し、正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期する。
【0098】
一実施例の具体的な実現において、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期することは、以下のように実現されてもよい。
【0099】
前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出して、前記ターゲットノードのブロックチェーン台帳に書き込む。
【0100】
例示的な一実施例では、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【0101】
前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させる。
【0102】
一実施例の具体的な実現において、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録する。
【0103】
前記ターゲットデータの同期が失敗することとは、データ同期要求がタイムアウトしたことであってもよいし、データの同期ダウンロード過程に異常が発生したことであってもよいし、ターゲット隣接ノードへのアクセスに失敗したことであってもよい。
【0104】
一実施例の具体的な実現において、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が成功すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のデータ伝送速度及びデータ要求時点を記録する。
【0105】
上述したように、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する方式は、任意であってもよく、以上に示したものに限定されないことが理解できる。
【0106】
以上のように、本願の実施例の構成では、ターゲットノードに接続された隣接ノードの過去データ同期情報に基づいて、各隣接ノードに対して、前記隣接ノードから前記ターゲットノードへのデータ同期の同期効率を反映できる選択重み値を決定し、異なる隣接ノードに対応する選択重み値に基づいて、前記ターゲットノードへデータを同期できるターゲット隣接ノードを最終的に決定することにより、各ノードの過去データ同期情報を総合的に考慮しながら、適切な隣接ノードを選択してデータ同期を行うことができ、例えば、各ノードの実際の輻輳状況及び負荷状況等の情報を考慮して、比較的科学的、合理的なターゲット隣接ノードを選択することができる。これにより、分散型システムにおけるデータ同期の時間を短縮し、同期効率を向上させることができる。さらに、従来技術に存在する分散型システムにおけるノードのデータ同期速度が遅く、データ同期効率が低いという技術的問題を解決することができる。
【0107】
以下、本願の上記実施例における分散型システムのデータ同期方法を実行することに用いることができる本願の装置の実施例を紹介する。本願の装置の実施例に開示されていない細部については、本願の上記分散型システムのデータ同期方法の実施例を参照されたい。
【0108】
図8は、本願の一実施例による分散型システムのデータ同期装置のブロック図である。
【0109】
図8に示すように、本願の一実施例による分散型システムのデータ同期装置800は、取得モジュール810と、決定モジュール820と、選択モジュール830と、同期モジュール840とを含む。
【0110】
ここで、取得モジュール810は、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得し、決定モジュール820は、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであり、選択モジュール830は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、同期モジュール840は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する。
【0111】
本願のいくつかの実施例では、前述の構成に基づいて、選択モジュール830は、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得し、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成される。
【0112】
本願のいくつかの実施例では、前述の構成に基づいて、取得モジュール810は、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する検出モジュールと、前記候補隣接ノードの過去データ同期情報を取得する実行モジュールと、を含む。
【0113】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータがブロックデータを含み、前記検出モジュールは、ターゲットノードにおけるブロックチェーン台帳の第1ブロックヘッダ高さを取得し、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第2ブロックヘッダ高さを取得し、前記第1ブロックヘッダ高さと前記第2ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出するように構成される。
【0114】
本願のいくつかの実施例では、前述の構成に基づいて、前記過去データ同期情報は、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含み、前記決定モジュール820は、前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出し、前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定するように構成される。
【0115】
本願のいくつかの実施例では、前述の構成に基づいて、前記過去データ同期情報は、過去データ伝送速度及び過去データ要求時点を含み、前記決定モジュール820は、以下の式によって、前記隣接ノードの選択重み値を計算するように構成される。
【0116】

【数3】
【0117】
ここで、Wは、i番目の隣接ノードの選択重み値を表し、jは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期を表し、mは、ターゲットノードとi番目の隣接ノードとの過去のm回目のデータ同期を表し、nは、ターゲットノードとi番目の隣接ノードとの過去の直近n回のデータ同期の回数を表し、Sは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期過程における過去データ伝送速度を表し、tは、ターゲットノードとi番目の隣接ノードとの過去のj回目のデータ同期の過去データ要求時点を表し、tは、前記i番目の隣接ノードの選択重み値の計算時点を表す。
【0118】
本願のいくつかの実施例では、前述の構成に基づいて、前記同期モジュール840は、前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させるように構成され、前記方法は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録するステップをさらに含む。
【0119】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記選択モジュール830は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択するように構成され、前記同期モジュール840は、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期するように構成される。
【0120】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータがブロックヘッダデータと完全なブロックデータとを含み、前記選択モジュール830は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第1ターゲット隣接ノードを選択するように構成され、前記同期モジュール840は、前記第1ターゲット隣接ノードから前記ブロックヘッダデータを同期するように構成される。
【0121】
前記選択モジュール830は、さらに、前記ブロックヘッダデータを同期した後に、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択するように構成され、前記同期モジュール840は、さらに、前記第2ターゲット隣接ノードから前記完全なブロックデータを同期するように構成される。
【0122】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記選択モジュール830は、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する前に、ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第3ブロックヘッダ高さを取得し、ターゲットノードにおけるブロックチェーン台帳の第4ブロックヘッダ高さを取得し、前記第3ブロックヘッダ高さと前記第4ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第2ターゲット隣接ノードを選択する必要があるか否かを検出するように構成される。
【0123】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記同期モジュール840は、前記第2ターゲット隣接ノードにおける完全なブロックデータをダウンロードし、前記完全なブロックデータの正当性を検証し、正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するように構成される。
【0124】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記同期モジュール840は、前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出し、前記ターゲットノードのブロックチェーン台帳に書き込むように構成される。
【0125】
注意すべきものとして、上記の詳細な説明には、分散型システムのデータ同期方法、及び分散型システムのデータ同期装置の若干のモジュールが言及されているが、このような分割は、強制的ではない。実際には、本願の実施形態によれば、上述した2つ以上のモジュール及び機能は、1つのモジュールで具現化されてもよい。逆に、上述した1つのモジュールの特徴及び機能は、さらに、複数のモジュールによって具現化されるように分割されてもよい。モジュールとして示される部品は、物理ユニットであってもよいし、物理ユニットではなくてもよく、同じ箇所に位置してもよいし、複数のネットワークユニットに分布してもよい。実際の必要に応じてそのうちの一部又は全部のモジュールを選択して本願の構成の目的を達成することができる。当業者であれば創造的な労働をすることなく、理解して実施することができる。
【0126】
別の態様として、本願では、さらに、本明細書の上記方法を実現することが可能なプログラム製品を記憶したコンピュータ可読記憶媒体が提供されている。いくつかの可能な実施形態では、本願の各態様は、プログラムコードが含まれるプログラム製品の形で実現されてもよく、前記プログラム製品が端末機器で実行されると、前記プログラムコードは、本明細書の上記「例示的な方法」部分に説明された本願の様々な例示的な実施形態によるステップを前記端末機器に実行させる。
【0127】
図9は、本願の実施形態による上記方法を実現するためのプログラム製品900を示している。図9に示すように、プログラム製品900は、プログラムコードが含まれる携帯型コンパクトディスク読み出し専用メモリ(CD-ROM)を用いてもよく、例えば、パソコンのような端末機器で実行されることができる。しかしながら、本願のプログラム製品は、これに限定されるものではなく、本明細書において、可読記憶媒体は、プログラムを含むか又は記憶した任意の有形の媒体であってもよく、該プログラムは、命令実行システム、装置、又はデバイスによって用いられるか、これらと組み合わせて用いられてもよい。
【0128】
前記プログラム製品は、1つ又は複数の可読媒体の任意の組み合わせを用いてもよい。可読媒体は、可読信号媒体又は可読記憶媒体であってもよい。可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、又は半導体のシステム、装置、又はデバイス、或いは、上記の任意の組み合わせであってもよいが、これらに限定されない。可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ又は複数の導線を有する電気的接続、携帯型ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、携帯型コンパクトディスク読み出し専用メモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は上記の任意の適切な組み合わせを含む。
【0129】
コンピュータ可読信号媒体は、ベースバンドで、又はキャリアの一部として伝搬されるデータ信号を含んでもよく、このデータ信号において可読プログラムコードが運ばれる。このような伝搬されるデータ信号は、様々な形式を用いてもよく、電磁信号、光信号、又は上記の任意の適切な組み合わせを含むが、これらに限定されない。可読信号媒体は、可読記憶媒体以外の任意の可読媒体であってもよい。該可読媒体は、命令実行システム、装置、又はデバイスによって用いられるか、これらと組み合わせて用いられるプログラムを送信、伝播、又は伝送することができる。
【0130】
可読媒体に含まれるプログラムコードは、無線、有線、光ケーブル、RFなど、又は上記の任意の適切な組み合わせを含むが、これらに限定されない任意の適切な媒体で伝送されてもよい。
【0131】
本願の処理を実行するためのプログラムコードを、1つ又は複数のプログラミング言語の任意の組み合わせで作成してもよい。前記プログラミング言語は、Java、C++などのようなオブジェクト指向のプログラミング言語を含み、「C」言語又は類似したプログラミング言語のような通常の手続き型プログラミング言語も含む。プログラムコードは、完全にユーザコンピューティング機器で実行されてもよいし、部分的にユーザ機器で実行されてもよいし、独立したソフトウェアパッケージとして実行されてもよいし、部分的にユーザコンピューティング機器でかつ部分的に遠隔コンピューティング機器で実行されてもよいし、完全に遠隔コンピューティング機器又はサーバで実行されてもよい。遠隔コンピューティング機器に関する場合、遠隔コンピューティング機器は、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)を含める任意の種類のネットワークを介して、ユーザコンピューティング機器に接続されてもよいし、又は外部のコンピューティング機器に接続されてもよい(例えば、インターネットサービスプロバイダを利用して、インターネットを介して接続される)。
【0132】
別の態様として、本願では、さらに、上記のような方法を実現することが可能な電子機器が提供されている。
【0133】
当業者であれば理解できるように、本願の様々な態様は、システム、方法、又はプログラム製品として実現されてもよい。したがって、本願の様々な態様は、具体的に、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、マイクロコードなどを含む)、又はハードウェアとソフトウェアとを組み合わせた実施形態として実現されてもよく、ここで、「回路」、「モジュール」、又は「システム」と総称することができる。
【0134】
以下、図10を参照しながら、本願のこの実施形態による電子機器1000を説明する。図10に示す電子機器1000は、一例にすぎず、本願の実施例の機能及び使用範囲を制限するものではない。
【0135】
図10に示すように、電子機器1000は、汎用コンピューティング機器として表現される。電子機器1000のコンポーネントは、少なくとも1つの処理ユニット1010と、少なくとも1つの記憶ユニット1020と、異なるシステムコンポーネント(記憶ユニット1020及び処理ユニット1010を含む)を接続するバス1030とを含むが、これらに限定されない。
【0136】
ここで、前記記憶ユニットには、プログラムコードが記憶されており、前記プログラムコードは、前記処理ユニット1010によって実行されることで、前記処理ユニット1010に、本明細書の上記「実施例の方法」部分で説明した本願の各例示的な実施形態によるステップを実行させることが可能である。
【0137】
記憶ユニット1020は、例えば、ランダムアクセスメモリ(RAM)1021及び/又はキャッシュメモリ1022などの揮発性メモリ形式の可読媒体を含んでもよく、読み出し専用メモリ(ROM)1023をさらに含んでもよい。
【0138】
記憶ユニット1020は、1組(少なくとも1つ)のプログラムモジュール1025を有するプログラム/ユーティリティ1024をさらに含んでもよく、このようなプログラムモジュール1025は、オペレーティングシステム、1つ又は複数のアプリケーションプログラム、その他のプログラムモジュール、及びプログラムデータを含むが、これらに限定されない。これらの例のそれぞれ又は組み合わせには、ネットワーク環境の実現が含まれ得る。
【0139】
バス1030は、いくつかのバス構造の1つ又は複数であってもよく、記憶ユニットバス又は記憶ユニットコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、処理ユニット、又は複数種のバス構造のいずれかを用いたローカルバスを含む。
【0140】
電子機器1000は、1つ又は複数の外部機器1200(例えば、キーボード、ポインティングデバイス、ブルートゥース(登録商標)機器など)と通信してもよいし、ユーザが該電子機器1000と対話することを可能にする1つ又は複数の機器と通信してもよいし、及び/又は、該電子機器1000が1つ又は複数の他のコンピューティング機器と通信することを可能にする任意の機器(例えば、ルータ、モデムなど)と通信してもよい。このような通信は、入力/出力(I/O)インタフェース1050を介して行うことができる。また、電子機器1000は、ネットワークアダプタ1060を介して、1つ又は複数のネットワーク(例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、及び/又は公衆ネットワーク、例えばインターネット)と通信してもよい。図示するように、ネットワークアダプタ1060は、バス1030を介して、電子機器1000の他のモジュールと通信する。理解すべきものとして、図示されないが、電子機器1000と組み合わせて、マイクロコード、デバイスドライバ、冗長処理ユニット、外部磁気ディスクドライブアレイ、RAIDシステム、磁気テープドライブ、及びデータバックアップストレージシステムなどを含むが、これらに限定されない他のハードウェア及び/又はソフトウェアモジュールを使用してもよい。
【0141】
以上の実施形態の説明により、ここで説明した例示的な実施形態がソフトウェアによって実現されてもよいし、ソフトウェアを必要なハードウェアと組み合わせるような方式で実現されてもよいことは、当業者であれば容易に理解することができる。したがって、本願の実施形態による構成は、ソフトウェア製品の形で表現することができ、該ソフトウェア製品は、不揮発性記憶媒体(CD-ROM、Uディスク、モバイルハードディスクなどであってもよい)、又はネットワークに記憶されてもよく、本願の実施形態による方法を1台のコンピューティング機器(パソコン、サーバ、端末装置、又はネットワーク機器などであってもよい)に実行させる若干の命令を含む。
【0142】
また、上記の図面は、本願の例示的な実施例による方法に含まれる処理の模式的な説明にすぎず、制限するものではない。上記の図面に示される処理は、これらの処理の時間的順序を示すか又は限定するものではないことを容易に理解することができる。また、これらの処理は、例えば、複数のモジュールにおいて同期的に又は非同期的に実行されてもよいことも容易に理解することができる。
【0143】
理解すべきものとして、本願は、以上で説明されて図面に示された精確な構成に限定されるものではなく、その範囲から逸脱することなく、様々な修正及び変更を行うことが可能である。本願の範囲は、添付の特許請求の範囲によってのみ限定される。
【符号の説明】
【0144】
800 分散型システムのデータ同期装置
810 取得モジュール
820 決定モジュール
830 選択モジュール
840 同期モジュール
900 プログラム
1010 処理ユニット
1020 記憶ユニット
1022 キャッシュ
1040 表示ユニット
1050 I/Oインタフェース
1060 ネットワークアダプタ
1200 外部機器
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10