一种基于区块链的数据同步方法及其系统技术方案

技术编号:33030324 阅读:12 留言:0更新日期:2022-04-15 09:06
本发明专利技术公开了一种基于区块链的数据同步方法及其系统,根据节点的高度,判断该节点是否可以成为本节点同步节点,若该节点是本节点的同步节点,则添加到同步节点列表;进行数据同步;从同步区间列表中获取待同步区间,并从同步节点列表中获取同步节点,为每一个空闲的同步节点创建一个同步线程,并发的向多个节点同步数据。本发明专利技术通过同步节点管理模块,发现并管理区块链网络中可以进行数据同步的节点,为数据同步提供多数据源,通过同步区间构造模块,合理规划每次同步的同步区间,为分散同步提供依据;通过同步进度管理模块,合理调度线程,通过多线程的方式,并发的从多个同步节点同步数据,实现了同步效率的提高。实现了同步效率的提高。实现了同步效率的提高。

【技术实现步骤摘要】
一种基于区块链的数据同步方法及其系统


[0001]本专利技术涉及区块链
,具体为一种基于区块链的数据同步方法及其系统。

技术介绍

[0002]当前区块链应用蓬勃发展,不断地有新用户加入到已有的区块链系统;但是新用户加入区块链网络后,面临着同步大量存量数据的问题;当前区块链系统大都是从某一个节点进行数据同步,由于被同步节点既要保证自己的运行,又要为同步节点提供同步服务,从而导致同步速度慢;而且大量从一个节点同步数据,可能会拖慢被同步节点的运行性能,影响被同步节点的正常使用。因此我们对此做出改进,提出一种基于区块链的数据同步方法及其系统。

技术实现思路

[0003]为了解决上述技术问题,本专利技术提供了如下的技术方案:
[0004]本专利技术一种基于区块链的数据同步方法,包括以下几个步骤:
[0005]步骤1、根据节点的高度,判断该节点是否可以成为本节点同步节点,若该节点是本节点的同步节点,则添加到同步节点列表;
[0006]步骤2、合理的选择同步区间的长度,并按照同步区间长度将待同步数据进行分段,形成多个同步区间;并将所有同步区间按照从小到大的顺序添加形成同步区间列表;在同步区间设有最小长度和最大长度,当待同步数据量小于最小长度时,直接将待同步数据构造为一个同步区间,当待同步数据量大于最小长度时,尝试按照同步节点数均匀划分同步区间,如果划分后区间长度大于最大同步区间长度,则按照最大同步区间长度对待同步数据进行划分;否则按照同步节点数均匀划分同步区间;
[0007]步骤3、进行数据同步;从同步区间列表中获取待同步区间,并从同步节点列表中获取同步节点,为每一个空闲的同步节点创建一个同步线程,并发的向多个节点同步数据,当发现有节点不满足同步需求时,通知莫不节点管理模块,删除该同步节点;当无可用的空闲节点时,该模块主线程休眠一段时间,之后重新检测是否有可用同步节点。
[0008]作为本专利技术的一种优选技术方案,所述的步骤1中根据节点的高度,判断该节点是否可以成为本节点同步节点的方法是,包括以下几个步骤,
[0009]步骤1、若该节点的区块高度是否大于本节点的区块高度,如果不大于,则该节点不能成为本节点的同步节点,按照普通对等节点处理;如果大于,则进入步骤2。
[0010]步骤2、判断当前节点是否处于数据同步状态,如果否,则将该节点是本节点的同步节点,并记录该节点的高度为本节点同步的第一目标高度,将该节点添加到本节点的同步节点列表,并标记为空闲状态;如果本节点处于同步状态,则进入步骤3;
[0011]步骤4、判断该节点高度是否大于本节点下一同步区间的目标高度,如果不大于,则该节点不能成为本节点的同步节点;即使该节点高度大于本地节点,但是其无法满足本节点的下一次同步需求,所以无需向该节点发起同步;如果大于,则添加该节点到本节点的
同步节点列表,并记录该节点为空闲状态。
[0012]作为本专利技术的一种优选技术方案,所述的按照同步区间长度将待同步数据进行分段,形成多个同步区间的方法是,包括以下几个步骤,
[0013]步骤1、判断节点区块高度是否大于本节点区块高度,如果不大于,则无需同步,不需要构造同步区间;如果大于则进入步骤2;
[0014]步骤2、判断当前节点是否处于同步状态,如果节点处于同步状态,则判断节点高度是否大于本节点的第一同步高度,如果不大于,则无需构造同步区间,如果大于则计算该节点与本节点第一目标高度之间的高度差,并进入步骤3;如果不处于同步状态,那么这个节点为本节点的第一同步节点,设置该节点区块高度为本节点的第一目标高度,计算该节点与本地节点的高度差,并进入步骤4。
[0015]步骤3、判断高度差是否大于同步区间最小值,如果不大于,则仅构造一个同步区间,区间的起始高度为本节点的高度加一,区间的结束高度为对方节点的高度,不进行数据的分段同步;如果高度差大于同步区间最小值,则进入步骤4;
[0016]步骤4、判断高度差除以同步节点数所得结果是否大于同步区间最大值,如果大于同步区间最大值,则按区间长度同步区间最大值进行区间划分,如果小于同步区间最大值,则按高度差除以节点数所得长度进行区间划分。
[0017]步骤5、将前几步构造的同步区间,添加到当前节点的同步区间列表中;这样待同步的数据就被分割成多个同步区间。
[0018]作为本专利技术的一种优选技术方案,所述的进行数据同步的方法具体为,包括以下步骤,
[0019]步骤1、判断当前节点的同步区间列表是否存在待同步的数据,如果不存在,则数据同步完成,退出节点同步状态,如果存在,挑选列表中的第一个同步区间,并进入步骤2;
[0020]步骤2、判断节点的同步节点列表是否有空闲的同步节点,如果没有,则等待一段时间,然后重新检查同步节点是否存在空闲,直到同步节点列表中有空闲的同步节点;获取到同步节点后,则进入步骤3;
[0021]步骤3、判断同步节点的区块高度是否大于当前同步区间的目标高度,如果小于,则将该节点从同步节点列表中删除,从同步节点列表中重新获取一个空闲节点;如果大于,则向该同步节点请求该同步区间内的数据,并重新回到步骤1;
[0022]步骤4、当从一个同步节点同步完对应同步区间内的数据时,则标记该节点为空闲状态,从新触发步骤1的检查,通过以上步骤的循环,完成所有已知待同步数据的同步。
[0023]作为本专利技术的一种优选技术方案,当所有已知待同步数据同步完成后,重新触发与现有节点交换区块高度,从而重新检查当前节点是否存在新的待同步数据,如果存在,则执行同步流程,如果不存在,则结束整个同步流程。
[0024]作为本专利技术的一种优选技术方案,一种基于区块链的数据同步方法的系统,包括点对点网络模块,同步节点管理模块、同步区间构造模块、同步进度管理模块、区块链存储模块;
[0025]所述的点对点网络模块,用于与已建立的节点交换节点列表,发现区块链系统中其他可用节点,点对点网络模块能够与为同步节点管理模块、同步区间构造模块、同步进度管理模块、区块链存储模块提供数据收发功能;
[0026]所述的同步节点管理模块用于根据节点的高度构造合理的同步区间;
[0027]所述的同步节点管理模块用于根据节点的区块高度,判断节点是能够成为本节点的同步节点,以及该节点是否具有更多的待同步数据;如果该节点存在可同步数据,则通知同步区间构造模块;
[0028]所述的同步进度管理模块用于按照同步节点的空闲情况创建同步线程,并发的从不同节点同步数据;能够在同步节点不能满足同步需求时,通知同步节点管理模块删除该同步节点;
[0029]所述的区块链存储模块能够处理从点对点网络模块,同步节点管理模块、同步区间构造模块、同步进度管理模块获取的区块,将其按序连接成链,并写入到存储磁盘。
[0030]本专利技术的有益效果是:
[0031]该种基于区块链的数据同步方法及其系统通过同步节点管理模块,发现并管理区块链网络中可以进行数据同步本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于区块链的数据同步方法,其特征在于:包括以下步骤,步骤1、根据节点的高度,判断该节点是否可以成为本节点同步节点,若该节点是本节点的同步节点,则添加到同步节点列表;步骤2、合理的选择同步区间的长度,并按照同步区间长度将待同步数据进行分段,形成多个同步区间;并将所有同步区间按照从小到大的顺序添加形成同步区间列表;在同步区间设有最小长度和最大长度,当待同步数据量小于最小长度时,直接将待同步数据构造为一个同步区间,当待同步数据量大于最小长度时,尝试按照同步节点数均匀划分同步区间,如果划分后区间长度大于最大同步区间长度,则按照最大同步区间长度对待同步数据进行划分;否则按照同步节点数均匀划分同步区间;步骤3、进行数据同步;从同步区间列表中获取待同步区间,并从同步节点列表中获取同步节点,为每一个空闲的同步节点创建一个同步线程,并发的向多个节点同步数据,当发现有节点不满足同步需求时,通知莫不节点管理模块,删除该同步节点;当无可用的空闲节点时,该模块主线程休眠一段时间,之后重新检测是否有可用同步节点。2.根据权利要求1所述的一种基于区块链的数据同步方法,其特征在于,所述的步骤1中根据节点的高度,判断该节点是否可以成为本节点同步节点的方法是,包括以下几个步骤,步骤1、若该节点的区块高度是否大于本节点的区块高度,如果不大于,则该节点不能成为本节点的同步节点,按照普通对等节点处理;如果大于,则进入步骤2;步骤2、判断当前节点是否处于数据同步状态,如果否,则将该节点是本节点的同步节点,并记录该节点的高度为本节点同步的第一目标高度,将该节点添加到本节点的同步节点列表,并标记为空闲状态;如果本节点处于同步状态,则进入步骤3;步骤4、判断该节点高度是否大于本节点下一同步区间的目标高度,如果不大于,则该节点不能成为本节点的同步节点;即使该节点高度大于本地节点,但是其无法满足本节点的下一次同步需求,所以无需向该节点发起同步;如果大于,则添加该节点到本节点的同步节点列表,并记录该节点为空闲状态。3.根据权利要求1所述的一种基于区块链的数据同步方法,其特征在于,所述的按照同步区间长度将待同步数据进行分段,形成多个同步区间的方法是,包括以下几个步骤,步骤1、判断节点区块高度是否大于本节点区块高度,如果不大于,则无需同步,不需要构造同步区间;如果大于则进入步骤2;步骤2、判断当前节点是否处于同步状态,如果节点处于同步状态,则判断节点高度是否大于本节点的第一同步高度,如果不大于,则无需构造同步区间,如果大于则计算该节点与本节点第一目标高度之间的高度差,并进入步骤3;如果不处于同步状态,那么这个节点为本节点的第一同步节点,设置该节点区块高度为本节点的第一目标高度,计算该节点与本地节点的高度差,并进入步骤4;步骤3、判断高度差是否大于同步区间最小值,如果不大于,则仅构造一个同步区间,区间的起始高度为本节点的高度加一,区间的结束高...

【专利技术属性】
技术研发人员:范路旗邓超国徐苗苗
申请(专利权)人:观源上海科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1