(57)【要約】  本願の実施例では、分散型システムのデータ同期方法、装置、コンピュータ可読媒体、及び電子機器が提供されている。該方法は、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、を含む。
2022500775.tif 000002
【特許請求の範囲】
【請求項１】
電子機器が実行する、複数のノードを含む分散型システムのデータ同期方法であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、
を含む方法。
【請求項２】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するステップと、
を含む請求項１に記載の方法。
【請求項３】
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
選択重み値が最も高い候補隣接ノードを前記ターゲット隣接ノードとして決定するステップを含む、
請求項２に記載の方法。
【請求項４】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する前記ステップは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの過去データ同期情報を取得するステップと、
を含む請求項１に記載の方法。
【請求項５】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックデータを含み、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、
前記ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さを取得するステップと、
前記ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さを取得するステップと、
前記第１ブロックヘッダ高さと前記第２ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出するステップと、を含む、
請求項４に記載の方法。
【請求項６】
前記過去データ同期情報は、前記ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、
前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出するステップと、
前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定するステップと、を含む、
請求項１に記載の方法。
【請求項７】
前記過去データ同期情報は、過去データ伝送速度及び過去データ要求時点を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、以下の式によって、前記隣接ノードの選択重み値を計算するステップを含み、
【数１】
2022500775.tif 000008
ここで、Ｗｉは、ｉ番目の隣接ノードの選択重み値を表し、ｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期を表し、ｍは、ターゲットノードとｉ番目の隣接ノードとの過去のｍ回目のデータ同期を表し、ｎは、ターゲットノードとｉ番目の隣接ノードとの過去の直近ｎ回のデータ同期の回数を表し、Ｓｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期過程における過去データ伝送速度を表し、ｔｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点を表し、ｔは、前記ｉ番目の隣接ノードの選択重み値の計算時点を表す、
請求項１に記載の方法。
【請求項８】
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、
前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させるステップを含み、
前記方法は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録するステップをさらに含む、
請求項１に記載の方法。
【請求項９】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックヘッダデータと完全なブロックデータとを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第１ターゲット隣接ノードを選択し、前記第１ターゲット隣接ノードから前記ブロックヘッダデータを同期するステップと、
前記ブロックヘッダデータを同期した後に、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するステップと、を含む、
請求項１乃至４のいずれか１項に記載の方法。
【請求項１０】
前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する前に、
前記ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第３ブロックヘッダ高さを取得するステップと、
前記ターゲットノードにおけるブロックチェーン台帳の第４ブロックヘッダ高さを取得するステップと、
前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出するステップと、
をさらに含む請求項９に記載の方法。
【請求項１１】
前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出する前記ステップは、
前記第３ブロックヘッダ高さが第４ブロックヘッダ高さよりも小さい場合、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択するステップをさらに含む、
請求項１０に記載の方法。
【請求項１２】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、完全なブロックデータを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するステップを含む、
請求項１乃至４のいずれか１項に記載の方法。
【請求項１３】
前記第２ターゲット隣接ノードから前記完全なブロックデータを同期することは、
前記第２ターゲット隣接ノードにおける完全なブロックデータをダウンロードするステップと、
前記完全なブロックデータの正当性を検証するステップと、
正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するステップと、
を含む請求項９又は１２に記載の方法。
【請求項１４】
前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期することは、
前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出して、前記ターゲットノードのブロックチェーン台帳に書き込むステップを含む、
請求項１３に記載の方法。
【請求項１５】
分散型システムのデータ同期装置であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するように構成された取得モジュールと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるように構成された決定モジュールと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成された選択モジュールと、
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するように構成された同期モジュールと、
を含む装置。
【請求項１６】
コンピュータプログラムを記憶したコンピュータ可読記憶媒体であって、該コンピュータプログラムには、実行可能命令が含まれ、該実行可能命令がプロセッサによって実行されると、請求項１乃至１４のいずれか１項に記載の方法を実施させるコンピュータ可読記憶媒体。
【請求項１７】
電子機器であって、
プロセッサと、
前記プロセッサの実行可能命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記実行可能命令を実行することにより、請求項１乃至１４のいずれか１項に記載の方法を実施するように構成される、
電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１９年７月１５日に国家知識産権局に提出された、出願番号が２０１９１０６３６１９５．１であり、発明の名称が「分散型システムのデータ同期方法、装置、媒体、電子機器」である中国特許出願に基づく優先権を主張し、その全ての内容は参照することにより本願に組み込まれる。
【０００２】
本願は、コンピュータ技術分野に関し、特に、分散型システムのデータ同期方法、装置、媒体、及び電子機器に関する。
【背景技術】
【０００３】
分散型システムは、ネットワークを介して通信を行い、共通のタスクを完了するために協調して動作する１組のコンピュータノードで構成されるシステムである。分散型システムでは、各ノードのいずれもデータの計算又は記憶に用いられる。また、分散型システムでは、ノード間でデータを同期する処理が必要な場合がある。例えば、ブロックチェーンシステムでは、新たなブロックチェーンノードが参加すると、他のブロックチェーンノードからデータを同期する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願は、分散型システムのデータ同期方法及び装置、コンピュータ可読記憶媒体、電子機器を提供して、少なくとも分散型システムにおけるデータ同期にかかる時間を短縮し、同期効率を向上させることができることを目的とする。
【０００５】
本願のその他の特徴及び利点は、以下の詳細な説明により明らかになり、又は、部分的に本願の実践により把握される。
【課題を解決するための手段】
【０００６】
本願の実施例の一態様によれば、分散型システムのデータ同期方法が提供されている。前記方法は、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、を含む。
【０００７】
本願の実施例の一態様によれば、分散型システムのデータ同期装置が提供されている。前記装置は、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するように構成された取得モジュールと、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるように構成された決定モジュールと、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成された選択モジュールと、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するように構成された同期モジュールと、を含む。
【０００８】
本願の実施例の一態様によれば、コンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供されており、該コンピュータプログラムには、実行可能命令が含まれ、該実行可能命令がプロセッサによって実行されると、上記実施例に記載の分散型システムのデータ同期方法を実現させる。
【０００９】
本願の実施例の一態様によれば、電子機器が提供されている。前記電子機器は、１つ又は複数のプロセッサと、前記プロセッサの実行可能命令を記憶するためのメモリと、を備え、前記実行可能命令が、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、上記実施例に記載の分散型システムのデータ同期方法を実現させる。
【００１０】
図面を参照しながらその例示的な実施例を詳細に説明することにより、本願の上記及びその他の特徴及び利点は、より明らかになる。
【図面の簡単な説明】
【００１１】
【図１】本願の実施例による分散型システムのデータ同期方法の適用シナリオの模式図である。
【図２】本願の実施例による分散型システムのデータ同期のフローチャートである。
【図３】本願の実施例による図２に示すステップ２１０の詳細なフローチャートである。
【図４】本願の実施例による図２に示すステップ２２０の詳細なフローチャートである。
【図５】本願の実施例による図２に示すステップ２３０の詳細なフローチャートである。
【図６】本願の実施例によるブロックヘッダデータ同期の詳細なフローチャートである。
【図７】本願の実施例による完全ブロックデータ同期の詳細なフローチャートである。
【図８】本願の実施例による分散型システムのデータ同期装置のブロック図である。
【図９】本願の実施例による上記方法を実現させるコンピュータ可読記憶媒体である。
【図１０】本願の実施例による上記方法を実現する電子機器の例示的なブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、例示的な実施例をより完全に説明する。しかしながら、例示的な実施例は、様々な形態で実施され、本明細書に記載の実施形態に限定されるものとして理解されるべきではない。逆に、これらの実施形態を提供することにより、本願が全面的かつ完全になり、例示的な実施例の構想が全面的に当業者に伝えられる。図面において、明瞭にするために、一部の部品の大きさを拡大するか変形させる場合がある。図面において、同一の符号が同一又は類似の構成を表しているので、それらの詳細な説明を省略する。
【００１３】
なお、説明される特徴、構成又は特性は、任意の適切な方式で１つ又は複数の実施例に組み合わせることができる。以下の説明において、多くの具体的な細部を提供することにより、本願の実施例に対する十分な理解を提供する。しかしながら、当業者が認識すべきものとして、本願の構成を実施するには、上記特定の細部のうち１つ又は複数がなくてもよいし、又は、他の方法、部品などを採用してもよい。他の場合には、本願の各態様をあいまいにしないように、公知の構成、方法、又は処理を詳しく示したり説明したりしない。
【００１４】
従来の分散型システムでは、ノード間のデータ同期処理に、通常、データ同期速度が遅く、同期効率が低いという問題が存在する。
【００１５】
これに鑑みて、本願は、上述した分散型システムにおけるノードのデータ同期速度が遅く、データ同期効率が低いという技術的問題を解決できる分散型システムのデータ同期方法、装置、媒体、及び電子機器を提供している。
【００１６】
まず、分散型システムのデータ同期方法の適用シナリオについて説明する。
【００１７】
図１は、分散型システムのデータ同期方法の適用シナリオの模式図である。
【００１８】
図１に示すように、シナリオ１００は、分散型システムにおける一部であり、ここで、電子機器１０１、１０２、１０３、１０４、及び１０５は、それぞれ、分散型システムにおけるノードであり、前記電子機器は、スマートフォン、タブレットコンピュータ、ノートパソコンなどのポータブルモバイル機器であってもよいし、コンピュータ機器、フィールド端末、デスクトップコンピュータ、サーバ、ワークステーションなどの据え置き型機器であってもよい。本願の実施環境は、分散型システム全体の任意１つのノードであってもよい。図１に示すように、スマートフォン１０１をデータ同期のターゲットノードとしてもよい。この場合、デスクトップコンピュータ１０２、ノートパソコン１０３、タブレットコンピュータ１０４、及びワークステーション１０５が、スマートフォン１０１の隣接ノードとなる。本願によれば、スマートフォン１０１は、データ同期を行う過程において、まず、デスクトップコンピュータ１０２、ノートパソコン１０３、タブレットコンピュータ１０４及びワークステーション１０５のそれぞれとの過去のデータ同期の過去データ同期情報を同時に取得し、次に、前記過去データ同期情報に基づいて、前記隣接ノードから前記スマートフォン１０１へデータを同期する効率をはかるための選択重み値を決定し、最後に、前記選択重み値に基づいて、前記スマートフォン１０１へデータを同期するためのターゲット隣接ノードを選択し、データ同期過程を完了する。
【００１９】
注意すべきものとして、本願において、分散型システムにおける各ノード間のデータ伝送は、通信接続のような接続（例えば有線通信の通信ネットワークの接続又は無線通信の通信ネットワークの接続）により実現されてもよい。
【００２０】
本願の第１態様によれば、分散型システムのデータ同期方法が提供されている。
【００２１】
分散型システムのデータ同期方法のフローチャートである図２を参照されたい。該データ同期方法の実行主体は、分散型システムに含まれる、データ同期が必要なノードであってもよく、例えば、いずれかのノードとして機能する電子機器であってもよい。該データ同期方法は、以下のステップを含んでもよい。
【００２２】
ステップ２１０で、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する。
【００２３】
ステップ２２０で、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである。
【００２４】
ステップ２３０で、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する。
【００２５】
以下、上記の実施ステップについて詳細に説明する。
【００２６】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップ２１０について、
具体的には、前記ターゲットノードとは、分散型システムにおける、データ同期が必要なノードであり、例えば、ブロックチェーンシステムにおけるいずれかのノードである。前記隣接ノードとは、前記分散型システムにおける、前記ターゲットノードに接続された他のノードである。
【００２７】
例示的な一実施例では、ステップ２１０において、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する過程は、図３に示すように完了することができ、具体的に以下のステップを含む。
【００２８】
ステップ２１０１で、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。
【００２９】
一実施例の具体的な実現において、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックデータを含んでもよい。前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、以下のように実現されてもよい。
【００３０】
まず、ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さを取得する。次に、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さを取得する。最後に、前記第１ブロックヘッダ高さと前記第２ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出する。
【００３１】
具体的には、ブロックチェーンシステムは、分散型システムの１種であり、その主な役割がデータの記憶である。保存する必要がある任意のデータは、ブロックチェーンに書き込まれてもよく、ブロックチェーンから読み出されてもよい。ブロックチェーンにおけるデータは、主にブロックの形で存在し、即ち、１つのブロックは、ブロックチェーンデータ全体の基本単位である。１つのブロックは、１つのブロックヘッダと、１つのブロック本体とを含み、ここで、ブロックヘッダには、現在ブロックの特徴値データ、例えば、現在時間、ブロックヘッダ高さ、前のブロックのハッシュ、及びブロック本体のハッシュなどが記録されるが、ブロック本体には、保存する必要がある実際のデータが記録される。ブロックチェーンにおけるブロックが厳密な順序で１方向に接続されることで、データチェーンが形成される。ブロックチェーンシステムでは、一定時間毎に１つのブロックが生成され、生成された新たなブロックが、直前に生成されたブロックの後に接続され、時間の経過とともに、ブロックチェーンデータが絶えずに更新される。また、ブロックチェーンシステムでは、新たなサーバがブロックチェーンネットワークに参加して１つのノードとなった後、新たに参加したノードがブロックチェーンシステムにおけるブロックデータを同期する必要がある。また、ブロックチェーンデータの絶え間ない更新に伴って、ブロックチェーンシステムにおける各ノードもブロックデータを絶えずに更新する必要がある。
【００３２】
ブロックチェーンデータでは、各々のブロックデータがユニークであるため、各ブロックデータのアイデンティティは、ブロックヘッダにおけるブロックヘッダ高さ又はハッシュ値によって識別可能である。ここで、ブロックチェーンデータにおけるブロックヘッダ高さは、ブロックの絶え間ない更新に伴って、段階的に増加し、即ち、１つのブロックが生成されるたびに、生成された新たなブロックのブロックヘッダ高さは１つ増加する。これに基づいて、本願は、ブロックヘッダ高さを利用することにより、ブロックチェーンシステムにおける前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出する。
【００３３】
具体的には、ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さと、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さとをそれぞれ取得し、前記第１ブロックヘッダ高さと第２ブロックヘッダ高さとの大きさを比較し、第２ブロックヘッダ高さが第１ブロックヘッダ高さよりも大きい場合は、前記ターゲットノードに接続された隣接ノードには、前記ターゲットノードへ同期する必要があるブロックデータが存在することを表す。
【００３４】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する過程では、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得することができる。このようにすると、候補隣接ノードの選択重み値を決定して、前記候補隣接ノードの中からターゲット隣接ノードを選択するだけで、データ同期の見込みがない隣接ノードをフィルタリングして除去することができ、不要な過去データ同期情報の取得を低減し、システムの記憶及び計算の負荷を軽減しつつ、前記過去データ同期情報の利用率を向上させるという利点がある。
【００３５】
ステップ２１０２で、前記候補隣接ノードの過去データ同期情報を取得する。
【００３６】
上記のような実施例では、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する利点は、前記隣接ノードの過去データ同期情報を取得する前に、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、全ての隣接ノードの中から、データ同期の見込みがある候補隣接ノードをさらに決定できることである。このようにすると、データ同期の見込みがない隣接ノードをフィルタリングして除去することができ、不要な過去データ同期情報の取得を低減し、システムの記憶及び計算の負荷を軽減しつつ、前記過去データ同期情報の利用率を向上させるという利点がある。
【００３７】
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるステップ２２０について、
例示的な一実施例では、前記過去データ同期情報は、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含んでもよく、ステップ２２０において、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する過程は、図４に示すように、具体的に以下のステップを含んでもよい。
【００３８】
ステップ２２０１で、前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出する。
【００３９】
本実施例において、前記エラー回数とは、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数である。具体的には、分散型システムにおけるノードとノードとの間でデータ同期を行う際に、ノード自体の障害やデータ伝送ネットワークの障害などにより、例えば、データ同期要求がタイムアウトしたり、データの同期ダウンロード中に異常が発生したり、ノードへのアクセスが失敗したりするノード同期失敗は避けられない。
【００４０】
本実施例では、前記エラー回数の閾値を設定することにより、ターゲットノードに接続された隣接ノードを選別し、即ち、前記エラー回数がある一定数を超えた隣接ノードをフィルタリングして、前記エラー回数がある一定数を超えていない隣接ノードを残し、最終的に、残された隣接ノードを後続のターゲット隣接ノード決定の候補としてもよい。前記エラー回数の閾値は、実際の状況に応じて設定されてもよく、例えば、３回に設定される。隣接ノード１、隣接ノード２、隣接ノード３、及び隣接ノード４の過去のデータ同期過程におけるエラー回数がそれぞれ４回、３回、１回、及び０回である場合、最終的に残された隣接ノードは、隣接ノード２、隣接ノード３、及び隣接ノード４であってもよい。
【００４１】
ステップ２２０２で、前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定する。
【００４２】
上記のような実施例によれば、エラー回数の閾値を設定して、データ同期に常にエラーが発生した隣接ノードをフィルタリングして除去し、前記エラー回数の少ない隣接ノードを残すことで、後続の同期過程におけるデータの同期成功率を向上させることができ、前記選択重み値を計算するためのシステムの負担を低減することもでき、さらに、システムの計算の負荷を軽減し、データ同期効率を向上させる。
【００４３】
例示的な一実施例では、前記過去データ同期情報は、過去データ伝送速度を含んでもよく、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定することは、以下の式によって、前記隣接ノードの選択重み値を計算することを含んでもよく、
【００４４】
【数１】
2022500775.tif 000003
【００４５】
ここで、Ｗｉは、ｉ番目の隣接ノードの選択重み値を表し、ｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期を表し、ｍは、ターゲットノードとｉ番目の隣接ノードとの過去のｍ回目のデータ同期を表し、ｎは、ターゲットノードとｉ番目の隣接ノードとの過去の直近ｎ回のデータ同期の回数を表し、Ｓｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期過程における過去データ伝送速度を表す。
【００４６】
具体的には、前記過去データ伝送速度とは、過去のデータ同期過程において伝送されたターゲットデータの大きさとデータ伝送時間との比であってもよいが、データ伝送時間とは、ターゲットノードが前記ターゲットデータを完全に受信した時点と、ターゲット隣接ノードに前記ターゲットデータのダウンロードを要求した時点との差であってもよい。例えば、あるデータ同期過程において、ターゲットノードがターゲット隣接ノードにターゲットデータのダウンロードを要求した時点が２０１９年７月１日１２時００分００秒であり、ターゲットノードが前記ターゲットデータを完全に受信した時点が２０１９年７月１日１２時００分０３秒である場合、データ伝送時間は３．００秒であり、前記ターゲットデータの大きさが３０Ｍｂであれば、今回の過去データ伝送速度は１０Ｍｂ／ｓである。
【００４７】
一実施例の具体的な実現において、ターゲットノードとある隣接ノードとの過去の直近５回のデータ同期過程におけるデータ伝送速度の平均値を、前記隣接ノードの選択重み値とするようにしてもよい。表１に示すように、ターゲットノードとある隣接ノードとの過去の直近５回のデータ同期過程におけるデータ伝送速度は、それぞれ、１０Ｍｂ／ｓ、３０Ｍｂ／ｓ、２０Ｍｂ／ｓ、１５Ｍｂ／ｓ、２５Ｍｂ／ｓである。従って、計算することにより、前記選択重み値がＷｉ＝２０であると決定することができる。
【００４８】
【表１】
2022500775.tif 000004
【００４９】
上記のような実施例によれば、前記隣接ノードの過去の直近ｎ回のデータ同期の平均データ伝送速度を、前記選択重み値を決定する要因として計算することにより、前記隣接ノードのデータ同期効率をよくはかることができる。これにより、ターゲット隣接ノードをより適切に選択し、さらに、データ同期効率を向上させる。
【００５０】
例示的な一実施例では、前記過去データ同期情報は、過去データ伝送速度と過去データ要求時点とを含んでもよく、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定することは、以下の式によって、前記隣接ノードの選択重み値を計算することを含んでもよい。
【００５１】
【数２】
2022500775.tif 000005
【００５２】
ここで、Ｗｉは、ｉ番目の隣接ノードの選択重み値を表し、ｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期を表し、ｍは、ターゲットノードとｉ番目の隣接ノードとの過去のｍ回目のデータ同期を表し、ｎは、ターゲットノードとｉ番目の隣接ノードとの過去の直近ｎ回のデータ同期の回数を表し、Ｓｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期過程における過去データ伝送速度を表し、ｔｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点を表し、ｔは、前記ｉ番目の隣接ノードの選択重み値の計算時点を表す。
【００５３】
具体的には、本実施例において、前記過去データ伝送速度とは、データ同期過程において伝送されたターゲットデータの大きさとデータ伝送時間との比であってもよい。前記過去データ要求時点は、過去のデータ同期過程においてターゲットノードがｉ番目の隣接ノードにターゲットデータのダウンロードを要求した時点であってもよく、本実施例では、主に前記ｉ番目の隣接ノードの選択重み値の計算時点から、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点までの時間長をはかるために用いられる。前記時間長は、前記ターゲットノードとｉ番目の隣接ノードとの間でデータ同期を行った頻度をはかることができ、つまり、前記時間長が短いほど、前記ターゲットノードとｉ番目の隣接ノードとの間でデータ同期を行った頻度が高くなることを表す。
【００５４】
一実施例の具体的な実現においては、ターゲットノードとｉ番目の隣接ノードとの過去の直近５回のデータ同期過程におけるデータ伝送速度の平均値と、前記ｉ番目の隣接ノードの選択重み値の計算時点から、ターゲットノードとｉ番目の隣接ノードとの過去の直近５回のデータ同期の過去データ要求時点までの時間長の平均値との和を、前記隣接ノードの選択重み値とするようにしてもよい。表２に示すように、ターゲットノードとｉ番目の隣接ノードとの過去の直近５回のデータ同期過程におけるデータ伝送速度は、それぞれ、１０Ｍｂ／ｓ、３０Ｍｂ／ｓ、２０Ｍｂ／ｓ、１５Ｍｂ／ｓ、２５Ｍｂ／ｓである。ターゲットノードが過去の直近５回でｉ番目の隣接ノードにターゲットデータのダウンロードを要求した時点は、それぞれ、２０１９年７月１日１２時００分００秒、２０１９年７月１日１２時００分１０秒、２０１９年７月１日１２時００分２０秒、２０１９年７月１日１２時００分３０秒、２０１９年７月１日１２時００分４０秒である。
【００５５】
【表２】
2022500775.tif 000006
【００５６】
前記ｉ番目の隣接ノードの選択重み値の計算時点ｔが２０１９年７月１日１２時００分５０秒である場合、本実施例の計算式によって、前記隣接ノードの選択重み値がＷｉ＝５０であることを計算することができる。
【００５７】
上記のような実施例によれば、前記隣接ノードの過去の直近ｎ回のデータ同期の平均データ伝送速度を、前記選択重み値を決定する要因として計算することにより、前記隣接ノードのデータ同期効率をよくはかることができる。しかしながら、ある隣接ノードのデータ伝送速度が高すぎると、他のノードが常にこの隣接ノードをターゲット隣接ノードとして選択することになり、これにより、ノードの負荷が重すぎてデータ同期効率が低下してしまう。データ伝送速度が高い隣接ノードについて、ターゲット隣接ノードとして選択された回数が頻繁になり、さらに、この隣接ノードの選択重み値の計算時点から、ターゲットノードとこの隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点までの時間長が短くなる。これに基づいて、前記ターゲットノードが前記隣接ノードへデータ同期を要求した過去データ要求時点を、前記選択重み値を決定する他の要因とすることにより、分散型システムにおけるターゲットノードに接続された隣接ノードのリソースのバランスをとり、ある隣接ノードが過度に利用されることによる前記隣接ノードの負荷が重すぎることを防ぐことができる。以上のような実施例に基づいて、より良好な隣接ノードを選択することができる。
【００５８】
上述したように、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する方式は、任意であってもよく、以上に示した例に限定されないことが理解できる。
【００５９】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップ２３０について、
例示的な一実施例では、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、図５に示すようなステップを含んでもよい。
【００６０】
図５は、本願の実施例によるステップ２３０の詳細なフローチャートであり、具体的に以下のステップを含む。
【００６１】
ステップ２３０１で、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。
【００６２】
一実施例の具体的な実現において、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックデータを含んでもよい。前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、以下のように実現されてもよい。
【００６３】
ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さと、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さとをそれぞれ取得する。そして、前記第１ブロックヘッダ高さと前記第２ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出し、第２ブロックヘッダ高さが第１ブロックヘッダ高さよりも大きい場合は、前記ターゲットノードに接続された隣接ノードには、前記ターゲットノードへ同期する必要があるブロックデータが存在することを表し、前記ターゲットノードへ同期する必要があるブロックデータが存在する隣接ノードを候補隣接ノードとする。
【００６４】
ステップ２３０２で、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択する。
【００６５】
一実施例の具体的な実現において、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、以下のように実現されてもよい。
【００６６】
前記候補隣接ノードの選択重み値に基づいて、前記候補隣接ノードを大きい順にソートし、前記選択重み値が最も大きい隣接ノードをターゲット隣接ノードとする。
【００６７】
上記のような実施例によれば、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する。これにより、選択されたターゲット隣接ノードのデータ不全に起因してデータ同期が失敗したことを回避することができ、さらにコンピュータネットワークリソースの浪費を低減させる。
【００６８】
例示的な一実施例では、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、完全なブロックデータを含んでもよく、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【００６９】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期する。
【００７０】
例示的な一実施例では、前記分散型システムは、ブロックチェーンシステムを含んでもよく、前記ターゲットデータは、ブロックヘッダデータと完全なブロックデータとを含んでもよく、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【００７１】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第１ターゲット隣接ノードを選択し、前記第１ターゲット隣接ノードから前記ブロックヘッダデータを同期する。
【００７２】
前記ブロックヘッダデータを同期した後、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期する。
【００７３】
一実施例の具体的な実現において、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する前に、
ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第３ブロックヘッダ高さを取得するステップと、
ターゲットノードにおけるブロックチェーン台帳の第４ブロックヘッダ高さを取得するステップと、
前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出するステップとを実現してもよい。前記第３ブロックヘッダ高さが第４ブロックヘッダ高さよりも小さい場合は、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があることを表す。
【００７４】
説明すべきものとして、ターゲットノードにおけるブロックチェーン台帳には、完全なブロックデータを有するブロックと、完全なブロックデータを有しないブロックとが存在し、ここで、完全なブロックデータを有するブロックは、ブロックヘッダとブロック本体とを含むが、完全なブロックデータを有しないブロックは、ブロックヘッダだけを含む。したがって、この具体的な実施例において、前記第３ブロックヘッダ高さとは、完全なブロックデータを有するブロックのブロックヘッダの高さを指し、前記第４ブロックヘッダ高さとは、完全なブロックデータを有しないブロックのブロックヘッダの高さを指す。完全なブロックデータを有するブロックのブロックヘッダの高さが、完全なブロックデータを有しないブロックのブロックヘッダの高さよりも小さい場合は、前記ターゲットノードには、完全なブロックデータを有しないブロックが存在することを表し、さらに、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があることを表す。
【００７５】
以下、分散型システムがブロックチェーンシステムである場合を例として、本願の実施例におけるデータ同期方式について詳細に説明する。ここで、該実施例では、ブロックデータを同期する過程が、ブロックヘッダデータを同期する過程と、完全なブロックデータを同期する過程とを含む場合を例として説明する。
【００７６】
一実施例の具体的な実現において、ターゲットノードがブロックヘッダデータを同期する具体的な実現は、図６に示すようなフローで繰り返し実施してもよく、前記フローは、具体的に以下のステップを含む。
【００７７】
ステップ６１０で、ローカルのブロックチェーン台帳のブロックヘッダ高さを取得する。
【００７８】
ステップ６２０で、ターゲットノードに接続された各隣接ノードの選択重み値を計算してソートする。
【００７９】
ステップ６３０で、全ての隣接ノードには、自ノードに必要な次のブロックヘッダデータが含まれるか否かをチェックし、自ノードに必要な次のブロックヘッダデータが含まれる場合、ステップ６４０を実行し、自ノードに必要な次のブロックヘッダデータが含まれない場合、ステップ６１０を実行して、次の同期サイクルを行う。
【００８０】
ステップ６４０で、選択重み値が最も高く、かつ、必要なブロックヘッダデータが存在する隣接ノードを決定する。
【００８１】
ステップ６５０で、前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信し、前記要求の時点を記録し、最も早いデータ同期ダウンロード要求の時点を削除する。
【００８２】
ステップ６６０で、ブロックヘッダデータを受信し、正当なブロックヘッダデータをローカルのブロックチェーン台帳に書き込む。
【００８３】
ステップ６７０で、今回のブロックヘッダデータ同期のデータ伝送速度を計算する。
【００８４】
注意すべきものとして、上記のようなステップ６５０を当業者がより容易に理解するために、ここでは具体的な例を挙げて説明する。例えば、前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信する前に、過去に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求履歴が３回存在し、かつ前記３回の要求履歴の要求時点が、それぞれ、２０１９年７月１日１２時００分００秒、２０１９年７月１日１２時０１分０１秒、２０１９年７月１日１２時０２分０１秒であり、ここで、２０１９年７月１日１２時００分００秒が、初回に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点である。２０１９年７月１日１２時０３分０１秒に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を再度送信すると、この時点、即ち２０１９年７月１日１２時０３分０１秒を記録し、初回に前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点、即ち２０１９年７月１日１２時００分００秒を削除する。最終的に記録された直近３回で前記隣接ノードへブロックヘッダデータ同期ダウンロードの要求を送信した要求時点は、それぞれ、２０１９年７月１日１２時０１分０１秒、２０１９年７月１日１２時０２分０１秒、及び２０１９年７月１日１２時０３分０１秒である。
【００８５】
一実施例の具体的な実現において、ターゲットノードが完全なブロックデータを同期する具体的な実現は、図７に示すようなフローで繰り返し実施してもよい。前記フローは、具体的に以下のステップを含む。
【００８６】
ステップ７１０で、ローカルのブロックチェーン台帳のブロックヘッダ高さと、完全なブロックデータのブロックヘッダ高さとを取得する。
【００８７】
ステップ７２０で、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高いか否かを検出し、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高い場合、ステップ７３０を実行し、前記ブロックヘッダ高さが、完全なブロックデータのブロックヘッダ高さよりも高くない場合、ステップ７１０を実行して、次の同期サイクルを行う。
【００８８】
ステップ７３０で、ターゲットノードに接続された各隣接ノードの選択重み値を計算してソートする。
【００８９】
ステップ７４０で、ソートされた隣接ノードに前記ターゲットノードの次の完全なブロックデータが含まれるか否かを検出し、前記ターゲットノードの次の完全なブロックデータが含まれる場合、ステップ７５０を実行し、前記ターゲットノードの次の完全なブロックデータが含まれない場合、ステップ７１０を実行して、次の同期サイクルを行う。
【００９０】
ステップ７５０で、選択重み値が最も高く、かつ、必要な完全なブロックデータが存在する隣接ノードを決定する。
【００９１】
ステップ７６０で、前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信し、前記要求の時点を記録し、最も早いデータ同期ダウンロード要求の時点を削除する。
【００９２】
ステップ７７０で、前記完全なブロックデータを受信し、正当で完全なブロックデータを完全なブロックデータのバッファに記憶する。
【００９３】
ステップ７８０で、今回の完全なブロックデータ同期のデータ伝送速度を計算し、最も早い完全なブロックデータ同期のデータ伝送速度を削除する。
【００９４】
注意すべきものとして、上記のようなステップ７６０を当業者がより容易に理解するために、ここでは具体的な例を挙げて説明する。例えば、前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信する前に、過去に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求履歴が３回存在し、かつ前記３回の要求履歴の要求時点が、それぞれ、２０１９年７月１日１２時００分００秒、２０１９年７月１日１２時０１分０１秒、２０１９年７月１日１２時０２分０１秒であり、ここで、２０１９年７月１日１２時００分００秒が、初回に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点である。２０１９年７月１日１２時０３分０１秒に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を再度送信すると、この時点、即ち２０１９年７月１日１２時０３分０１秒を記録し、初回に前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点、即ち２０１９年７月１日１２時００分００秒を削除する。最終的に記録された直近３回で前記隣接ノードへ完全なブロックデータ同期ダウンロードの要求を送信した要求時点は、それぞれ、２０１９年７月１日１２時０１分０１秒、２０１９年７月１日１２時０２分０１秒、及び２０１９年７月１日１２時０３分０１秒である。
【００９５】
上記のような実施例では、前記完全なブロックデータを同期する前にブロックヘッダデータを同期することによる利点が２つある。１つは、完全なブロックデータは、データ量が大きく、安全性の要求が高いため、ブロックチェーンシステムに新たに追加されたターゲットノードに対して完全なブロックデータの同期を行うとき、データ同期時間が長く、データ同期要求が拒否されてしまうことが非常に起こりやすい。しかしながら、ブロックヘッダデータは、データ量が小さく、安全性の要求が高くないため、ブロックチェーンシステムに新たに追加されたターゲットノードに対してデータ同期を行うのに非常に好適である。もう１つは、ターゲットノードがまずブロックヘッダデータを同期することは、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するためのターゲット隣接ノードを選択する必要があるか否かを検出することに役立ち、前記ターゲットノードが、前記ターゲットノードへ前記完全なブロックデータを同期するためのターゲット隣接ノードを選択する必要がないことを検出すると、前記ターゲットノードが隣接ノードの選択重み値を計算する必要がないため、コンピュータリソースを節約する。
【００９６】
一実施例の具体的な実現において、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期することは、以下のように実現されてもよい。
【００９７】
前記第２ターゲット隣接ノードにおける完全なブロックデータをダウンロードし、前記完全なブロックデータの正当性を検証し、正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期する。
【００９８】
一実施例の具体的な実現において、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期することは、以下のように実現されてもよい。
【００９９】
前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出して、前記ターゲットノードのブロックチェーン台帳に書き込む。
【０１００】
例示的な一実施例では、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、以下のように実現されてもよい。
【０１０１】
前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させる。
【０１０２】
一実施例の具体的な実現において、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録する。
【０１０３】
前記ターゲットデータの同期が失敗することとは、データ同期要求がタイムアウトしたことであってもよいし、データの同期ダウンロード過程に異常が発生したことであってもよいし、ターゲット隣接ノードへのアクセスに失敗したことであってもよい。
【０１０４】
一実施例の具体的な実現において、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が成功すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のデータ伝送速度及びデータ要求時点を記録する。
【０１０５】
上述したように、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する方式は、任意であってもよく、以上に示したものに限定されないことが理解できる。
【０１０６】
以上のように、本願の実施例の構成では、ターゲットノードに接続された隣接ノードの過去データ同期情報に基づいて、各隣接ノードに対して、前記隣接ノードから前記ターゲットノードへのデータ同期の同期効率を反映できる選択重み値を決定し、異なる隣接ノードに対応する選択重み値に基づいて、前記ターゲットノードへデータを同期できるターゲット隣接ノードを最終的に決定することにより、各ノードの過去データ同期情報を総合的に考慮しながら、適切な隣接ノードを選択してデータ同期を行うことができ、例えば、各ノードの実際の輻輳状況及び負荷状況等の情報を考慮して、比較的科学的、合理的なターゲット隣接ノードを選択することができる。これにより、分散型システムにおけるデータ同期の時間を短縮し、同期効率を向上させることができる。さらに、従来技術に存在する分散型システムにおけるノードのデータ同期速度が遅く、データ同期効率が低いという技術的問題を解決することができる。
【０１０７】
以下、本願の上記実施例における分散型システムのデータ同期方法を実行することに用いることができる本願の装置の実施例を紹介する。本願の装置の実施例に開示されていない細部については、本願の上記分散型システムのデータ同期方法の実施例を参照されたい。
【０１０８】
図８は、本願の一実施例による分散型システムのデータ同期装置のブロック図である。
【０１０９】
図８に示すように、本願の一実施例による分散型システムのデータ同期装置８００は、取得モジュール８１０と、決定モジュール８２０と、選択モジュール８３０と、同期モジュール８４０とを含む。
【０１１０】
ここで、取得モジュール８１０は、ターゲットノードに接続された隣接ノードの過去データ同期情報を取得し、決定モジュール８２０は、前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであり、選択モジュール８３０は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、同期モジュール８４０は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する。
【０１１１】
本願のいくつかの実施例では、前述の構成に基づいて、選択モジュール８３０は、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得し、前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成される。
【０１１２】
本願のいくつかの実施例では、前述の構成に基づいて、取得モジュール８１０は、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得する検出モジュールと、前記候補隣接ノードの過去データ同期情報を取得する実行モジュールと、を含む。
【０１１３】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータがブロックデータを含み、前記検出モジュールは、ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さを取得し、ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さを取得し、前記第１ブロックヘッダ高さと前記第２ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出するように構成される。
【０１１４】
本願のいくつかの実施例では、前述の構成に基づいて、前記過去データ同期情報は、ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含み、前記決定モジュール８２０は、前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出し、前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定するように構成される。
【０１１５】
本願のいくつかの実施例では、前述の構成に基づいて、前記過去データ同期情報は、過去データ伝送速度及び過去データ要求時点を含み、前記決定モジュール８２０は、以下の式によって、前記隣接ノードの選択重み値を計算するように構成される。
【０１１６】
【数３】
2022500775.tif 000007
【０１１７】
ここで、Ｗｉは、ｉ番目の隣接ノードの選択重み値を表し、ｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期を表し、ｍは、ターゲットノードとｉ番目の隣接ノードとの過去のｍ回目のデータ同期を表し、ｎは、ターゲットノードとｉ番目の隣接ノードとの過去の直近ｎ回のデータ同期の回数を表し、Ｓｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期過程における過去データ伝送速度を表し、ｔｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点を表し、ｔは、前記ｉ番目の隣接ノードの選択重み値の計算時点を表す。
【０１１８】
本願のいくつかの実施例では、前述の構成に基づいて、前記同期モジュール８４０は、前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させるように構成され、前記方法は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録するステップをさらに含む。
【０１１９】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記選択モジュール８３０は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択するように構成され、前記同期モジュール８４０は、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するように構成される。
【０１２０】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータがブロックヘッダデータと完全なブロックデータとを含み、前記選択モジュール８３０は、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第１ターゲット隣接ノードを選択するように構成され、前記同期モジュール８４０は、前記第１ターゲット隣接ノードから前記ブロックヘッダデータを同期するように構成される。
【０１２１】
前記選択モジュール８３０は、さらに、前記ブロックヘッダデータを同期した後に、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択するように構成され、前記同期モジュール８４０は、さらに、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するように構成される。
【０１２２】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記選択モジュール８３０は、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する前に、ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第３ブロックヘッダ高さを取得し、ターゲットノードにおけるブロックチェーン台帳の第４ブロックヘッダ高さを取得し、前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出するように構成される。
【０１２３】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記同期モジュール８４０は、前記第２ターゲット隣接ノードにおける完全なブロックデータをダウンロードし、前記完全なブロックデータの正当性を検証し、正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するように構成される。
【０１２４】
本願のいくつかの実施例では、前述の構成に基づいて、前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータが完全なブロックデータを含み、前記同期モジュール８４０は、前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出し、前記ターゲットノードのブロックチェーン台帳に書き込むように構成される。
【０１２５】
注意すべきものとして、上記の詳細な説明には、分散型システムのデータ同期方法、及び分散型システムのデータ同期装置の若干のモジュールが言及されているが、このような分割は、強制的ではない。実際には、本願の実施形態によれば、上述した２つ以上のモジュール及び機能は、１つのモジュールで具現化されてもよい。逆に、上述した１つのモジュールの特徴及び機能は、さらに、複数のモジュールによって具現化されるように分割されてもよい。モジュールとして示される部品は、物理ユニットであってもよいし、物理ユニットではなくてもよく、同じ箇所に位置してもよいし、複数のネットワークユニットに分布してもよい。実際の必要に応じてそのうちの一部又は全部のモジュールを選択して本願の構成の目的を達成することができる。当業者であれば創造的な労働をすることなく、理解して実施することができる。
【０１２６】
別の態様として、本願では、さらに、本明細書の上記方法を実現することが可能なプログラム製品を記憶したコンピュータ可読記憶媒体が提供されている。いくつかの可能な実施形態では、本願の各態様は、プログラムコードが含まれるプログラム製品の形で実現されてもよく、前記プログラム製品が端末機器で実行されると、前記プログラムコードは、本明細書の上記「例示的な方法」部分に説明された本願の様々な例示的な実施形態によるステップを前記端末機器に実行させる。
【０１２７】
図９は、本願の実施形態による上記方法を実現するためのプログラム製品９００を示している。図９に示すように、プログラム製品９００は、プログラムコードが含まれる携帯型コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）を用いてもよく、例えば、パソコンのような端末機器で実行されることができる。しかしながら、本願のプログラム製品は、これに限定されるものではなく、本明細書において、可読記憶媒体は、プログラムを含むか又は記憶した任意の有形の媒体であってもよく、該プログラムは、命令実行システム、装置、又はデバイスによって用いられるか、これらと組み合わせて用いられてもよい。
【０１２８】
前記プログラム製品は、１つ又は複数の可読媒体の任意の組み合わせを用いてもよい。可読媒体は、可読信号媒体又は可読記憶媒体であってもよい。可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、又は半導体のシステム、装置、又はデバイス、或いは、上記の任意の組み合わせであってもよいが、これらに限定されない。可読記憶媒体のより具体的な例（非網羅的なリスト）は、１つ又は複数の導線を有する電気的接続、携帯型ディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、携帯型コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、又は上記の任意の適切な組み合わせを含む。
【０１２９】
コンピュータ可読信号媒体は、ベースバンドで、又はキャリアの一部として伝搬されるデータ信号を含んでもよく、このデータ信号において可読プログラムコードが運ばれる。このような伝搬されるデータ信号は、様々な形式を用いてもよく、電磁信号、光信号、又は上記の任意の適切な組み合わせを含むが、これらに限定されない。可読信号媒体は、可読記憶媒体以外の任意の可読媒体であってもよい。該可読媒体は、命令実行システム、装置、又はデバイスによって用いられるか、これらと組み合わせて用いられるプログラムを送信、伝播、又は伝送することができる。
【０１３０】
可読媒体に含まれるプログラムコードは、無線、有線、光ケーブル、ＲＦなど、又は上記の任意の適切な組み合わせを含むが、これらに限定されない任意の適切な媒体で伝送されてもよい。
【０１３１】
本願の処理を実行するためのプログラムコードを、１つ又は複数のプログラミング言語の任意の組み合わせで作成してもよい。前記プログラミング言語は、Ｊａｖａ、Ｃ＋＋などのようなオブジェクト指向のプログラミング言語を含み、「Ｃ」言語又は類似したプログラミング言語のような通常の手続き型プログラミング言語も含む。プログラムコードは、完全にユーザコンピューティング機器で実行されてもよいし、部分的にユーザ機器で実行されてもよいし、独立したソフトウェアパッケージとして実行されてもよいし、部分的にユーザコンピューティング機器でかつ部分的に遠隔コンピューティング機器で実行されてもよいし、完全に遠隔コンピューティング機器又はサーバで実行されてもよい。遠隔コンピューティング機器に関する場合、遠隔コンピューティング機器は、ローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）を含める任意の種類のネットワークを介して、ユーザコンピューティング機器に接続されてもよいし、又は外部のコンピューティング機器に接続されてもよい（例えば、インターネットサービスプロバイダを利用して、インターネットを介して接続される）。
【０１３２】
別の態様として、本願では、さらに、上記のような方法を実現することが可能な電子機器が提供されている。
【０１３３】
当業者であれば理解できるように、本願の様々な態様は、システム、方法、又はプログラム製品として実現されてもよい。したがって、本願の様々な態様は、具体的に、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、マイクロコードなどを含む）、又はハードウェアとソフトウェアとを組み合わせた実施形態として実現されてもよく、ここで、「回路」、「モジュール」、又は「システム」と総称することができる。
【０１３４】
以下、図１０を参照しながら、本願のこの実施形態による電子機器１０００を説明する。図１０に示す電子機器１０００は、一例にすぎず、本願の実施例の機能及び使用範囲を制限するものではない。
【０１３５】
図１０に示すように、電子機器１０００は、汎用コンピューティング機器として表現される。電子機器１０００のコンポーネントは、少なくとも１つの処理ユニット１０１０と、少なくとも１つの記憶ユニット１０２０と、異なるシステムコンポーネント（記憶ユニット１０２０及び処理ユニット１０１０を含む）を接続するバス１０３０とを含むが、これらに限定されない。
【０１３６】
ここで、前記記憶ユニットには、プログラムコードが記憶されており、前記プログラムコードは、前記処理ユニット１０１０によって実行されることで、前記処理ユニット１０１０に、本明細書の上記「実施例の方法」部分で説明した本願の各例示的な実施形態によるステップを実行させることが可能である。
【０１３７】
記憶ユニット１０２０は、例えば、ランダムアクセスメモリ（ＲＡＭ）１０２１及び／又はキャッシュメモリ１０２２などの揮発性メモリ形式の可読媒体を含んでもよく、読み出し専用メモリ（ＲＯＭ）１０２３をさらに含んでもよい。
【０１３８】
記憶ユニット１０２０は、１組（少なくとも１つ）のプログラムモジュール１０２５を有するプログラム／ユーティリティ１０２４をさらに含んでもよく、このようなプログラムモジュール１０２５は、オペレーティングシステム、１つ又は複数のアプリケーションプログラム、その他のプログラムモジュール、及びプログラムデータを含むが、これらに限定されない。これらの例のそれぞれ又は組み合わせには、ネットワーク環境の実現が含まれ得る。
【０１３９】
バス１０３０は、いくつかのバス構造の１つ又は複数であってもよく、記憶ユニットバス又は記憶ユニットコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、処理ユニット、又は複数種のバス構造のいずれかを用いたローカルバスを含む。
【０１４０】
電子機器１０００は、１つ又は複数の外部機器１２００（例えば、キーボード、ポインティングデバイス、ブルートゥース（登録商標）機器など）と通信してもよいし、ユーザが該電子機器１０００と対話することを可能にする１つ又は複数の機器と通信してもよいし、及び／又は、該電子機器１０００が１つ又は複数の他のコンピューティング機器と通信することを可能にする任意の機器（例えば、ルータ、モデムなど）と通信してもよい。このような通信は、入力／出力（Ｉ／Ｏ）インタフェース１０５０を介して行うことができる。また、電子機器１０００は、ネットワークアダプタ１０６０を介して、１つ又は複数のネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、及び／又は公衆ネットワーク、例えばインターネット）と通信してもよい。図示するように、ネットワークアダプタ１０６０は、バス１０３０を介して、電子機器１０００の他のモジュールと通信する。理解すべきものとして、図示されないが、電子機器１０００と組み合わせて、マイクロコード、デバイスドライバ、冗長処理ユニット、外部磁気ディスクドライブアレイ、ＲＡＩＤシステム、磁気テープドライブ、及びデータバックアップストレージシステムなどを含むが、これらに限定されない他のハードウェア及び／又はソフトウェアモジュールを使用してもよい。
【０１４１】
以上の実施形態の説明により、ここで説明した例示的な実施形態がソフトウェアによって実現されてもよいし、ソフトウェアを必要なハードウェアと組み合わせるような方式で実現されてもよいことは、当業者であれば容易に理解することができる。したがって、本願の実施形態による構成は、ソフトウェア製品の形で表現することができ、該ソフトウェア製品は、不揮発性記憶媒体（ＣＤ−ＲＯＭ、Ｕディスク、モバイルハードディスクなどであってもよい）、又はネットワークに記憶されてもよく、本願の実施形態による方法を１台のコンピューティング機器（パソコン、サーバ、端末装置、又はネットワーク機器などであってもよい）に実行させる若干の命令を含む。
【０１４２】
また、上記の図面は、本願の例示的な実施例による方法に含まれる処理の模式的な説明にすぎず、制限するものではない。上記の図面に示される処理は、これらの処理の時間的順序を示すか又は限定するものではないことを容易に理解することができる。また、これらの処理は、例えば、複数のモジュールにおいて同期的に又は非同期的に実行されてもよいことも容易に理解することができる。
【０１４３】
理解すべきものとして、本願は、以上で説明されて図面に示された精確な構成に限定されるものではなく、その範囲から逸脱することなく、様々な修正及び変更を行うことが可能である。本願の範囲は、添付の特許請求の範囲によってのみ限定される。
【符号の説明】
【０１４４】
800  分散型システムのデータ同期装置
810  取得モジュール
820  決定モジュール
830  選択モジュール
840  同期モジュール
900  プログラム
1010  処理ユニット
1020  記憶ユニット
1022  キャッシュ
1040  表示ユニット
1050  Ｉ／Ｏインタフェース
1060  ネットワークアダプタ
1200  外部機器
【図１】
2022500775.tif 000009
【図２】
2022500775.tif 000010
【図３】
2022500775.tif 000011
【図４】
2022500775.tif 000012
【図５】
2022500775.tif 000013
【図６】
2022500775.tif 000014
【図７】
2022500775.tif 000015
【図８】
2022500775.tif 000016
【図９】
2022500775.tif 000017
【図１０】
2022500775.tif 000018
【手続補正書】
【提出日】令和3年3月16日(2021.3.16)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電子機器が実行する、複数のノードを含む分散型システムのデータ同期方法であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するステップと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定するステップであって、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものである、ステップと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するステップと、
を含む方法。
【請求項２】
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するステップと、
を含む請求項１に記載の方法。
【請求項３】
前記候補隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択することは、
選択重み値が最も高い候補隣接ノードを前記ターゲット隣接ノードとして決定するステップを含む、
請求項２に記載の方法。
【請求項４】
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得する前記ステップは、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することにより、前記ターゲットノードへデータを同期する必要がある候補隣接ノードを取得するステップと、
前記候補隣接ノードの過去データ同期情報を取得するステップと、
を含む請求項１に記載の方法。
【請求項５】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックデータを含み、
前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出することは、
前記ターゲットノードにおけるブロックチェーン台帳の第１ブロックヘッダ高さを取得するステップと、
前記ターゲットノードに接続された隣接ノードにおけるブロックチェーン台帳の第２ブロックヘッダ高さを取得するステップと、
前記第１ブロックヘッダ高さと前記第２ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードに接続された各隣接ノードには、前記ターゲットノードへ同期する必要があるデータが存在するか否かを検出するステップと、を含む、
請求項４に記載の方法。
【請求項６】
前記過去データ同期情報は、前記ターゲットノードと前記隣接ノードとの過去のデータ同期過程におけるエラー回数を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、
前記エラー回数がエラー回数の閾値を超えていない隣接ノードを検出するステップと、
前記過去データ同期情報に基づいて、前記エラー回数が前記エラー回数の閾値を超えていない隣接ノードの選択重み値を決定するステップと、を含む、
請求項１に記載の方法。
【請求項７】
前記過去データ同期情報は、過去データ伝送速度及び過去データ要求時点を含み、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定する前記ステップは、以下の式によって、前記隣接ノードの選択重み値を計算するステップを含み、
【数１】
2022500775.tif 000019
ここで、Ｗｉは、ｉ番目の隣接ノードの選択重み値を表し、ｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期を表し、ｍは、ターゲットノードとｉ番目の隣接ノードとの過去のｍ回目のデータ同期を表し、ｎは、ターゲットノードとｉ番目の隣接ノードとの過去の直近ｎ回のデータ同期の回数を表し、Ｓｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期過程における過去データ伝送速度を表し、ｔｊは、ターゲットノードとｉ番目の隣接ノードとの過去のｊ回目のデータ同期の過去データ要求時点を表し、ｔは、前記ｉ番目の隣接ノードの選択重み値の計算時点を表す、
請求項１に記載の方法。
【請求項８】
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期することは、
前記ターゲットデータに対するダウンロード要求を前記ターゲット隣接ノードに送信することにより、前記ターゲット隣接ノードに、前記ダウンロード要求に基づいて前記ターゲットノードへ前記ターゲットデータを送信させるステップを含み、
前記方法は、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する過程において、前記ターゲットデータの同期が失敗すると、前記ターゲットノードと前記ターゲット隣接ノードとのデータ同期のエラー回数を記録するステップをさらに含む、
請求項１に記載の方法。
【請求項９】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、ブロックヘッダデータと完全なブロックデータとを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記ブロックヘッダデータを同期するための第１ターゲット隣接ノードを選択し、前記第１ターゲット隣接ノードから前記ブロックヘッダデータを同期するステップと、
前記ブロックヘッダデータを同期した後に、前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するステップと、を含む、
請求項１乃至４のいずれか１項に記載の方法。
【請求項１０】
前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する前に、
前記ターゲットノードにおけるブロックチェーン台帳の、完全なブロックデータを有する第３ブロックヘッダ高さを取得するステップと、
前記ターゲットノードにおけるブロックチェーン台帳の第４ブロックヘッダ高さを取得するステップと、
前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出するステップと、
をさらに含む請求項９に記載の方法。
【請求項１１】
前記第３ブロックヘッダ高さと前記第４ブロックヘッダ高さとの大きさを比較することにより、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択する必要があるか否かを検出する前記ステップは、
前記第３ブロックヘッダ高さが第４ブロックヘッダ高さよりも小さい場合、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択するステップをさらに含む、
請求項１０に記載の方法。
【請求項１２】
前記分散型システムは、ブロックチェーンシステムを含み、前記ターゲットデータは、完全なブロックデータを含み、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択し、前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期する前記ステップは、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するための第２ターゲット隣接ノードを選択し、前記第２ターゲット隣接ノードから前記完全なブロックデータを同期するステップを含む、
請求項１乃至４のいずれか１項に記載の方法。
【請求項１３】
前記第２ターゲット隣接ノードから前記完全なブロックデータを同期することは、
前記第２ターゲット隣接ノードにおける完全なブロックデータをダウンロードするステップと、
前記完全なブロックデータの正当性を検証するステップと、
正当で完全なブロックデータを前記ターゲットノードのブロックデータバッファに追加し、前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期するステップと、
を含む請求項９又は１２に記載の方法。
【請求項１４】
前記ブロックデータバッファに記憶されているデータに基づいて、前記ターゲットノードへ前記完全なブロックデータを同期することは、
前記ターゲットノードにおけるブロックチェーン台帳で示されたブロック順序に従って、前記ブロックデータバッファから相応のブロックデータを読み出して、前記ターゲットノードのブロックチェーン台帳に書き込むステップを含む、
請求項１３に記載の方法。
【請求項１５】
分散型システムのデータ同期装置であって、
ターゲットノードに接続された隣接ノードの過去データ同期情報を取得するように構成された取得モジュールと、
前記過去データ同期情報に基づいて、前記隣接ノードの選択重み値を決定し、前記選択重み値が、前記隣接ノードから前記ターゲットノードへデータを同期する効率をはかるためのものであるように構成された決定モジュールと、
前記隣接ノードの選択重み値に基づいて、前記ターゲットノードへデータを同期するためのターゲット隣接ノードを選択するように構成された選択モジュールと、
前記ターゲット隣接ノードにおけるターゲットデータを前記ターゲットノードに同期するように構成された同期モジュールと、
を含む装置。
【請求項１６】
請求項１乃至１４のいずれか１項に記載の方法を電子機器に実施させるコンピュータプログラム。
【請求項１７】
電子機器であって、
プロセッサと、
前記プロセッサの実行可能命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記実行可能命令を実行することにより、請求項１乃至１４のいずれか１項に記載の方法を実施するように構成される、
電子機器。
【国際調査報告】
2022500775.tif 000020
2022500775.tif 000021
2022500775.tif 000022
2022500775.tif 000023