CN112714192A - 数据同步方法、装置、计算机可读介质及电子设备 - Google Patents

数据同步方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN112714192A
CN112714192A CN202110317042.8A CN202110317042A CN112714192A CN 112714192 A CN112714192 A CN 112714192A CN 202110317042 A CN202110317042 A CN 202110317042A CN 112714192 A CN112714192 A CN 112714192A
Authority
CN
China
Prior art keywords
height
block
request
node
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110317042.8A
Other languages
English (en)
Other versions
CN112714192B (zh
Inventor
刘攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110317042.8A priority Critical patent/CN112714192B/zh
Publication of CN112714192A publication Critical patent/CN112714192A/zh
Application granted granted Critical
Publication of CN112714192B publication Critical patent/CN112714192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请属于区块链技术领域,具体涉及一种数据同步方法、数据同步装置、计算机可读介质以及电子设备。该方法包括:获取当前区块链节点的请求起始高度和请求结束高度;获取邻接节点的区块高度,邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;若邻接节点的区块高度大于当前区块链节点的区块高度,则根据请求起始高度、请求结束高度、预设的滑动窗口尺寸以及邻接节点的区块高度之间的数值关系确定目标高度,目标高度大于请求结束高度;根据目标高度和请求结束高度之间的高度差值对外发送数据同步请求。该方法可以充分利用区块链网络中的当前区块链节点和邻接节点的数据资源,实现高效且稳定的数据同步。

Description

数据同步方法、装置、计算机可读介质及电子设备
技术领域
本申请属于区块链技术领域,具体涉及一种数据同步方法、数据同步装置、计算机可读介质以及电子设备。
背景技术
区块链是一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。区块链网络中的数据节点相互之间通过点对点传输、共识机制、加密算法等技术进行数据共享,实现区块链数据的分布式存储。
当区块链网络中包括较多数据节点时,随着区块链网络上维护的区块链数据的不断增加,不同的数据节点之间将会出现数据共享的滞后,导致数据同步效率低的问题。
发明内容
本申请的目的在于提供一种数据同步方法、数据同步装置、计算机可读介质以及电子设备,至少在一定程度上克服相关技术中存在的数据同步效率低的技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数据同步方法,该方法包括:获取当前区块链节点的请求起始高度和请求结束高度,所述请求起始高度是所述当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,所述请求结束高度是所述当前区块链节点发出且等待响应的数据同步请求中的最大区块高度;获取邻接节点的区块高度,所述邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;若所述邻接节点的区块高度大于当前区块链节点的区块高度,则根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,所述目标高度大于所述请求结束高度;根据所述目标高度和所述请求结束高度之间的高度差值对外发送数据同步请求。
根据本申请实施例的一个方面,提供一种数据同步装置,该装置包括:第一获取模块,被配置为获取当前区块链节点的请求起始高度和请求结束高度,所述请求起始高度是所述当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,所述请求结束高度是所述当前区块链节点发出且等待响应的数据同步请求中的最大区块高度;第二获取模块,被配置为获取邻接节点的区块高度,所述邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;高度确定模块,被配置为若所述邻接节点的区块高度大于当前区块链节点的区块高度,则根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,所述目标高度大于所述请求结束高度;请求发送模块,根据所述目标高度和所述请求结束高度之间的高度差值对外发送数据同步请求。
在本申请的一些实施例中,基于以上技术方案,所述高度确定模块包括:窗口高度确定单元,被配置为将所述请求起始高度与所述滑动窗口尺寸相加得到窗口高度;第一目标高度确定单元,被配置为若所述窗口高度大于所述请求结束高度且所述邻接节点的区块高度小于或等于所述请求结束高度,则将所述窗口高度确定为目标高度;第二目标高度确定单元,被配置为若所述窗口高度小于或等于所述请求结束高度且所述邻接节点的区块高度大于所述请求结束高度,则将所述邻接节点的区块高度确定为目标高度;第三目标高度确定单元,被配置为若所述窗口高度和所述邻接节点的区块高度均大于所述请求结束高度,则将所述窗口高度与所述邻接节点的区块高度之间的较小值确定为目标高度。
在本申请的一些实施例中,基于以上技术方案,所述请求发送模块包括:数量获取单元,被配置为获取当前区块链节点的最大区块请求数量,所述最大区块请求数量是所述当前区块链节点在一个请求消息中能够请求同步的最大区块数量;差值获取单元,被配置为获取所述请求结束高度与所述目标高度之间的高度差值;消息生成单元,被配置为根据所述高度差值和所述最大区块请求数量生成一个或者多个区块同步请求消息;消息发送单元,被配置为对外发送所述区块同步请求消息。
在本申请的一些实施例中,基于以上技术方案,所述区块同步请求消息包括请求同步的区块起始高度、区块请求数量和请求发送时间;所述消息发送单元包括:列表获取子单元,被配置为获取由所述当前区块链节点维护的邻接节点列表,所述邻接节点列表用于记录邻接节点的节点地址和区块高度;节点选取子单元,被配置为根据所述区块起始高度和所述区块请求数量在所述邻接节点列表中选取目标区块链节点;消息发送子单元,被配置为根据所述目标区块链节点的节点地址,向所述目标区块链节点发送所述区块同步请求消息。
在本申请的一些实施例中,基于以上技术方案,所述节点选取子单元还被配置为:根据所述区块起始高度和所述区块请求数量对所述邻接节点列表中的区块链节点进行筛选,得到由一个或者多个候选区块链节点组成的候选节点集合;从所述候选节点集合中随机选取目标区块链节点。
在本申请的一些实施例中,基于以上技术方案,所述第二获取模块包括:消息监听单元,被配置为监听在所述区块链网络中广播的邻接节点的区块高度更新消息;消息解析单元,被配置为当接收到区块高度更新消息时,解析所述区块高度更新消息得到所述邻接节点的节点标识和区块高度;数据确定单元,被配置为确定当前区块链节点维护的邻接节点列表中是否记录有所述邻接节点的区块高度数据;数据增加单元,被配置为若所述邻接节点列表中未记录所述邻接节点的区块高度数据,则在所述邻接节点列表中增加与所述邻接节点相对应的数据条目;数据更新单元,被配置为若所述邻接节点列表中记录有所述邻接节点的区块高度数据,则在所述邻接节点列表中更新与所述邻接节点相对应的数据条目。
在本申请的一些实施例中,基于以上技术方案,所述数据同步装置还包括:请求缓存模块,被配置为在所述当前区块链节点维护的同步区块请求队列中缓存所述数据同步请求;响应监听模块,被配置为监听来自邻接节点的与所述数据同步请求相对应的响应数据;区块链更新模块,被配置为当接收到所述响应数据时,根据所述响应数据更新所述当前区块链节点上存储的区块链。
在本申请的一些实施例中,基于以上技术方案,所述区块链更新模块包括:响应缓存单元,被配置为将所述响应数据缓存至所述当前区块链节点维护的同步区块响应队列中;目标确定单元,被配置为在所述同步区块请求队列中确定对应于最小区块高度的目标数据同步请求,并在所述同步区块响应队列中确定对应于最小区块高度的目标响应数据;区块链更新单元,被配置为若所述目标数据同步请求与所述目标响应数据具有相同的最小区块高度,则根据所述目标响应数据更新所述当前区块链节点上存储的区块链,并分别从所述同步区块请求队列和所述同步区块响应队列中移除所述目标数据同步请求和所述目标响应数据。
在本申请的一些实施例中,基于以上技术方案,所述区块链更新模块还包括:数据移除模块,被配置为若所述目标数据同步请求对应的最小区块高度大于所述目标响应数据对应的最小区块高度,则从所述同步区块响应队列中移除所述目标响应数据。
在本申请的一些实施例中,基于以上技术方案,所述数据同步装置还包括:队列检查模块,被配置为以预设时间为间隔,检查所述同步区块请求队列是否为空队列;队列清空模块,被配置为若所述同步区块请求队列为空队列,则清空所述同步区块响应队列。
在本申请的一些实施例中,基于以上技术方案,所述数据同步装置还包括:请求遍历模块,被配置为以预设时间为间隔,遍历所述同步区块请求队列中的各个数据同步请求的请求发送时间;重新发送模块,被配置为若所述数据同步请求的请求发送时间与当前时间的时间差超过预设的时长阈值,则重新发送所述数据同步请求,并更新所述数据同步请求的请求发送时间。
在本申请的一些实施例中,基于以上技术方案,所述数据同步装置还包括:数量获取模块,被配置为以预设时间为间隔,获取所述同步区块请求队列中的数据同步请求的请求数量;窗口调整模块,被配置为若所述请求数量超过预设的数量阈值,则根据所述请求数量调整所述滑动窗口尺寸。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的数据同步方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的数据同步方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的数据同步方法。
在本申请实施例提供的技术方案中,通过获取邻接节点的区块高度并基于该区块高度与请求起始高度、请求结束高度和滑动窗口尺寸之间的数值关系可以动态地确定当前区块链节点需要进行数据同步的区块数量,同时通过滑动窗口的方式来控制并发的数据同步请求的最大区块数量,可以充分利用区块链网络中的当前区块链节点和邻接节点的数据资源,实现高效且稳定的数据同步。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
图2示出了在区块链网络上维护的区块链的组成结构。
图3示出了一种新区块的产生过程示意图。
图4示出了本申请一个实施例中的数据同步方法的步骤流程图。
图5示出了本申请一个实施例中获取邻接节点的区块高度的步骤流程图。
图6示出了本申请一个实施例中对外发送数据同步请求的步骤流程图。
图7示意性地示出了本申请实施例提供的数据同步装置的结构框图。
图8示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
区块链(Block Chain)是一种在对等网络环境下,通过透明和可信规则构建的防伪造、防篡改和可追溯的共享的具有块链式数据结构(chained-block data structure)的数字化账本。块链式数据结构是将一段时间内发生的事务处理以区块为单位进行存储,并以密码学算法将区块按时间顺序连接成链条的一种数据结构。账本分发给网络中的所有成员节点,在通过哈希密码算法链接的区块的顺序链中,永久记录网络中的对等节点之间发生的资产交易的历史记录。所有经过确认和证明的交易都从链的开头一直链接到最新的区块,因此得名区块链。区块链可以充当单一事实来源,而且区块链网络中的成员只能查看与他们相关的交易。
图1示出了一种区块链系统的组成示意图,区块链系统100可以包括至少一个客户端110和区块链网络120,区块链网络120包括至少一个区块链节点121。客户端110可以是智能手机、平板电脑、笔记本电脑、台式电脑、智能穿戴设备、智能车载设备等各种电子设备,通过安装相应的客户端应用程序,可以向用户提供区块链数据服务。区块链节点121可以是终端设备或者服务器等任意形式的电子设备,例如区块链节点121可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,还可以是提供云计算服务的云服务器。
在区块链网络120中,每个区块链节点121在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护区块链网络内的共享数据。为了保证信息互通,各个区块链节点121之间可以存在信息连接,各个区块链节点121相互可以通过信息连接进行信息传输。例如,当区块链网络120中的任意区块链节点121接收到输入信息,并将输入信息在区块链网络120中进行广播时,区块链网络120中的其他节点设备可以根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储。
对于区块链网络120中的每个区块链节点121,均具有与其对应的节点标识,而且区块链网络120中的每个区块链节点121均可以存储同一区块链网络中的其他区块链节点的节点标识,以便后续根据其他区块链节点的节点标识,将生成的区块广播至区块链网络120中的其他节点。区块链节点121中可维护一个如表1所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1是以IP地址为例的节点标识列表。
Figure 862759DEST_PATH_IMAGE001
图2示出了在区块链网络上维护的区块链的组成结构。如图2所示,区块链由多个顺次连接的区块组成,每当有新的数据需要写入区块链时,这些数据会汇总到一个新生成的区块中,新生成的区块将被链接至区块链的末端,通过共识算法可以保证每个节点设备121上新增的区块是完全相同的。在每个区块的区块体中记录了当前区块的数据,同时在其区块头中保存与之相连的前一区块的哈希值(Hash),若前一区块中的交易数据发生变化,那么当前区块的哈希值也将随之改变。因此,上传至区块链网络中的数据难以被篡改,可以提高共享数据的可靠性。
图3示出了一种新区块的产生过程示意图。如图3所示,在生成区块链中的各个区块时,首先由区块链节点对接收到的输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
Figure 248741DEST_PATH_IMAGE002
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
下面结合具体实施方式对本申请提供的数据同步方法、数据同步装置、计算机可读介质以及电子设备等技术方案做出详细说明。
图4示出了本申请一个实施例中的数据同步方法的步骤流程图,该数据同步方法可以由作为区块链节点的终端设备或者服务器来执行。如图4所示,该数据同步方法主要可以包括如下的步骤S410至步骤S440。
步骤S410:获取当前区块链节点的请求起始高度和请求结束高度,请求起始高度是当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,请求结束高度是当前区块链节点发出且等待响应的数据同步请求中的最大区块高度。
区块高度是一个区块在区块链中的位置标识,可以表示当前区块与创世区块(即区块链中生成的第一个区块)之间的区块数量。例如,创世区块的区块高度为0,每一个随后生成的新的区块在区块链中都比前一区块“高”出一个位置。当前区块链节点可以通过数据广播或者点对点数据传输的方式向其他区块链节点发送数据同步请求,在接收请求的区块链节点向当前区块链节点返回响应数据后,即可实现对相应的区块链数据进行数据同步。
步骤S420:获取邻接节点的区块高度,邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点。
当一个区块链节点对新的共享数据进行上链处理后,可以在区块链上生成并链接新的区块,此时该区块链节点所维护的区块链的区块高度将对应发生变化。在本申请实施例中,区块链节点可以将自身的最新的区块高度通过广播或者点对点数据传输的方式发送给区块链网络中的其他节点。在此基础上,当前区块链节点可以通过监听区块链网络中广播消息或者通过点对点数据传输的方式获取邻接节点的区块高度。
步骤S430:若邻接节点的区块高度大于当前区块链节点的区块高度,则根据请求起始高度、请求结束高度、预设的滑动窗口尺寸以及邻接节点的区块高度之间的数值关系确定目标高度,目标高度大于请求结束高度。
若邻接节点的区块高度大于当前区块链节点的区块高度,表示当前区块链节点存储的区块链数据存储进度落后于该邻接节点,需要通过数据同步的方式来为当前区块链节点补充缺失数据。在满足条件的情况下可以根据相关参数确定一个大于当前的请求结束高度的目标高度,用以确定对当前区块链节点进行数据同步的数据范围。其中,滑动窗口跟随请求起始高度的数值增长而向前滑动,滑动窗口尺寸表示当前区块链节点并发请求的最大区块数量。
步骤S440:根据目标高度和请求结束高度之间的高度差值对外发送数据同步请求。
目标高度和请求结束高度之间的高度差值表示当前待同步的区块数量,基于该区块数量可以对外发送数据同步请求。数据同步请求的发送方式可以包括向区块链网络中广播数据同步请求,或者向一个或者多个选定的邻接节点发送数据同步请求。
在本申请实施例提供的数据同步方法中,通过获取邻接节点的区块高度并基于该区块高度与请求起始高度、请求结束高度和滑动窗口尺寸之间的数值关系可以动态地确定当前区块链节点需要进行数据同步的区块数量,同时通过滑动窗口的方式来控制并发的数据同步请求的最大区块数量,可以充分利用区块链网络中的当前区块链节点和邻接节点的数据资源,实现高效且稳定的数据同步。
在本申请的一个实施例中,区块链网络中的部分或者全部的区块链节点可以定期地在区块链网络中广播自身存储区块链数据的最新的区块高度,以使区块链网络中的其他区块链节点能够根据最新的区块高度对各自是否需要进行数据同步做出判断。举例而言,本申请实施例可以将区块链网络中的一部分区块链节点指定为同步发起节点,除同步发起节点以外的其他节点为同步跟随节点;其中,同步发起节点可以定期地在区块链网络上发布广播消息,用于公布最新区块高度;而同步跟随节点则通过监听广播消息的方式获取由同步发起节点广播出来的最新区块高度,进而在满足条件的情况下进行数据同步。同步发起节点和同步跟随节点的划分不是一成不变的,本申请实施例可以根据区块链网络中所有节点的数据同步情况动态地进行节点类型划分。例如,在一定时间周期内,如果某一区块链节点的区块高度始终领先于其他区块链节点,则该区块链节点可以被指定为同步发起节点;相应地,如果某一区块链节点的区块高度始终落后于其他区块链节点,则该区块链节点可以被指定为同步跟随节点。
图5示出了本申请一个实施例中获取邻接节点的区块高度的步骤流程图。如图5所示,在以上实施例的基础上,步骤S420中的获取邻接节点的区块高度,可以包括如下的步骤S510至步骤S550。
步骤S510:监听在区块链网络中广播的邻接节点的区块高度更新消息。
在本申请的一个实施例中,当前区块链节点可以监听区块链网络中的广播的各种类型的消息,其中可以包括邻接节点的区块高度更新消息,区块高度更新消息用于表示邻接节点的区块高度已经更新,消息中可以携带该邻接节点的最新区块高度。
在本申请的另一实施例中,当前区块链节点也可以通过点对点传输地方式,定向地接收由指定邻接节点发出的区块高度更新消息。
步骤S520:当接收到区块高度更新消息时,解析区块高度更新消息得到邻接节点的节点标识和区块高度。
区块高度更新消息中携带的节点标识是用于在区块链网络中定位邻接节点的标识,例如可以是邻接节点的网络地址。区块高度更新消息中携带的区块高度是邻接节点更新后的最新区块高度。
步骤S530:确定当前区块链节点维护的邻接节点列表中是否记录有邻接节点的区块高度数据。
邻接节点列表(Peer List)用于记录当前区块链节点已知的邻接节点的节点标识,以及与邻接节点的节点标识相关联的区块高度数据。当解析得到邻接节点的节点标识后,可以在邻接节点列表中查询是否存在与该节点标识对应的数据条目。若存在对应的数据条目,则可以确定邻接节点列表中记录有该邻接节点的区块高度数据;若不存在对应的数据条目,则可以确定邻接节点列表中未记录该邻接节点的区块高度数据。
步骤S540:若邻接节点列表中未记录邻接节点的区块高度数据,则在邻接节点列表中增加与邻接节点相对应的数据条目。
步骤S550:若邻接节点列表中记录有邻接节点的区块高度数据,则在邻接节点列表中更新与邻接节点相对应的数据条目。
在获取到邻接节点的区块高度,并确定该邻接节点的区块高度大于当前区块链节点的区块高度时,表示当前区块链节点的区块链数据落后于该邻接节点,此时可以根据当前区块链节点记录的请求起始高度、请求结束高度、预设的滑动窗口尺寸以及邻接节点的区块高度等相关参数确定用于进行数据同步的目标高度。该目标高度大于当前区块链节点的请求结束高度,以避免出现重复请求的问题。
在本申请一个实施例中,将请求起始高度与滑动窗口尺寸相加得到窗口高度,然后比较窗口高度、请求结束高度和邻接节点的区块高度之间的数值关系,并根据比较结果确定目标高度。
在本申请的一个实施例中,若窗口高度大于请求结束高度且邻接节点的区块高度小于或等于请求结束高度,则将窗口高度确定为目标高度;若窗口高度小于或等于请求结束高度且邻接节点的区块高度大于请求结束高度,则将邻接节点的区块高度确定为目标高度;若窗口高度和邻接节点的区块高度均大于请求结束高度,则将窗口高度与邻接节点的区块高度之间的较小值确定为目标高度。
在本申请实施例中,当窗口高度和邻接节点的区块高度均小于或等于请求结束高度时,表示当前已知高度的区块均处于已完成数据同步的状态或者处于已经发出数据同步请求并等待同步的状态,因此无需重复发送数据同步请求。举例而言,在本申请实施例的一个应用场景中,请求起始高度为1100,请求结束高度为1200,滑动窗口尺寸为50,邻接节点的区块高度为1180。此时,区块高度为1150,邻接节点的区块高度为1180,均小于请求结束高度1200。当前区块链节点已存储了高度在0~1100范围内的区块,而高度在1100~1200之间的区块也已发出对应的数据同步请求,处于等待响应的状态,因此目前无需对外发送数据同步请求。
当窗口高度和邻接节点的区块高度中,仅存在一个高度数值大于请求结束高度时,将大于请求结束高度的高度数值确定为目标高度。举例而言,在本申请实施例的一个应用场景中,请求起始高度为1100,请求结束高度为1200,滑动窗口尺寸为50,邻接节点的区块高度为1220。此时,区块高度为1150,小于请求结束高度1200;而邻接节点的区块高度为1220,大于请求结束高度1200。当前区块链节点已存储了高度在0~1100范围内的区块,而高度在1100~1200之间的区块也已发出对应的数据同步请求,处于等待响应的状态,目前需要针对高度在1200~1220范围内的区块发送数据同步请求。
当窗口高度和邻接节点的区块高度均大于请求结束高度时,将二者之间的较小值确定为目标高度。
如果窗口高度为较小值,而邻接节点的区块高度为较大值,表明当前等待请求同步的区块数量超过了当前区块链节点并发请求的最大区块数量。因此,高度大于请求结束高度而小于或等于邻接节点的区块高度的区块可以对外发送数据同步请求;而高度大于窗口高度且小于邻接节点的区块高度的区块需要等待部分区块完成同步且相关参数得到更新后才能继续请求同步。
如果窗口高度为较大值,而邻接节点的区块高度为较小值,表明当前等待请求同步的区块数量并未超过当前区块链节点并发请求的最大区块数量。因此,高度大于请求结束高度而小于邻接节点的区块高度的区块可以对外发送数据同步请求。
图6示出了本申请一个实施例中对外发送数据同步请求的步骤流程图。如图6所示,在以上实施例的基础上,步骤S440中的根据目标高度和请求结束高度之间的高度差值对外发送数据同步请求,可以包括如下的步骤S610至步骤S640。
步骤S610:获取当前区块链节点的最大区块请求数量,最大区块请求数量是当前区块链节点在一个请求消息中能够请求同步的最大区块数量。
步骤S620:获取请求结束高度与目标高度之间的高度差值。
步骤S630:根据高度差值和最大区块请求数量生成一个或者多个区块同步请求消息。
步骤S640:对外发送区块同步请求消息。
在本申请实施例中,最大区块请求数量Max Block Number用于限制一个区块同步请求消息能够请求同步的最大区块数量。当请求结束高度与目标高度之间的高度差值小于或等于最大区块请求数量时,仅需要对外发送一个区块同步请求消息,便可以完成数据同步。而当请求结束高度与目标高度之间的高度差值大于最大区块请求数量时,需要通过该高度差值与最大区块请求数量计算出需要发送几次同步请求,每次请求对应一个区块同步请求消息。
在本申请的一个实施例中,区块同步请求消息包括请求同步的区块起始高度、区块请求数量和请求发送时间。对外发送区块同步请求消息的方法包括:获取由当前区块链节点维护的邻接节点列表,邻接节点列表用于记录邻接节点的节点地址和区块高度;根据区块起始高度和区块请求数量在邻接节点列表中选取目标区块链节点;根据目标区块链节点的节点地址,向目标区块链节点发送区块同步请求消息。
在本申请的一个实施例中,根据区块起始高度和区块请求数量在邻接节点列表中选取目标区块链节点的方法包括:根据区块起始高度和区块请求数量对邻接节点列表中的区块链节点进行筛选,得到由一个或者多个候选区块链节点组成的候选节点集合;从候选节点集合中随机选取目标区块链节点。其中,候选区块链节点指的是包含需要同步的区块的节点。
在本申请的一个实施例中,当前区块链节点可以维护同步区块请求队列,用以缓存已发出且等待响应的数据同步请求。在根据请求结束高度和目标高度对外发送数据同步请求之后,在当前区块链节点维护的同步区块请求队列中缓存数据同步请求;监听来自邻接节点的与数据同步请求相对应的响应数据;当接收到响应数据时,根据响应数据更新当前区块链节点上存储的区块链。
在本申请的一个实施例中,根据响应数据更新当前区块链节点上存储的区块链的方法包括:将响应数据缓存至当前区块链节点维护的同步区块响应队列中;在同步区块请求队列中确定对应于最小区块高度的目标数据同步请求,并在同步区块响应队列中确定对应于最小区块高度的目标响应数据;若目标数据同步请求与目标响应数据具有相同的最小区块高度,则根据目标响应数据更新当前区块链节点上存储的区块链,并分别从同步区块请求队列和同步区块响应队列中移除目标数据同步请求和目标响应数据。
在本申请实施例中,通过维护同步区块请求队列和同步区块响应队列,可以实现对数据同步请求的并发处理,提高数据同步效率。
举例而言,同步区块请求队列中包括多个等待响应的数据同步请求,依次为第一同步请求、第二同步请求、第三同步请求……。第一同步请求对应请求同步的区块高度为110~120,第二同步请求对应请求同步的区块高度120~130,第三同步请求对应请求同步的区块高度130~140……。同步区块响应队列中包括多个接收到的响应数据,依次为第一响应数据、第二响应数据、第三响应数据……。第一响应数据对应响应同步的区块高度为110~120,第二响应数据对应响应同步的区块高度为120~130,第三响应数据对应响应同步的区块高度为130~140……。在该应用场景中,同步区块请求队列中的最小区块高度为110,对应于该最小区块高度的第一同步请求即为目标数据同步请求;同步区块响应队列中的最小区块高度为110,对应于该最小区块高度的第一响应数据即为目标响应数据。由于第一同步请求与第一响应数据具有相同的最小区块高度,表明第一响应数据是与第一同步请求相匹配的响应数据,因此可以根据第一响应数据在当前区块链节点维护的区块链上同步更新高度为110~120的区块,同时将已完成数据同步的第一同步请求和第一响应数据从相应的缓存队列中移除。
在本申请的一个实施例中,若目标数据同步请求对应的最小区块高度大于目标响应数据对应的最小区块高度,则从同步区块响应队列中移除目标响应数据。当目标数据同步请求对应的最小区块高度大于目标响应数据对应的最小区块高度时,表明当前的目标响应数据对应的区块数据已经完成同步,该目标响应数据为冗余数据,因此可以将其从缓存队列中移除。
在本申请的一个实施例中,以预设时间为间隔,检查同步区块请求队列是否为空队列;若同步区块请求队列为空队列,则清空同步区块响应队列。当同步区块请求队列为空队列时,表示所有发出的数据同步请求均已获得响应,同步区块响应队列中如果存在响应数据,也必然是冗余数据,因此可以清空同步区块响应队列,以免反复比对各个响应数据而带来计算资源的浪费。
在本申请的一个实施例中,以预设时间为间隔,遍历同步区块请求队列中的各个数据同步请求的请求发送时间;若数据同步请求的请求发送时间与当前时间的时间差超过预设的时长阈值,则重新发送数据同步请求,并更新数据同步请求的请求发送时间。当出现数据同步请求长时间未获得响应时,可以重新发送数据同步请求,避免因该请求的滞后而影响其他数据同步请求的处理效率。
在本申请的一个实施例中,以预设时间为间隔,获取同步区块请求队列中的数据同步请求的请求数量;若请求数量超过预设的数量阈值,则根据请求数量调整滑动窗口尺寸。在本申请实施例中,根据同步区块请求队列中的数据同步请求的请求数量动态地调整滑动窗口尺寸,可以避免因数据同步请求的过度积压而出现数据同步的混乱。例如,当同步区块请求队列中的数据同步请求的请求数量超过预设的数量阈值时,可以按照设定的幅度缩小滑动窗口的尺寸,以限制新的数据同步请求的生成数量。当同步区块请求队列中的数据同步请求的请求数量减少至数量阈值以下时,可以再按照设定的幅度回调滑动窗口尺寸。
在本申请实施例提供的数据同步方法中,基于滑动窗口的方式来同步区块,区块链网络中数据节点通过滑动窗口方式从邻接节点获取区块快速地追上落后数据让节点恢复业务,该方法能充分利用网络资源和节点本身的资源。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数据同步方法。图7示意性地示出了本申请实施例提供的数据同步装置的结构框图。如图7所示,数据同步装置700主要可以包括:第一获取模块710,被配置为获取当前区块链节点的请求起始高度和请求结束高度,所述请求起始高度是所述当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,所述请求结束高度是所述当前区块链节点发出且等待响应的数据同步请求中的最大区块高度;第二获取模块720,被配置为获取邻接节点的区块高度,所述邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;高度确定模块730,被配置为若所述邻接节点的区块高度大于当前区块链节点的区块高度,则根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,所述目标高度大于所述请求结束高度;请求发送模块740,根据所述目标高度和所述请求结束高度之间的高度差值对外发送数据同步请求。
在本申请的一些实施例中,基于以上各实施例,所述高度确定模块730包括:窗口高度确定单元,被配置为将所述请求起始高度与所述滑动窗口尺寸相加得到窗口高度;第一目标高度确定单元,被配置为若所述窗口高度大于所述请求结束高度且所述邻接节点的区块高度小于或等于所述请求结束高度,则将所述窗口高度确定为目标高度;第二目标高度确定单元,被配置为若所述窗口高度小于或等于所述请求结束高度且所述邻接节点的区块高度大于所述请求结束高度,则将所述邻接节点的区块高度确定为目标高度;第三目标高度确定单元,被配置为若所述窗口高度和所述邻接节点的区块高度均大于所述请求结束高度,则将所述窗口高度与所述邻接节点的区块高度之间的较小值确定为目标高度。
在本申请的一些实施例中,基于以上各实施例,所述请求发送模块740包括:数量获取单元,被配置为获取当前区块链节点的最大区块请求数量,所述最大区块请求数量是所述当前区块链节点在一个请求消息中能够请求同步的最大区块数量;差值获取单元,被配置为获取所述请求结束高度与所述目标高度之间的高度差值;消息生成单元,被配置为根据所述高度差值和所述最大区块请求数量生成一个或者多个区块同步请求消息;消息发送单元,被配置为对外发送所述区块同步请求消息。
在本申请的一些实施例中,基于以上各实施例,所述区块同步请求消息包括请求同步的区块起始高度、区块请求数量和请求发送时间;所述消息发送单元包括:列表获取子单元,被配置为获取由所述当前区块链节点维护的邻接节点列表,所述邻接节点列表用于记录邻接节点的节点地址和区块高度;节点选取子单元,被配置为根据所述区块起始高度和所述区块请求数量在所述邻接节点列表中选取目标区块链节点;消息发送子单元,被配置为根据所述目标区块链节点的节点地址,向所述目标区块链节点发送所述区块同步请求消息。
在本申请的一些实施例中,基于以上各实施例,所述节点选取子单元还被配置为:根据所述区块起始高度和所述区块请求数量对所述邻接节点列表中的区块链节点进行筛选,得到由一个或者多个候选区块链节点组成的候选节点集合;从所述候选节点集合中随机选取目标区块链节点。
在本申请的一些实施例中,基于以上各实施例,所述第二获取模块720包括:消息监听单元,被配置为监听在所述区块链网络中广播的邻接节点的区块高度更新消息;消息解析单元,被配置为当接收到区块高度更新消息时,解析所述区块高度更新消息得到所述邻接节点的节点标识和区块高度;数据确定单元,被配置为确定当前区块链节点维护的邻接节点列表中是否记录有所述邻接节点的区块高度数据;数据增加单元,被配置为若所述邻接节点列表中未记录所述邻接节点的区块高度数据,则在所述邻接节点列表中增加与所述邻接节点相对应的数据条目;数据更新单元,被配置为若所述邻接节点列表中记录有所述邻接节点的区块高度数据,则在所述邻接节点列表中更新与所述邻接节点相对应的数据条目。
在本申请的一些实施例中,基于以上各实施例,所述数据同步装置700还包括:请求缓存模块,被配置为在所述当前区块链节点维护的同步区块请求队列中缓存所述数据同步请求;响应监听模块,被配置为监听来自邻接节点的与所述数据同步请求相对应的响应数据;区块链更新模块,被配置为当接收到所述响应数据时,根据所述响应数据更新所述当前区块链节点上存储的区块链。
在本申请的一些实施例中,基于以上各实施例,所述区块链更新模块包括:响应缓存单元,被配置为将所述响应数据缓存至所述当前区块链节点维护的同步区块响应队列中;目标确定单元,被配置为在所述同步区块请求队列中确定对应于最小区块高度的目标数据同步请求,并在所述同步区块响应队列中确定对应于最小区块高度的目标响应数据;区块链更新单元,被配置为若所述目标数据同步请求与所述目标响应数据具有相同的最小区块高度,则根据所述目标响应数据更新所述当前区块链节点上存储的区块链,并分别从所述同步区块请求队列和所述同步区块响应队列中移除所述目标数据同步请求和所述目标响应数据。
在本申请的一些实施例中,基于以上各实施例,所述区块链更新模块还包括:数据移除模块,被配置为若所述目标数据同步请求对应的最小区块高度大于所述目标响应数据对应的最小区块高度,则从所述同步区块响应队列中移除所述目标响应数据。
在本申请的一些实施例中,基于以上各实施例,所述数据同步装置700还包括:队列检查模块,被配置为以预设时间为间隔,检查所述同步区块请求队列是否为空队列;队列清空模块,被配置为若所述同步区块请求队列为空队列,则清空所述同步区块响应队列。
在本申请的一些实施例中,基于以上各实施例,所述数据同步装置700还包括:请求遍历模块,被配置为以预设时间为间隔,遍历所述同步区块请求队列中的各个数据同步请求的请求发送时间;重新发送模块,被配置为若所述数据同步请求的请求发送时间与当前时间的时间差超过预设的时长阈值,则重新发送所述数据同步请求,并更新所述数据同步请求的请求发送时间。
在本申请的一些实施例中,基于以上各实施例,所述数据同步装置700还包括:数量获取模块,被配置为以预设时间为间隔,获取所述同步区块请求队列中的数据同步请求的请求数量;窗口调整模块,被配置为若所述请求数量超过预设的数量阈值,则根据所述请求数量调整所述滑动窗口尺寸。
本申请各实施例中提供的数据同步装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图8示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图8示出的电子设备的计算机系统800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理器801(Central Processing Unit,CPU),其可以根据存储在只读存储器802(Read-Only Memory,ROM)中的程序或者从存储部分808加载到随机访问存储器803(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器803中,还存储有系统操作所需的各种程序和数据。中央处理器801、在只读存储器802以及随机访问存储器803通过总线804彼此相连。输入/输出接口805(Input /Output接口,即I/O接口)也连接至总线804。
以下部件连接至输入/输出接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至输入/输出接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理器801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种数据同步方法,其特征在于,包括:
获取当前区块链节点的请求起始高度和请求结束高度,所述请求起始高度是所述当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,所述请求结束高度是所述当前区块链节点发出且等待响应的数据同步请求中的最大区块高度;
获取邻接节点的区块高度,所述邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;
若所述邻接节点的区块高度大于当前区块链节点的区块高度,则根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,所述目标高度大于所述请求结束高度;
根据所述目标高度和所述请求结束高度之间的高度差值对外发送数据同步请求。
2.根据权利要求1所述的数据同步方法,其特征在于,根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,包括:
将所述请求起始高度与所述滑动窗口尺寸相加得到窗口高度;
若所述窗口高度大于所述请求结束高度且所述邻接节点的区块高度小于或等于所述请求结束高度,则将所述窗口高度确定为目标高度;
若所述窗口高度小于或等于所述请求结束高度且所述邻接节点的区块高度大于所述请求结束高度,则将所述邻接节点的区块高度确定为目标高度;
若所述窗口高度和所述邻接节点的区块高度均大于所述请求结束高度,则将所述窗口高度与所述邻接节点的区块高度之间的较小值确定为目标高度。
3.根据权利要求1所述的数据同步方法,其特征在于,根据所述请求结束高度和所述目标高度之间的高度差值对外发送数据同步请求,包括:
获取当前区块链节点的最大区块请求数量,所述最大区块请求数量是所述当前区块链节点在一个请求消息中能够请求同步的最大区块数量;
获取所述请求结束高度与所述目标高度之间的高度差值;
根据所述高度差值和所述最大区块请求数量生成一个或者多个区块同步请求消息;
对外发送所述区块同步请求消息。
4.根据权利要求3所述的数据同步方法,其特征在于,所述区块同步请求消息包括请求同步的区块起始高度、区块请求数量和请求发送时间;对外发送所述区块同步请求消息,包括:
获取由所述当前区块链节点维护的邻接节点列表,所述邻接节点列表用于记录邻接节点的节点地址和区块高度;
根据所述区块起始高度和所述区块请求数量在所述邻接节点列表中选取目标区块链节点;
根据所述目标区块链节点的节点地址,向所述目标区块链节点发送所述区块同步请求消息。
5.根据权利要求4所述的数据同步方法,其特征在于,根据所述区块起始高度和所述区块请求数量在所述邻接节点列表中选取目标区块链节点,包括:
根据所述区块起始高度和所述区块请求数量对所述邻接节点列表中的区块链节点进行筛选,得到由一个或者多个候选区块链节点组成的候选节点集合;
从所述候选节点集合中随机选取目标区块链节点。
6.根据权利要求1所述的数据同步方法,其特征在于,获取邻接节点的区块高度,包括:
监听在所述区块链网络中广播的邻接节点的区块高度更新消息;
当接收到区块高度更新消息时,解析所述区块高度更新消息得到所述邻接节点的节点标识和区块高度;
确定当前区块链节点维护的邻接节点列表中是否记录有所述邻接节点的区块高度数据;
若所述邻接节点列表中未记录所述邻接节点的区块高度数据,则在所述邻接节点列表中增加与所述邻接节点相对应的数据条目;
若所述邻接节点列表中记录有所述邻接节点的区块高度数据,则在所述邻接节点列表中更新与所述邻接节点相对应的数据条目。
7.根据权利要求1至6中任意一项所述的数据同步方法,其特征在于,在根据所述请求结束高度和所述目标高度对外发送数据同步请求之后,所述方法还包括:
在所述当前区块链节点维护的同步区块请求队列中缓存所述数据同步请求;
监听来自邻接节点的与所述数据同步请求相对应的响应数据;
当接收到所述响应数据时,根据所述响应数据更新所述当前区块链节点上存储的区块链。
8.根据权利要求7所述的数据同步方法,其特征在于,根据所述响应数据更新所述当前区块链节点上存储的区块链,包括:
将所述响应数据缓存至所述当前区块链节点维护的同步区块响应队列中;
在所述同步区块请求队列中确定对应于最小区块高度的目标数据同步请求,并在所述同步区块响应队列中确定对应于最小区块高度的目标响应数据;
若所述目标数据同步请求与所述目标响应数据具有相同的最小区块高度,则根据所述目标响应数据更新所述当前区块链节点上存储的区块链,并分别从所述同步区块请求队列和所述同步区块响应队列中移除所述目标数据同步请求和所述目标响应数据。
9.根据权利要求8所述的数据同步方法,其特征在于,所述方法还包括:
若所述目标数据同步请求对应的最小区块高度大于所述目标响应数据对应的最小区块高度,则从所述同步区块响应队列中移除所述目标响应数据。
10.根据权利要求8所述的数据同步方法,其特征在于,所述方法还包括:
以预设时间为间隔,检查所述同步区块请求队列是否为空队列;
若所述同步区块请求队列为空队列,则清空所述同步区块响应队列。
11.根据权利要求7所述的数据同步方法,其特征在于,所述方法还包括:
以预设时间为间隔,遍历所述同步区块请求队列中的各个数据同步请求的请求发送时间;
若所述数据同步请求的请求发送时间与当前时间的时间差超过预设的时长阈值,则重新发送所述数据同步请求,并更新所述数据同步请求的请求发送时间。
12.根据权利要求7所述的数据同步方法,其特征在于,所述方法还包括:
以预设时间为间隔,获取所述同步区块请求队列中的数据同步请求的请求数量;
若所述请求数量超过预设的数量阈值,则根据所述请求数量调整所述滑动窗口尺寸。
13.一种数据同步装置,其特征在于,包括:
第一获取模块,被配置为获取当前区块链节点的请求起始高度和请求结束高度,所述请求起始高度是所述当前区块链节点发出且等待响应的数据同步请求中的最小区块高度,所述请求结束高度是所述当前区块链节点发出且等待响应的数据同步请求中的最大区块高度;
第二获取模块,被配置为获取邻接节点的区块高度,所述邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;
高度确定模块,被配置为若所述邻接节点的区块高度大于当前区块链节点的区块高度,则根据所述请求起始高度、所述请求结束高度、预设的滑动窗口尺寸以及所述邻接节点的区块高度之间的数值关系确定目标高度,所述目标高度大于所述请求结束高度;
请求发送模块,根据所述目标高度和所述请求结束高度之间的高度差值对外发送数据同步请求。
14.一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至12中任意一项所述的数据同步方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至12中任意一项所述的数据同步方法。
CN202110317042.8A 2021-03-25 2021-03-25 数据同步方法、装置、计算机可读介质及电子设备 Active CN112714192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110317042.8A CN112714192B (zh) 2021-03-25 2021-03-25 数据同步方法、装置、计算机可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110317042.8A CN112714192B (zh) 2021-03-25 2021-03-25 数据同步方法、装置、计算机可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN112714192A true CN112714192A (zh) 2021-04-27
CN112714192B CN112714192B (zh) 2021-07-02

Family

ID=75550244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110317042.8A Active CN112714192B (zh) 2021-03-25 2021-03-25 数据同步方法、装置、计算机可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN112714192B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157810A (zh) * 2021-04-29 2021-07-23 网易(杭州)网络有限公司 一种区块同步方法、计算机设备和存储介质
CN113779038A (zh) * 2021-09-26 2021-12-10 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN114338676A (zh) * 2021-12-31 2022-04-12 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114363359A (zh) * 2021-12-31 2022-04-15 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422527A (zh) * 2021-12-31 2022-04-29 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422526A (zh) * 2021-12-31 2022-04-29 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114531450A (zh) * 2021-12-30 2022-05-24 北京天成通链科技有限公司 一种基于高度的区块链对等网络数据同步方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105719185A (zh) * 2016-01-22 2016-06-29 杭州复杂美科技有限公司 区块链的数据对比及共识方法
CN108596767A (zh) * 2018-05-09 2018-09-28 中国工商银行股份有限公司 区块链历史数据清理方法及装置
WO2019101246A2 (en) * 2019-03-21 2019-05-31 Alibaba Group Holding Limited Data isolation in blockchain networks
CN111475575A (zh) * 2020-04-09 2020-07-31 腾讯科技(深圳)有限公司 基于区块链的数据同步方法、装置及计算机可读存储介质
CN112184436A (zh) * 2020-09-24 2021-01-05 成都质数斯达克科技有限公司 数据同步方法、电子设备及可读存储介质
CN112383610A (zh) * 2020-11-11 2021-02-19 上海保险交易所股份有限公司 区块链状态数据的同步处理方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105719185A (zh) * 2016-01-22 2016-06-29 杭州复杂美科技有限公司 区块链的数据对比及共识方法
CN108596767A (zh) * 2018-05-09 2018-09-28 中国工商银行股份有限公司 区块链历史数据清理方法及装置
WO2019101246A2 (en) * 2019-03-21 2019-05-31 Alibaba Group Holding Limited Data isolation in blockchain networks
CN111475575A (zh) * 2020-04-09 2020-07-31 腾讯科技(深圳)有限公司 基于区块链的数据同步方法、装置及计算机可读存储介质
CN112184436A (zh) * 2020-09-24 2021-01-05 成都质数斯达克科技有限公司 数据同步方法、电子设备及可读存储介质
CN112383610A (zh) * 2020-11-11 2021-02-19 上海保险交易所股份有限公司 区块链状态数据的同步处理方法及系统

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157810A (zh) * 2021-04-29 2021-07-23 网易(杭州)网络有限公司 一种区块同步方法、计算机设备和存储介质
CN113779038A (zh) * 2021-09-26 2021-12-10 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN113779038B (zh) * 2021-09-26 2024-04-16 大健云仓科技(苏州)有限公司 多数据源数据同步方法
CN114531450A (zh) * 2021-12-30 2022-05-24 北京天成通链科技有限公司 一种基于高度的区块链对等网络数据同步方法
CN114531450B (zh) * 2021-12-30 2024-01-09 北京天成通链科技有限公司 一种基于高度的区块链对等网络数据同步方法
CN114338676A (zh) * 2021-12-31 2022-04-12 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114363359A (zh) * 2021-12-31 2022-04-15 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422527A (zh) * 2021-12-31 2022-04-29 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422526A (zh) * 2021-12-31 2022-04-29 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422526B (zh) * 2021-12-31 2024-03-15 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114422527B (zh) * 2021-12-31 2024-05-28 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN114338676B (zh) * 2021-12-31 2024-05-28 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN112714192B (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
CN112714192B (zh) 数据同步方法、装置、计算机可读介质及电子设备
CN107819829B (zh) 访问区块链的方法、系统、区块链节点设备及用户终端
JP7325506B2 (ja) ブロックチェーンシステムに基づく業務処理方法、装置、電子機器及びコンピュータプログラム
US20150237113A1 (en) Method and system for file transmission
CN113254466B (zh) 一种数据处理方法、装置、电子设备和存储介质
KR102167613B1 (ko) 메시지 푸시 방법 및 장치
CN111275438B (zh) 区块链网络的共识方法、装置、设备和存储介质
CN111258602B (zh) 信息更新方法和装置
CN113157648A (zh) 基于区块链的分布式数据存储方法、装置、节点及系统
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN115004673B (zh) 消息推送方法、装置、电子设备及计算机可读介质
CN110445615B (zh) 网络请求安全性验证方法、装置、介质及电子设备
CN112261172A (zh) 服务寻址访问方法、装置、系统、设备及介质
EP4207688A1 (en) Asynchronous bookkeeping method and apparatus for blockchain, medium, and electronic device
CN110708212A (zh) 分布式系统中调用链路的追踪方法及装置
CN111831748A (zh) 数据同步方法、装置及存储介质
CN111212135A (zh) 消息订阅方法、装置、系统、电子设备及存储介质
CN110740293A (zh) 一种数据传输方法、系统、装置及计算机存储介质
CN111966967A (zh) 一种基于区块链技术和cdn的版权存证方法及系统
EP3579526B1 (en) Resource file feedback method and apparatus
CN116991948A (zh) 区块数据同步系统和方法、电子设备和存储介质
CN111835801B (zh) 文件下载方法、装置、服务器、边缘设备、终端及介质
CN114610504A (zh) 消息处理方法、装置、电子设备及存储介质
CN111161072A (zh) 基于区块链的随机数生成方法、设备及存储介质
CN111092958A (zh) 一种节点接入方法、装置、系统及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40042471

Country of ref document: HK