CN116074331A - 区块数据同步方法及相关产品 - Google Patents
区块数据同步方法及相关产品 Download PDFInfo
- Publication number
- CN116074331A CN116074331A CN202111295745.1A CN202111295745A CN116074331A CN 116074331 A CN116074331 A CN 116074331A CN 202111295745 A CN202111295745 A CN 202111295745A CN 116074331 A CN116074331 A CN 116074331A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- packet loss
- loss rate
- block
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请属于区块链技术领域,具体涉及一种区块数据同步方法、区块数据同步装置、计算机可读介质、电子设备以及计算机程序产品。该区块数据同步方法,包括:获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;分别统计各个所述数据节点进行数据通信的往返时延和丢包率;根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。本申请可以提高区块数据的同步效率和准确率。
Description
技术领域
本申请属于区块链技术领域,具体涉及一种区块数据同步方法、区块数据同步装置、计算机可读介质、电子设备以及计算机程序产品。
背景技术
区块链是一种通过去中心化、去信任的方式,由大量区块链节点共同维护一个可靠数据库的技术方案。当区块链网络上产生新的区块数据时,需要在各个区块链节点上进行数据同步。由于区块链节点数量众多、分布广泛,如何进行高效准确地数据同步是目前亟待解决的问题。
发明内容
本申请的目的在于提供一种区块数据同步方法、区块数据同步装置、计算机可读介质、电子设备以及计算机程序产品,至少在一定程度上克服相关技术中存在的数据同步效率低的技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种区块数据同步方法,该方法包括:
获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;
分别统计各个所述数据节点进行数据通信的往返时延和丢包率;
根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;
根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。
根据本申请实施例的一个方面,提供一种区块数据同步装置,该装置包括:
获取模块,被配置为获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;
统计模块,被配置为分别统计各个所述数据节点进行数据通信的往返时延和丢包率;
评价模块,被配置为根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;
请求模块,被配置为根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。
在本申请的一些实施例中,基于以上技术方案,
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的区块数据同步方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的区块数据同步方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的区块数据同步方法。
在本申请实施例提供的技术方案中,通过获取与当前区块链节点进行数据通信的多个数据节点,并分别对每个数据节点统计往返时延和丢包率,可以获得每个数据节点与当前区块链节点进行数据通信的实时通信质量,进而从中选择实时通信质量较高的目标节点进行数据同步,由此可以提高区块数据的同步效率和准确率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例中的区块链***的组成示意图。
图2示出了在区块链网络上维护的区块链的组成结构。
图3示出了应用本申请技术方案的区块链网络的网络架构。
图4示出了本申请一个实施例中的区块数据同步方法的步骤流程图。
图5示出了本申请一个实施例中对各个数据节点进行数据统计的步骤流程图。
图6示出了本申请一个实施例中统计数据节点往返时延的步骤流程图。
图7示出了本申请一个实施例中统计往返时延的原理示意图。
图8示出了本申请一个实施例中统计数据节点丢包率的步骤流程图。
图9示出了本申请一个实施例中确定丢包率的步骤流程图。
图10示出了本申请一个实施例中确定数据节点评价信息的步骤流程图。
图11示出了本申请一个实施例中的往返时延积分模型。
图12示出了本申请一个实施例中的丢包率积分模型。
图13示出了本申请实施例提供的区块数据同步装置的结构框图。
图14示出了适于用来实现本申请实施例的电子设备的计算机***结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
区块链是一种在对等网络环境下,通过透明和可信规则构建的防伪造、防篡改和可追溯的共享的具有块链式数据结构(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地址为例的节点标识列表。
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
图2示出了在区块链网络上维护的区块链的组成结构。如图2所示,区块链由多个顺次连接的区块组成,每当有新的数据需要写入区块链时,这些数据会汇总到一个新生成的区块中,新生成的区块将被链接至区块链的末端,通过共识算法可以保证每个节点设备121上新增的区块是完全相同的。在每个区块的区块体中记录了当前区块的数据,同时在其区块头中保存与之相连的前一区块的哈希值(Hash),若前一区块中的交易数据发生变化,那么当前区块的哈希值也将随之改变。因此,上传至区块链网络中的数据难以被篡改,可以提高共享数据的可靠性。
图3示出了应用本申请技术方案的区块链网络的网络架构。如图3所示,应用本申请技术方案的区块链网络采用分层模型,具体包括核心网络310、数据节点网络320和业务网络330。
核心网络310由共识节点311组成,负责区块链网络的共识,将交易打包进区块并进行共识记账。共识节点311是由区块链网络中的区块链节点采用投票选举或者轮流指定等方式产生的拥有记账权的节点。
数据节点网络320由数据节点321组成,负责同步核心网络310的账本信息,即同步最新的区块数据,并对业务网络330提供数据读取服务。
业务网络330由业务节点331或者轻节点332组成,负责从数据节点网络320同步业务自身的区块数据,并由数据节点网络320进行数据隔离。业务节点331是直接与用户终端设备通信连接的节点,其上存储有包括区块头和区块体在内的完整区块链副本,可以独立地向用户提供区块链业务服务。轻节点332是轻量级的节点,具体是不储存或维护完整的区块链副本,只储存最小量的状态来作为发送或传递交易信息的节点;轻节点332上可以仅存储区块链中各个区块的区块头数据,当接收到用户发起的查询具体区块数据的业务请求时,轻节点332可以通过与邻近的业务节点331进行数据交互,以实现间接地向用户提供业务服务。
采用网络分层结构,每一层网络都可以无限扩展,尤其是业务网络。数据节点网络和核心网络在保证整体网络高性能、高可用前提下可以限制在一定大小范围。大量的业务节点会连接多个数据节点,较实时地同数据节点同步自身的区块数据。
下面结合具体实施方式对本申请提供的区块数据同步方法、区块数据同步装置、计算机可读介质、电子设备以及计算机程序产品等技术方案做出详细说明。
图4示出了本申请一个实施例中的区块数据同步方法的步骤流程图,该方法由图3所示的业务网络中的业务节点或者轻节点执行。如图4所示,本申请实施例中的区块数据同步方法主要可以包括如下的步骤S410至步骤S440。
步骤S410:获取处于通信连接状态的多个数据节点,数据节点是用于提供区块数据读取服务的区块链节点;
步骤S420:分别统计各个数据节点进行数据通信的往返时延和丢包率;
步骤S430:根据往返时延和丢包率确定各个数据节点的评价信息,评价信息用于表示数据节点的实时通信质量;
步骤S440:根据评价信息从多个数据节点中选取目标节点,并根据区块高度向目标节点发送区块数据同步请求。
在本申请实施例提供的区块数据同步方法中,通过获取与当前区块链节点进行数据通信的多个数据节点,并分别对每个数据节点统计往返时延和丢包率,可以获得每个数据节点与当前区块链节点进行数据通信的实时通信质量,进而从中选择实时通信质量较高的目标节点进行数据同步,由此可以提高区块数据的同步效率和准确率。
以下分别通过多个实施例对本申请中区块数据同步方法的各个方法步骤做详细说明。
在步骤S410中,获取处于通信连接状态的多个数据节点,数据节点是用于提供区块数据读取服务的区块链节点。
如图3所示的区块链网络架构,业务网络中的一个业务节点或者轻节点可以同时与数据节点网络中的多个数据节点进行数据通信,数据节点网络中的一个数据节点也可以同时向业务网络中的多个业务节点或者轻节点提供数据读取服务。
处于业务网络中的业务节点或者轻节点可以各自维护一个数据节点列表,用于保存与之进行通信连接的多个数据节点,数据节点列表中除了保存各个数据节点的通信地址以外,还可以保存各个数据节点的当前状态,例如可以包括通信连接状态或者连接中断状态。当一个数据节点的当前状态为通信连接状态时,表示当前区块链节点(业务节点或者轻节点)能够与之进行数据通信;当一个数据节点的当前状态为连接中断状态时,表示当前区块链节点无法与之进行数据通信。
当区块链网络中产生新的区块时,数据节点可以向业务节点或者轻节点发送最新的区块高度,以通知相关节点及时更新区块数据。在当前区块链节点接收到数据节点发送的最新区块高度时,可以将最新区块高度与自身保存的区块高度进行比较,若最新区块高度大于当前区块链节点自身保存的区块高度,则可以根据当前区块链节点维护的数据节点列表,获取当前处于通信连接状态的数据节点,并基于后续步骤从中选择目标节点,并与目标节点进行数据同步。
在步骤S420中,分别统计各个数据节点进行数据通信的往返时延和丢包率。
往返时延(Round-Trip Time,简称RTT)是指数据从网络一端传到另一端所需的时间。通常,往返时延RTT由发送时延、传播时延、排队时延、处理时延等部分组成。往返时延RTT可以用于诊断网络连接的速度、可靠性以及拥塞程度。
数据在网络中是被分成一个个数据包进行传输的,每个数据包中有表示数据信息和提供数据路由的帧。数据包在网络介质中传播时,可能会有一小部分由于传输距离过长、网络拥塞等原因而出现不同程度的数据丢失。丢包率即用于表示数据传输过程中出现数据包丢失的程度,一般可以用丢失数据包的数量与数据包发送总量的比值来表示。
图5示出了本申请一个实施例中对各个数据节点进行数据统计的步骤流程图。如图5所示,在以上实施例的基础上,步骤S420中的分别统计各个数据节点进行数据通信的往返时延和丢包率,可以包括如下的步骤S510至步骤S530。
在步骤S510中,分别向各个数据节点发送心跳请求数据包,并监听由数据节点返回的心跳响应数据包。
心跳机制是定时发送一个自定义的结构体(即心跳请求数据包),让对方知道自己还活着,以确保连接的有效性的机制。心跳请求数据包可以是数据为空的报文,如果对方回应了这个报文,说明对方还在线,连接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为连接丢失,没有必要保持连接。
在本申请的一个实施例中,当前区块链节点可以通过自身的区块链客户端应用程序向各个数据节点发送心跳请求数据包来检测连接是否正常,并进一步确定数据节点进行数据通信的往返时延。当前区块链节点每隔一定时间向各个数据节点发送一个短小的数据包,然后启动一个线程,在线程中不断检测各个数据节点的回应。如果超过一定时间而没有收到某一数据节点的回应,即认为该数据节点已经掉线,可以将该数据节点的当前状态更新为连接中断状态。
在本申请的一个实施例中,当前区块链节点可以利用TCP协议中的KeepAlive套接字选项实现心跳包机制。TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务,TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。
在TCP的机制中,本身是存在有心跳包的机制的,也就是TCP的KeepAlive套接字选项。在当前区块链节点开启KeepAlive功能后,就会自动在规定时间内向各个数据节点发送心跳请求数据包,而数据节点在收到心跳请求数据包后就会自动回复心跳响应数据包。
在本申请的一个实施例中,当前区块链节点可以获取当前处于通信连接状态的数据节点的数量;如果当前处于通信连接状态的数据节点的数量小于设定的数量阈值,可以使用区块链客户端应用程序向各个数据节点发送心跳请求数据包;如果当前处于通信连接状态的数据节点的数量大于设定的数量阈值,可以开启TCP协议的KeepAlive套接字选项,以利用TCP机制向各个数据节点发送心跳请求数据包。
在本申请的一个实施例中,当前区块链节点可以分别获取与各个数据节点相对应的心跳请求周期,按照心跳请求周期定期向各个数据节点发送心跳请求数据包。
在本申请的一个实施例中,当前区块链节点可以分别获取当前区块链节点与各个数据节点进行数据通信的通信频率,进而根据通信频率所在的频率区间确定与数据节点相对应的心跳请求周期。
在本申请的一个实施例中,心跳请求周期与通信频率之间呈正相关关系,通信频率越高的数据节点,心跳请求周期也越高。
在本申请的一个实施例中,当前区块链节点可以维护频率区间与心跳请求周期之间的映射关系表,同时可以在数据节点列表中实时监测并更新各个数据节点的通信频率。根据各个数据节点的通信频率查询映射关系表后得到数据节点所在的频率区间,进而确定与频率区间对应的心跳请求周期。
在步骤S520中,根据心跳响应数据包的响应时长统计各个数据节点进行数据通信的往返时延。
心跳响应数据包的响应时长指的是当前区块链节点从发出心跳请求数据包到接收到心跳响应数据包之间的时间间隔,当前区块链节点在监听到各个数据节点返回的心跳响应数据包后,可以分别计算心跳响应数据包与对应的心跳请求数据包之间的时间间隔,从而确定各个数据节点进行数据通信的往返时延。
在本申请的一个实施例中,根据心跳响应数据包的响应时长统计各个数据节点进行数据通信的往返时延的方法可以包括:分别获取由各个数据节点返回的心跳响应数据包;根据心跳响应数据包的接收时间与对应的心跳请求数据包的发送时间确定心跳响应数据包的响应时长;根据响应时长统计数据节点进行数据通信的往返时延。
心跳响应数据包的响应时长可以包括展示耗时、传输耗时、应用***耗时等多个部分。展示耗时体现在浏览器或者客户端的配置差异上,网络传输耗时在广域网中一般分布在5ms至50ms之间;而在局域网中,网络传输耗时一般在1ms以内,可以忽略不计。应用***耗时体现在处理逻辑、数据读取性能、服务器性能等方面,例如影响处理逻辑的因素包括算法的时间复杂度和日志数量;影响数据读取性能的因素包括数据库的表、索引设计是否合理,表关联是否正确,是否存在扫描大量非必要的数据造成IO读取的浪费,以及SQL实现算法是否可优化等;影响服务器性能的因素包括CPU使用率、磁盘传输速率、内存使用量等。
图6示出了本申请一个实施例中统计数据节点往返时延的步骤流程图,如图6所示,在以上实施例的基础上,根据响应时长统计数据节点进行数据通信的往返时延,可以包括如下的步骤S610至步骤S650。
步骤S610:实时获取距离当前时刻最近的预设数量的响应时长。
当前区块链节点可以维护多个响应时长监控列表,每个响应时长监控列表用于记录一个数据节点向当前区块链节点返回心跳响应数据包而产生的响应时长。例如,当前区块链节点与N个数据节点进行数据通信,可以维护N个响应时长监控列表,每当接收到心跳响应数据包时,可以根据心跳响应数据包的来源分配至对应的响应时长监控列表中。
图7示出了本申请一个实施例中统计往返时延的原理示意图。如图7所示,当前区块链节点701可以同时与多个数据节点702进行数据通信,通过向每个数据节点702发送心跳请求数据包,并监听每个数据节点702返回的心跳响应数据包,从而获得每个数据节点对应在每个心跳轮次中的响应时长,以及每个心跳轮次中接收到心跳响应数据包的时间节点。
当前区块链节点701分别针对每个数据节点702维护一个响应时长监控列表703,根据数据监听结果,可以将心跳轮次、时间节点和响应时长等多组数据写入到实时更新的响应时长监控列表703中。
在每个响应时长监控列表703中,按照接收到心跳响应数据包的时间顺序进行排序,针对一个数据节点而言,可以从该数据节点所返回的所有心跳响应数据包中筛选出距离当前时刻最近的预设数量的心跳响应数据包,并获取筛选出的各个心跳响应数据包的响应时长。响应时长的获取数量与心跳请求周期呈负相关关系,心跳请求周期越小时,获取响应时长的数量越多。例如,当前区块链节点每隔2秒向一个数据节点发送一次心跳请求数据包,相应地可以获取该数据节点返回的最近30次的心跳响应数据包,并分别获取每次心跳响应数据包的响应时长。在本申请的一个实施例中,响应时长的获取数量也可以是一个预先设定的固定值,本申请对此不做特殊限定。
步骤S620:根据预设数量的响应时长绘制数据节点的响应时长分布图。
在本申请的一个实施例中,可以将响应轮次作为横坐标,将响应时长作为纵坐标,绘制数据节点的响应时长分布图,用以表示数据节点对当前区块链节点的每次心跳请求做出响应的响应时长在不同响应轮次中的分布情况。
在本申请的一个实施例中,也可以将心跳请求数据包的发送时间或者心跳响应数据包的接收时间作为横坐标,将响应时长作为纵坐标,绘制数据节点的响应时长分布图,用以表示数据节点对当前区块链节点的每次心跳请求做出响应的响应时长在不同心跳响应时刻的分布情况。
继续参考图7,根据响应时长监控列表703中记录并筛选出的数据,可以为每个数据节点绘制对应的响应时长分布图704,根据响应时长分布图704中各个数据点的分布情况,可以判断各个数据点的分布是否正常,并可以用于预测未来一段时间的响应时长变化趋势。
步骤S630:对响应时长分布图进行异常数据识别,以移除响应时长分布图中的异常数据点。
当一个数据点与其他数据点的分布情况明显相异时,即表示该数据点可能存在异常,出现异常的原因可能是数据记录有误或者突发的网络故障。例如,当一个数据点出现响应时长突然增大或者突然减小,并且增大或者减小的幅度超出了其他数据点之间的响应时长平均变化程度,便可以将该数据标记为异常数据点,并将其从响应时长分布图中移除。
在本申请的一个实施例中,可以根据一个数据点与相邻两个数据点之间的响应时长变化量与预设的变化量阈值进行比较,以判断该数据点是否异常。例如,一个数据点的响应时长为Xi,与之相邻的前一数据点的响应时长为Xi-1,与之相邻的后一数据点的响应时长为Xi+1,由此可以计算该数据点的响应时长变化量为(Xi+1+Xi-1-2Xi)/2。在本申请的一个实施例中,根据各个数据点的响应时长变化量,可以计算得到平均响应时长变化量,并将平均响应时长变化量与预设系数的乘积作为预设的变化量阈值。
步骤S640:对移除异常数据点后的响应时长分布图进行曲线拟合,得到用于表示响应时长变化状态的响应时长拟合函数。
曲线拟合是用连续曲线近似地刻画或比拟平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法,即用解析表达式逼近离散数据的方法。通过曲线拟合,可以根据移除异常数据点后的响应时长分布图中的离散分布的数据点,拟合得到数据连续分布的响应时长拟合函数。
在本申请的一个实施例中,可以分别使用多种函数类型对移除异常数据点后的响应时长分布图进行曲线拟合,并根据拟合结果选取拟合效果最好的一条曲线函数作为响应时长拟合函数。例如,本申请可以分别采用线性函数、指数函数、幂函数和双曲线函数对移除异常数据点后的响应时长分布图进行曲线拟合,并从中选取拟合效果最好的一种函数类型确定最终的响应时长拟合函数。
步骤S650:根据响应时长拟合函数预测数据节点进行数据通信的往返时延。
在本申请的一个实施例中,根据响应时长拟合函数可以预测在下一个心跳轮次或者在下一时刻与数据节点进行数据通信的往返时延。
如图7所示,对于每个响应时长分布图704,可以分别进行曲线拟合得到相应的响应时长拟合函数705,利用该响应时长拟合函数705即可预测得到各个数据节点进行数据通信的往返时延RTT。
基于以上步骤S610至步骤S650,可以采用曲线拟合的方式对数据节点的往返时延RTT进行预测。在本申请的一个实施例中,也可以将数据节点进行多次心跳响应得到响应时长的平均值,并将响应时长平均值作为其进行数据通信的往返时延。
在步骤S530中,根据心跳响应数据包携带的数据量信息统计各个数据节点进行数据通信的丢包率。
图8示出了本申请一个实施例中统计数据节点丢包率的步骤流程图。如图8所示,在以上实施例的基础上,步骤S530可以进一步包括如下的步骤S810至步骤S840。
步骤S810:解析心跳响应数据包,得到心跳响应数据包中携带的数据量信息,数据量信息包括统计时间区间以及数据节点在统计时间区间内的数据发送量,数据发送量是数据节点发送区块数据的数据量。
在心跳响应数据包中配置有专门的字段,用于记录数据节点的数据量信息。统计时间区间是由各个数据分别配置的用于统计数据发送量的时间区间,各个数据节点可以具有相同的统计时间区间,相同的统计时间区间有利于当前区块链节点对所有数据节点的数据量信息进行汇总和比较。
在本申请的一个实施例中,数据发送量是根据数据节点在统计时间区间内向其他区块链节点发送区块数据的数据总量计算得到的单位时间发送量。
在本申请的一个实施例中,数据节点也可以单独向当前区块链节点发送记录数据量信息的数据报文。
步骤S820:获取当前区块链节点在统计时间区间内的数据接收量,数据接收量是当前区块链节点接收区块数据的数据量。
在本申请的一个实施例中,当前区块链节点可以根据统计时间区间监测接收到各个数据节点发送区块数据的数据量。
在本申请的一个实施例中,数据接收量可以是统计时间区间内接收到的区块数据总量,或者可以是根据该数据总量计算得到的单位时间接收量。
比较数据发送量与数据接收量的数值关系;若数据发送量小于数据接收量,则将数据接收量的数值更新为数据发送量。
步骤S830:根据数据发送量和数据接收量确定数据节点在各个统计时间区间内的丢包率。
根据公式loss=1-(rcv+a)/(snt+b)确定数据节点在各个统计时间区间内的丢包率;其中,loss为丢包率,rcv为数据接收量,snt为数据发送量,a为大于或等于0的第一调整系数,b为大于或等于a的第二调整系数。
在本申请的一个实施例中,a可以取值为1,b可以取值为2。
步骤S840:根据数据节点在多个统计时间区间内的丢包率确定数据节点进行数据通信的丢包率。
图9示出了本申请一个实施例中确定丢包率的步骤流程图。如图9所示,在以上实施例的基础上,步骤S840可以进一步包括如下的步骤S910至步骤S950。
步骤S910:在距离当前时刻最近的多个统计时间区间内,实时获取预设数量的丢包率。
当前区块链节点可以维护多个丢包率监控列表,每个丢包率监控列表用于记录一个数据节点向当前区块链节点发送数据而产生的丢包率。例如,当前区块链节点与N个数据节点进行数据通信,可以维护N个丢包率监控列表,每当接收到心跳响应数据包时,可以根据心跳响应数据包的来源计算丢包率,并将丢包率分配至对应的丢包率监控列表中。
例如,统计时间区间为1分钟,当前区块链节点可以每隔1分钟统计一次与一个数据节点进行数据通信的丢包率,当预设数量为30时,即表示当前区块链节点实时获取最近30次(即最近30个统计时间区间)统计的丢包率。
步骤S920:根据预设数量的丢包率绘制数据节点的丢包率分布图。
在本申请的一个实施例中,可以将统计轮次作为横坐标,将丢包率作为纵坐标,绘制数据节点的丢包率分布图,用以表示数据节点向当前区块链节点发送数据的数据丢包率在不同统计轮次中的分布情况。在本申请实施例中,一个统计时间区间即代表一个统计轮次。
步骤S930:对丢包率分布图进行异常数据识别,以移除丢包率分布图中的异常数据点。
当一个数据点与其他数据点的分布情况明显相异时,即表示该数据点可能存在异常,出现异常的原因可能是数据记录有误或者突发的网络故障。例如,当一个数据点出现丢包率突然增大或者突然减小,并且增大或者减小的幅度超出了其他数据点之间的丢包率分布曲线平均变化程度,便可以将该数据标记为异常数据点,并将其从丢包率分布曲线分布图中移除。
在本申请的一个实施例中,可以根据一个数据点与相邻两个数据点之间的丢包率分布曲线变化量与预设的变化量阈值进行比较,以判断该数据点是否异常。例如,一个数据点的丢包率分布曲线为Yi,与之相邻的前一数据点的丢包率为Yi-1,与之相邻的后一数据点的丢包率为Yi+1,由此可以计算该数据点的丢包率变化量为(Yi+1+Yi-1-2Yi)/2。在本申请的一个实施例中,根据各个数据点的丢包率变化量,可以计算得到平均丢包率变化量,并将平均丢包率变化量与预设系数的乘积作为预设的变化量阈值。
步骤S940:对移除异常数据点后的丢包率分布图进行曲线拟合,得到用于表示丢包率变化状态的丢包率拟合函数。
在本申请的一个实施例中,可以分别使用多种函数类型对移除异常数据点后的丢包率分布图进行曲线拟合,并根据拟合结果选取拟合效果最好的一条曲线函数作为丢包率拟合函数。例如,本申请可以分别采用线性函数、指数函数、幂函数和双曲线函数对移除异常数据点后的丢包率分布图进行曲线拟合,并从中选取拟合效果最好的一种函数类型确定最终的丢包率拟合函数。
步骤S950:根据丢包率拟合函数预测数据节点进行数据通信的丢包率。
在本申请的一个实施例中,根据丢包率拟合函数可以预测在下一个统计轮次或者下一个统计时间区间内与数据节点进行数据通信的丢包率。
基于以上步骤S910至步骤S950,可以采用曲线拟合的方式对数据节点的丢包率进行预测。在本申请的一个实施例中,也可以根据数据节点在多个统计时间区间内的多个丢包率计算平均值,并将该平均值作为其进行数据通信的丢包率。
在步骤S430中,根据往返时延和丢包率确定各个数据节点的评价信息,评价信息用于表示数据节点的实时通信质量。
图10示出了本申请一个实施例中确定数据节点评价信息的步骤流程图。如图10所示,在以上实施例的基础上,步骤S430可以进一步包括如下的步骤S1010至步骤S1040。
步骤S1010:获取当前区块链节点维护的往返时延积分模型和丢包率积分模型。
图11示出了本申请一个实施例中的往返时延积分模型。如图11所示,往返时延积分模型为一个分段模型,其中包括多个时延区间,每个时延区间可以关联映射至一个时延积分。往返时延越高,对应的时延积分越大,也表示网络延迟越高。
图12示出了本申请一个实施例中的丢包率积分模型。如图12所示,丢包率积分模型与往返时延积分模型类似,也是一个分段模型,其中包括多个丢包率区间,每个丢包率区间可以关联映射至一个丢包率积分。
步骤S1020:在往返时延积分模型中查找往返时延所在的时延区间,并获取与时延区间相关联的时延积分。
根据数据节点的往返时延,可以在往返时延积分模型中查找其所在的时延区间,例如数据节点A的往返时延落在时延区间0<=RTT<50的范围内,则表示数据节点A与当前区块链节点之间的网络质量较好,网络延迟较低,可以确定数据节点A的时延积分为1;又例如,数据节点B的往返时延落在时延区间300<=RTT<500的范围内,则表示数据节点B与当前区块链节点之间的网络质量较差,网络延迟较高,可以确定数据节点B的时延积分为21。
步骤S1030:在丢包率积分模型中查找丢包率所在的丢包率区间,并获取与丢包率区间相关联的丢包率积分。
根据数据节点的丢包率,可以在丢包率积分模型中查找其所在的丢包率区间,例如数据节点A的丢包率落在丢包率区间0<=Loss<4%的范围内,则表示数据节点A与当前区块链节点之间的网络质量较好,数据传输正常,可以确定数据节点A的丢包率积分为3;又例如,数据节点B的丢包率落在丢包率区间10%<=Loss<20%的范围内,则表示数据节点B与当前区块链节点之间的网络质量较差,数据传输异常,可以确定数据节点B的丢包率积分为20。
步骤S1040:根据时延积分和丢包率积分确定数据节点的评价信息。
在本申请的一个实施例中,获取与数据节点相关的时延评价权重和丢包率评价权重;根据时延评价权重和丢包率评价权重对时延积分和丢包率积分进行加权处理,得到数据节点的评价信息。
基于以上的步骤S1010至步骤S1040,可以确定每个数据节点的评价信息,该评价信息可以表示为对往返时延和丢包率两个维度进行加权处理得到的加权积分。
在步骤S440中,根据评价信息从多个数据节点中选取目标节点,并根据区块高度向目标节点发送区块数据同步请求。
在当前区块链节点接收到数据节点发送过来的区块高度时,基于区块高度可以判断当前区块链节点是否需要同步区块数据。如果需要,则通过评估各个数据节点的最终积分,选择积分最小的,也就是网络延迟和丢包率综合表现最好的数据节点,然后将区块数据同步请求发送给积分最小的数据节点,最终提升区块链网络整体的区块数据同步速度。
在本申请实施例提供的区块数据同步方法中,通过RTT和丢包率两个维度建立积分模型,能充分利用网络资源和节点自身的计算资源,提高区块同步的速度,而且能动态调度数据节点网络,保证区块数据传输的高可用性。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的区块数据同步方法。图13示出了本申请实施例提供的区块数据同步装置的结构框图。如图13所示区块数据同步装置1300主要可以包括:
获取模块1310,被配置为获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;
统计模块1320,被配置为分别统计各个所述数据节点进行数据通信的往返时延和丢包率;
评价模块1330,被配置为根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;
请求模块1340,被配置为根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。
在本申请的一个实施例中,基于以上实施例,统计模块1320包括:
心跳监听模块1321,被配置为分别向各个所述数据节点发送心跳请求数据包,并监听由所述数据节点返回的心跳响应数据包;
时延统计模块1322,被配置为根据所述心跳响应数据包的响应时长统计各个所述数据节点进行数据通信的往返时延;
丢包率统计模块1323,被配置为根据所述心跳响应数据包携带的数据量信息统计各个所述数据节点进行数据通信的丢包率。
在本申请的一个实施例中,基于以上各实施例,心跳监听模块1321可以进一步包括:
周期获取模块,被配置为分别获取与各个所述数据节点相对应的心跳请求周期;
心跳发送模块,被配置为按照所述心跳请求周期定期向各个所述数据节点发送心跳请求数据包。
在本申请的一个实施例中,基于以上各实施例,周期获取模块可以进一步包括:
频率获取模块,被配置为分别获取当前区块链节点与各个所述数据节点进行数据通信的通信频率;
周期确定模块,被配置为根据所述通信频率所在的频率区间确定与所述数据节点相对应的心跳请求周期。
在本申请的一个实施例中,基于以上各实施例,时延统计模块1322可以进一步包括:
响应获取模块,被配置为分别获取由各个所述数据节点返回的心跳响应数据包;
响应时长确定模块,被配置为根据所述心跳响应数据包的接收时间与对应的心跳请求数据包的发送时间确定所述心跳响应数据包的响应时长;
往返时延统计模块,被配置为根据所述响应时长统计所述数据节点进行数据通信的往返时延。
在本申请的一个实施例中,基于以上各实施例,往返时延统计模块包括:
响应时长获取模块,被配置为实时获取距离当前时刻最近的预设数量的响应时长;
响应时长绘图模块,被配置为根据所述预设数量的响应时长绘制所述数据节点的响应时长分布图;
第一异常识别模块,被配置为对所述响应时长分布图进行异常数据识别,以移除所述响应时长分布图中的异常数据点;
第一曲线拟合模块,被配置为对移除所述异常数据点后的响应时长分布图进行曲线拟合,得到用于表示响应时长变化状态的响应时长拟合函数;
往返时延预测模块,被配置为根据所述响应时长拟合函数预测所述数据节点进行数据通信的往返时延。
在本申请的一个实施例中,基于以上各实施例,丢包率统计模块1323可以进一步包括:
发送量确定模块,被配置为解析所述心跳响应数据包,得到所述心跳响应数据包中携带的数据量信息,所述数据量信息包括统计时间区间以及所述数据节点在所述统计时间区间内的数据发送量,所述数据发送量是所述数据节点发送区块数据的数据量;
接收量确定模块,被配置为获取当前区块链节点在所述统计时间区间内的数据接收量,所述数据接收量是所述当前区块链节点接收区块数据的数据量;
区间丢包率统计模块,被配置为根据所述数据发送量和所述数据接收量确定所述数据节点在各个统计时间区间内的丢包率;
丢包率确定模块,被配置为根据所述数据节点在多个统计时间区间内的丢包率确定所述数据节点进行数据通信的丢包率。
在本申请的一个实施例中,基于以上各实施例,丢包率统计模块1323还包括:
数值比较模块,被配置为比较所述数据发送量与所述数据接收量的数值关系;
数值更新模块,被配置为若所述数据发送量小于所述数据接收量,则将所述数据接收量的数值更新为所述数据发送量。
在本申请的一个实施例中,基于以上各实施例,区间丢包率统计模块可以进一步被配置为:
根据公式loss=1-(rcv+a)/(snt+b)确定所述数据节点在各个统计时间区间内的丢包率;其中,loss为丢包率,rcv为数据接收量,snt为数据发送量,a为大于或等于0的第一调整系数,b为大于或等于a的第二调整系数。
在本申请的一个实施例中,基于以上各实施例,丢包率确定模块可以进一步包括:
区间丢包率获取模块,被配置为在距离当前时刻最近的多个统计时间区间内,实时获取预设数量的丢包率;
丢包率绘图模块,被配置为根据所述预设数量的丢包率绘制所述数据节点的丢包率分布图;
第二异常识别模块,被配置为对所述丢包率分布图进行异常数据识别,以移除所述丢包率分布图中的异常数据点;
第二曲线拟合模块,被配置为对移除所述异常数据点后的丢包率分布图进行曲线拟合,得到用于表示丢包率变化状态的丢包率拟合函数;
丢包率预测模块,被配置为根据所述丢包率拟合函数预测所述数据节点进行数据通信的丢包率。
在本申请的一个实施例中,基于以上各实施例,评价模块1330包括:
模型获取模块1331,被配置为获取当前区块链节点维护的往返时延积分模型和丢包率积分模型;
时延积分获取模块1332,被配置为在所述往返时延积分模型中查找所述往返时延所在的时延区间,并获取与所述时延区间相关联的时延积分;
丢包率积分获取模块1333,被配置为在所述丢包率积分模型中查找所述丢包率所在的丢包率区间,并获取与所述丢包率区间相关联的丢包率积分;
评价信息确定模块1334,被配置为根据所述时延积分和所述丢包率积分确定所述数据节点的评价信息。
在本申请的一个实施例中,基于以上各实施例,评价信息确定模块1334包括:
权重获取模块,被配置为获取与所述数据节点相关的时延评价权重和丢包率评价权重;
积分加权模块,被配置为根据所述时延评价权重和丢包率评价权重对所述时延积分和所述丢包率积分进行加权处理,得到所述数据节点的评价信息。
本申请各实施例中提供的区块数据同步装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图14示意性地示出了用于实现本申请实施例的电子设备的计算机***结构框图。
需要说明的是,图14示出的电子设备的计算机***1400仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14所示,计算机***1400包括中央处理器1401(Central Processing Unit,CPU),其可以根据存储在只读存储器1402(Read-Only Memory,ROM)中的程序或者从存储部分1408加载到随机访问存储器1403(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1403中,还存储有***操作所需的各种程序和数据。中央处理器1401、在只读存储器1402以及随机访问存储器1403通过总线1404彼此相连。输入/输出接口1405(Input/Output接口,即I/O接口)也连接至总线1404。
以下部件连接至输入/输出接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至输入/输出接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理器1401执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (16)
1.一种区块数据同步方法,其特征在于,包括:
获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;
分别统计各个所述数据节点进行数据通信的往返时延和丢包率;
根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;
根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。
2.根据权利要求1所述的区块数据同步方法,其特征在于,分别统计各个所述数据节点进行数据通信的往返时延和丢包率,包括:
分别向各个所述数据节点发送心跳请求数据包,并监听由所述数据节点返回的心跳响应数据包;
根据所述心跳响应数据包的响应时长统计各个所述数据节点进行数据通信的往返时延;
根据所述心跳响应数据包携带的数据量信息统计各个所述数据节点进行数据通信的丢包率。
3.根据权利要求2所述的区块数据同步方法,其特征在于,分别向各个所述数据节点发送心跳请求数据包,包括:
分别获取与各个所述数据节点相对应的心跳请求周期;
按照所述心跳请求周期定期向各个所述数据节点发送心跳请求数据包。
4.根据权利要求3所述的区块数据同步方法,其特征在于,分别获取与各个所述数据节点相对应的心跳请求周期,包括:
分别获取当前区块链节点与各个所述数据节点进行数据通信的通信频率;
根据所述通信频率所在的频率区间确定与所述数据节点相对应的心跳请求周期。
5.根据权利要求2所述的区块数据同步方法,其特征在于,根据所述心跳响应数据包的响应时长统计各个所述数据节点进行数据通信的往返时延,包括:
分别获取由各个所述数据节点返回的心跳响应数据包;
根据所述心跳响应数据包的接收时间与对应的心跳请求数据包的发送时间确定所述心跳响应数据包的响应时长;
根据所述响应时长统计所述数据节点进行数据通信的往返时延。
6.根据权利要求5所述的区块数据同步方法,其特征在于,根据所述响应时长统计所述数据节点进行数据通信的往返时延,包括:
实时获取距离当前时刻最近的预设数量的响应时长;
根据所述预设数量的响应时长绘制所述数据节点的响应时长分布图;
对所述响应时长分布图进行异常数据识别,以移除所述响应时长分布图中的异常数据点;
对移除所述异常数据点后的响应时长分布图进行曲线拟合,得到用于表示响应时长变化状态的响应时长拟合函数;
根据所述响应时长拟合函数预测所述数据节点进行数据通信的往返时延。
7.根据权利要求2所述的区块数据同步方法,其特征在于,根据所述心跳响应数据包携带的数据量信息统计各个所述数据节点进行数据通信的丢包率,包括:
解析所述心跳响应数据包,得到所述心跳响应数据包中携带的数据量信息,所述数据量信息包括统计时间区间以及所述数据节点在所述统计时间区间内的数据发送量,所述数据发送量是所述数据节点发送区块数据的数据量;
获取当前区块链节点在所述统计时间区间内的数据接收量,所述数据接收量是所述当前区块链节点接收区块数据的数据量;
根据所述数据发送量和所述数据接收量确定所述数据节点在各个统计时间区间内的丢包率;
根据所述数据节点在多个统计时间区间内的丢包率确定所述数据节点进行数据通信的丢包率。
8.根据权利要求7所述的区块数据同步方法,其特征在于,在根据所述数据发送量和所述数据接收量确定所述数据节点在各个统计时间区间内的丢包率之前,所述方法还包括:
比较所述数据发送量与所述数据接收量的数值关系;
若所述数据发送量小于所述数据接收量,则将所述数据接收量的数值更新为所述数据发送量。
9.根据权利要求7所述的区块数据同步方法,其特征在于,根据所述数据发送量和所述数据接收量确定所述数据节点在各个统计时间区间内的丢包率,包括:
根据公式loss=1-(rcv+a)/(snt+b)确定所述数据节点在各个统计时间区间内的丢包率;其中,loss为丢包率,rcv为数据接收量,snt为数据发送量,a为大于或等于0的第一调整系数,b为大于或等于a的第二调整系数。
10.根据权利要求7所述的区块数据同步方法,其特征在于,根据所述数据节点在多个统计时间区间内的丢包率确定所述数据节点进行数据通信的丢包率,包括:
在距离当前时刻最近的多个统计时间区间内,实时获取预设数量的丢包率;
根据所述预设数量的丢包率绘制所述数据节点的丢包率分布图;
对所述丢包率分布图进行异常数据识别,以移除所述丢包率分布图中的异常数据点;
对移除所述异常数据点后的丢包率分布图进行曲线拟合,得到用于表示丢包率变化状态的丢包率拟合函数;
根据所述丢包率拟合函数预测所述数据节点进行数据通信的丢包率。
11.根据权利要求1至10中任意一项所述的区块数据同步方法,其特征在于,根据所述往返时延和丢包率确定各个所述数据节点的评价信息,包括:
获取当前区块链节点维护的往返时延积分模型和丢包率积分模型;
在所述往返时延积分模型中查找所述往返时延所在的时延区间,并获取与所述时延区间相关联的时延积分;
在所述丢包率积分模型中查找所述丢包率所在的丢包率区间,并获取与所述丢包率区间相关联的丢包率积分;
根据所述时延积分和所述丢包率积分确定所述数据节点的评价信息。
12.根据权利要求11所述的区块数据同步方法,其特征在于,根据所述时延积分和所述丢包率积分确定所述数据节点的评价信息,包括:
获取与所述数据节点相关的时延评价权重和丢包率评价权重;
根据所述时延评价权重和丢包率评价权重对所述时延积分和所述丢包率积分进行加权处理,得到所述数据节点的评价信息。
13.一种区块数据同步装置,其特征在于,包括:
获取模块,被配置为获取处于通信连接状态的多个数据节点,所述数据节点是用于提供区块数据读取服务的区块链节点;
统计模块,被配置为分别统计各个所述数据节点进行数据通信的往返时延和丢包率;
评价模块,被配置为根据所述往返时延和丢包率确定各个所述数据节点的评价信息,所述评价信息用于表示所述数据节点的实时通信质量;
请求模块,被配置为根据所述评价信息从所述多个数据节点中选取目标节点,并根据所述区块高度向所述目标节点发送区块数据同步请求。
14.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12中任意一项所述的区块数据同步方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令使得所述电子设备执行权利要求1至12中任意一项所述的区块数据同步方法。
16.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任意一项所述的区块数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111295745.1A CN116074331A (zh) | 2021-11-03 | 2021-11-03 | 区块数据同步方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111295745.1A CN116074331A (zh) | 2021-11-03 | 2021-11-03 | 区块数据同步方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116074331A true CN116074331A (zh) | 2023-05-05 |
Family
ID=86179156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111295745.1A Pending CN116074331A (zh) | 2021-11-03 | 2021-11-03 | 区块数据同步方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116074331A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599643A (zh) * | 2023-05-22 | 2023-08-15 | 湖南首辰健康科技有限公司 | 一种区块链数据同步方法、装置、电子设备和介质 |
-
2021
- 2021-11-03 CN CN202111295745.1A patent/CN116074331A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599643A (zh) * | 2023-05-22 | 2023-08-15 | 湖南首辰健康科技有限公司 | 一种区块链数据同步方法、装置、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107819829B (zh) | 访问区块链的方法、***、区块链节点设备及用户终端 | |
JP3593528B2 (ja) | 分散ネットワーク管理システムおよび方法 | |
CN112714192B (zh) | 数据同步方法、装置、计算机可读介质及电子设备 | |
WO2021151312A1 (zh) | 一种确定服务间依赖关系的方法及相关装置 | |
CN110855737B (zh) | 一种一致性级别可控的自适应数据同步方法和*** | |
CN109348264B (zh) | 视频资源共享方法、装置、存储介质及电子设备 | |
Li et al. | Method of resource estimation based on QoS in edge computing | |
CN111756646A (zh) | 网络传输控制方法、装置、计算机设备及存储介质 | |
Chen et al. | Precise error estimation for sketch-based flow measurement | |
CN112632129A (zh) | 一种码流数据管理方法、装置及存储介质 | |
CN110620820A (zh) | 一种泛在电力物联网智能管理*** | |
CN112527530A (zh) | 消息处理方法、装置、设备、存储介质及计算机程序产品 | |
CN116074331A (zh) | 区块数据同步方法及相关产品 | |
CN103209102A (zh) | Web服务质量的分布式测量***和方法 | |
CN117081996B (zh) | 基于服务端实时反馈和软阈值的流量控制方法及相关设备 | |
CN111600774B (zh) | 消费延迟确定方法、***、装置、设备及可读存储介质 | |
CN112671602A (zh) | 边缘节点的数据处理方法、装置、***、设备和存储介质 | |
CN113760640A (zh) | 监控日志处理方法、装置、设备及存储介质 | |
CN111935310A (zh) | 应用于物联网终端的数据上报***及数据上报方法 | |
CN114448838B (zh) | ***可靠度评估方法 | |
Gu et al. | Grouping-based consistency protocol design for end-edge-cloud hierarchical storage system | |
TWI766387B (zh) | 一種具延遲感知負載平衡的反向代理方法和存儲裝置 | |
CN115987858A (zh) | 区块链网络的压力测试方法及相关设备 | |
CN113810461A (zh) | 带宽控制方法、装置、设备及可读存储介质 | |
CN115333917A (zh) | 一种cdn异常检测方法及装置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40089240 Country of ref document: HK |