CN111147392B - 基于区块链的数据同步方法、装置、设备及可读存储介质 - Google Patents

基于区块链的数据同步方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN111147392B
CN111147392B CN201911356799.7A CN201911356799A CN111147392B CN 111147392 B CN111147392 B CN 111147392B CN 201911356799 A CN201911356799 A CN 201911356799A CN 111147392 B CN111147392 B CN 111147392B
Authority
CN
China
Prior art keywords
synchronization
block
congestion
congestion window
weight
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.)
Active
Application number
CN201911356799.7A
Other languages
English (en)
Other versions
CN111147392A (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 CN201911356799.7A priority Critical patent/CN111147392B/zh
Publication of CN111147392A publication Critical patent/CN111147392A/zh
Application granted granted Critical
Publication of CN111147392B publication Critical patent/CN111147392B/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例公开了一种基于区块链的数据同步方法、装置、设备及可读存储介质,方法包括:第一节点发送区块同步请求至第二节点;区块同步请求包含第一拥塞窗口,第一拥塞窗口用于确定所请求的同步区块数量;获取第二节点根据第一拥塞窗口返回的同步区块,根据与同步区块相关联的区块同步行为,获取同步行为参数;根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;第一拥塞权重是通过区块同步历史行为对应的历史同步行为参数所确定的;根据第二拥塞权重和第一拥塞权重对第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口。采用本申请,不仅可充分利用节点的资源,还可以解决各节点之间的网络拥塞问题。

Description

基于区块链的数据同步方法、装置、设备及可读存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于区块链的数据同步方法、装置、设备以及可读存储介质。
背景技术
由于区块链的不可篡改性以及各行业对数据安全的愈发重视,近些年区块链得到了学术界和商业界越来越多的青睐和应用。
区块链管理系统设定的原始核心共识节点数量有限,因此区块链的资源空间是有限的,若在某段时间内,对区块链中的某一资源的需求超过了该资源所能提供的可用部分,区块链网络的性能就要发生变化,这种情况叫做网络拥塞;区块链网络拥塞是由许多因素引起的,简单的提高节点处理机的速度或者扩大节点缓存的存储空间并不能解决网络拥塞问题。
发明内容
本申请实施例提供一种基于区块链的数据同步方法、装置、设备以及可读存储介质,不仅可以充分利用节点的资源,而且可以解决各节点之间的网络拥塞问题。
本申请实施例一方面提供一种基于区块链的数据同步方法,包括:
第一节点发送区块同步请求至第二节点;上述区块同步请求包含第一拥塞窗口,上述第一拥塞窗口用于确定所请求的同步区块数量;
获取上述第二节点根据上述第一拥塞窗口返回的同步区块,根据与上述同步区块相关联的区块同步行为,获取同步行为参数;
根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;上述第一拥塞权重是通过区块同步历史行为对应的上述历史同步行为参数所确定的;
根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;上述第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
其中,上述根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,包括:
获取与上述第一拥塞权重相关联的上述历史同步行为参数中的待替换参数;上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数;
将上述待替换参数替换为上述同步行为参数,得到替换后的历史同步行为参数;
根据上述替换后的历史同步行为参数,生成上述第二拥塞权重。
其中,上述替换后的历史同步行为参数包括替换后的区块传输速度集合和替换后的区块处理速度集合;
上述根据上述替换后的历史同步行为参数,生成上述第二拥塞权重,包括:
根据上述替换后的区块传输速度集合,确定第二传输权重;
根据上述替换后的区块处理速度集合,确定第二处理权重;
根据上述第二传输权重和上述第二处理权重,生成上述第二拥塞权重。
其中,上述根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口,包括:
若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口;上述拥塞权重阈值是根据上述第一拥塞权重所生成。
其中,上述若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口,包括:
若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口小于拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口;
若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口大于或等于上述拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到上述第二拥塞窗口。
其中,上述则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口,包括:
将区块同步历史请求以及上述区块同步请求均确定为待检测请求,从上述待检测请求中获取时间连续且包含上述区块同步请求的有效请求集合;上述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;
将上述有效请求集合中的有效请求的数量作为请求指数,根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口。
其中,上述根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口,包括:
根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;上述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;
根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口。
其中,上述根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口,包括:
若上述预估同步区块数量小于或等于上述拥塞窗口阈值,则确定上述预估同步区块数量为上述第二拥塞窗口所请求的同步区块数量;
若上述预估同步区块数量大于上述拥塞窗口阈值,则确定上述拥塞窗口阈值为上述第二拥塞窗口所请求的同步区块数量。
其中,还包括:
若上述第二拥塞权重小于上述拥塞权重阈值,则根据上述第一拥塞窗口对应的同步区块数量和缩减比例,更新上述拥塞窗口阈值,对上述第一拥塞窗口对应的同步区块数量进行初始化处理,得到上述第二拥塞窗口。
其中,上述区块同步行为包括区块同步传输行为和区块同步处理行为;
上述根据与上述同步区块相关联的区块同步行为,获取同步行为参数,包括:
根据与上述同步区块相关联的上述区块同步传输行为以及传输时间,确定区块传输速度;上述区块同步传输行为是上述第二节点在上述传输时间内传输上述同步区块至上述第一节点的行为;
根据与上述同步区块相关联的上述区块同步处理行为以及处理时间,确定区块处理速度;上述区块同步处理行为是上述第一节点在上述处理时间内处理上述同步区块的行为;
将上述区块传输速度和上述区块处理速度确定为上述同步行为参数。
其中,还包括:
根据最大同步区块高度,确定上述第二节点待发送的起始同步区块高度;上述最大同步区块高度是指上述区块同步历史行为中已同步区块中的最大区块高度;
根据上述起始同步区块高度以及上述第一拥塞窗口,生成上述区块同步请求。
本申请实施例一方面提供了一种基于区块链的数据同步装置,包括:
发送模块,用于第一节点发送区块同步请求至第二节点;上述区块同步请求包含第一拥塞窗口,上述第一拥塞窗口用于确定所请求的同步区块数量;
获取模块,用于获取上述第二节点根据上述第一拥塞窗口返回的同步区块,根据与上述同步区块相关联的区块同步行为,获取同步行为参数;
第一生成模块,用于根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;上述第一拥塞权重是通过区块同步历史行为对应的上述历史同步行为参数所确定的;
调整模块,用于根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;上述第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
其中,上述第一生成模块,包括:
获取参数单元,用于获取与上述第一拥塞权重相关联的上述历史同步行为参数中的待替换参数;上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数;
替换参数单元,用于将上述待替换参数替换为上述同步行为参数,得到替换后的历史同步行为参数;
生成权重单元,用于根据上述替换后的历史同步行为参数,生成上述第二拥塞权重。
其中,上述替换后的历史同步行为参数包括替换后的区块传输速度集合和替换后的区块处理速度集合;
上述生成权重单元,包括:
确定权重子单元,用于根据上述替换后的区块传输速度集合,确定第二传输权重;
上述确定权重子单元,还用于根据上述替换后的区块处理速度集合,确定第二处理权重;
生成权重子单元,用于根据上述第二传输权重和上述第二处理权重,生成上述第二拥塞权重。
其中,上述调整模块,具体用于若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口;上述拥塞权重阈值是根据上述第一拥塞权重所生成。
其中,上述调整模块,包括:
第一处理单元,用于若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口小于拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口;
第二处理单元,用于若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口大于或等于上述拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到上述第二拥塞窗口。
其中,上述第一处理单元,包括:
获取集合子单元,用于将区块同步历史请求以及上述区块同步请求均确定为待检测请求,从上述待检测请求中获取时间连续且包含上述区块同步请求的有效请求集合;上述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;
更新数量子单元,用于将上述有效请求集合中的有效请求的数量作为请求指数,根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口。
其中,上述更新数量子单元,包括:
预估数量子单元,用于根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;上述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;
确定窗口子单元,用于根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口。
其中,上述确定窗口子单元具体用于若上述预估同步区块数量小于或等于上述拥塞窗口阈值,则确定上述预估同步区块数量为上述第二拥塞窗口所请求的同步区块数量;若上述预估同步区块数量大于上述拥塞窗口阈值,则确定上述拥塞窗口阈值为上述第二拥塞窗口所请求的同步区块数量。
其中,上述调整模块,还包括:
第三处理单元,用于若上述第二拥塞权重小于上述拥塞权重阈值,则根据上述第一拥塞窗口对应的同步区块数量和缩减比例,更新上述拥塞窗口阈值,对上述第一拥塞窗口对应的同步区块数量进行初始化处理,得到上述第二拥塞窗口。
其中,上述区块同步行为包括区块同步传输行为和区块同步处理行为;
上述获取模块,包括:
确定速度单元,用于根据与上述同步区块相关联的上述区块同步传输行为以及传输时间,确定区块传输速度;上述区块同步传输行为是上述第二节点在上述传输时间内传输上述同步区块至上述第一节点的行为;
上述确定速度单元,还用于根据与上述同步区块相关联的上述区块同步处理行为以及处理时间,确定区块处理速度;上述区块同步处理行为是上述第一节点在上述处理时间内处理上述同步区块的行为;
确定参数单元,将上述区块传输速度和上述区块处理速度确定为上述同步行为参数。
其中,还包括:
确定模块,用于根据最大同步区块高度,确定上述第二节点待发送的起始同步区块高度;上述最大同步区块高度是指上述区块同步历史行为中已同步区块中的最大区块高度;
第二生成模块,用于根据上述起始同步区块高度以及上述第一拥塞窗口,生成上述区块同步请求。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行如本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,以执行如本申请实施例中的方法。
本申请实施例中的第一节点通过发送包含第一拥塞窗口的区块同步请求至第二节点,可以获取第二节点所属的区块链中的区块(即同步区块),上述第一拥塞窗口用于确定所请求的同步区块数量;根据与同步区块相关联的区块同步行为,获取同步行为参数;根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,根据第二拥塞权重和第一拥塞权重,对第一拥塞窗口对应的同步区块数量进行调整,确定第二拥塞窗口,第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。上述可知,本申请通过对历史同步行为参数和同步行为参数的综合考虑,生成的第二拥塞权重可以更贴近网络拥塞情况,然后根据第一拥塞权重和第二拥塞权重,可以更准确地调整出第二拥塞窗口,采用本申请,不仅可以充分利用第一节点和第二节点的资源,还可以解决各节点之间的网络拥塞问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种基于区块链的数据同步的场景示意图;
图3是本申请实施例提供的一种拥塞窗口变化示意图;
图4是本申请实施例提供的一种基于区块链的数据同步方法的流程示意图;
图5是本申请实施例提供的一种基于区块链的数据同步的场景示意图;
图6是本申请实施例提供的一种基于区块链的数据同步方法的流程示意图;
图7是本申请实施例提供的一种基于区块链的数据同步的场景示意图;
图8是本申请实施例提供的一种基于区块链的数据同步装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,随着网络技术的快速发展以及各大企业对交易数据安全的重视,区块链得到了学术界和商业界的极大青睐和应用;对于一个有公信力的区块链而言,由于区块链管理中心设置的原始核心共识节点是有限的,其资源空间是有限的,所以在某段时间内,若对区块链中的某一资源的需求超过了该资源所能提供的可用部分,网络就会发生拥塞,这种情况类似微博热门事件导致微博瘫痪或者高考后全国考生查分致使查分系统瘫痪,区块链网络拥塞是由许多因素引起的,归根结底是因为整个系统的各个部分不匹配,所以简单的提高节点处理机的速度或者扩大节点缓存的存储空间并不能解决网络拥塞问题,只有各个部分平衡了,问题才会得到解决。
为了便于理解本申请中提到的区块链、区块、节点,首先对区块链、区块、节点做个简单介绍。
1、区块链:是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个去中心化的数据库,是一串使用密码学方法产生相关联的数据块,每一个数据块中包含了一批次网络交易的数据,用于验证其数据的有效性(防伪)和生成下一个区块。
2、区块:区块链由多个区块组成,创始块(即第一区块)中包括区块头和区块主体,区块头中存储有输入数据特征值、版本号、时间戳和难度值,区块主体中存储有输入数据;创始块的下一区块(即第二区块)以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入数据特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入数据的安全性,新区块一旦加入到区块链中就不会再被移除或被篡改。
3、节点:区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为核心节点,数据节点以及轻节点,其中核心节点负责区块链全网的共识,请参见图1,是本申请实施例提供的一种系统架构示意图。如图1所示,业务服务器20为核心节点,其功能是将由服务器集群30(包括业务服务器30a、业务服务器30b、…、业务服务器30c)发送的业务数据(即交易数据)打包进区块,然后共识写入账本,以业务服务器30a为例,其具体过程可以为:核心节点(即业务服务器20)在接收到业务服务器30a发送的交易数据时,对交易数据进行校验,完成校验后,核心节点将交易数据存储至内存池中,并更新其用于记录输入数据的哈希树;之后,将更新时间戳更新为接收到交易数据的时间,并尝试不同的随机数进行特征值计算,当得到特征值时,便可将交易数据对应存储,生成区块头和区块主体,得到新生成的区块;随后,核心节点根据区块链网络中其他核心节点的节点标识,将上述新生成的区块分别发送给其所在的区块链网络中的其他核心节点,由其他核心节点对新生成的区块进行校验,并在完成校验后将上述新生成的区块添加至其存储的区块链中。其中,区块链网络中的每个核心节点,均具有与其对应的节点标识,而且区块链网络中的每个核心节点均可以存储有区块链网络中其他核心节点的节点标识,以便后续根据其他核心节点的节点标识,将生成的区块广播至区块链网络中的其他核心节点,使得区块链网络中全部核心节点上存储的交易数据均一致。
如图1所示,服务器集群10(包括业务服务器10a、业务服务器10b、…、业务服务器10c)为数据节点集群,数据节点集群负责同步核心节点的账本信息,当一个新的数据节点加入服务器集群10中,且启动该新的数据节点时,由于新的数据节点的本地账本数据为空,需要向核心节点同步区块,即同步核心节点的区块数据,以业务服务器10a为新的数据节点为例,其具体过程可以为:业务服务器10a根据网络的拥塞程度以及自身处理区块的拥塞程度,先设置一个拥塞窗口初始值(拥塞窗口初始值一般较小,如果拥塞窗口初始值过大,可能会导致业务服务器10a以及核心节点之间的网络拥塞),将上述拥塞窗口初始值发送至核心节点,核心节点根据拥塞窗口初始值,将所属的区块链中的区块按区块高度以小至大的顺序返回同步区块(同步区块数量与拥塞窗口初始值相同),业务服务器10a再根据从核心节点收到同步区块的速度以及业务服务器10a自身处理同步区块的速度,调整拥塞窗口的大小(即第二次区块同步请求所请求的同步区块数量);业务服务器10a按照上述过程循环地从核心节点中同步区块,在整个同步过程中,由于业务服务器10a可以不断地调整拥塞窗口的大小,所以可以充分利用核心节点以及业务服务器10a的资源,且可以解决各节点之间的网络拥塞问题。
区块链网络中的轻节点负责从数据节点集群中同步与业务相关的区块数据,且轻节点从数据节点集群中同步区块的过程,与新的数据节点从核心节点中同步区块的过程一致,故在此不再进行赘述。
请再参见图1,当服务器集群30需要从区块链中获取某一数据时,不仅可以从核心节点上获取该数据资源,还可以从数据节点集群上获取该数据资源,这样不仅充分利用了核心节点以及数据节点集群的资源,而且能平衡核心节点以及数据节点集群之间的业务需求,极大地缓解了区块链的网络拥塞。
需要注意的是,在本申请中,区块链网络中各节点之间的数据传输可以通过通信连接方式(例如有线通信网连接或者无线通信网连接)来实现。
其中,服务器集群30、业务服务器20(核心节点)以及服务器集群10(数据节点集群)可以为计算机设备,包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
进一步地,请参见图2,是本申请实施例提供的一种基于区块链的数据同步的场景示意图。如图2所示,数据节点10发送区块同步请求至核心节点20,其中,上述区块同步请求携带最大同步区块高度20a以及第一拥塞窗口20c,第一拥塞窗口20c用于确定本次区块同步请求所请求的同步区块数量,上述最大同步区块高度20a是指数据节点10已接收和同步的区块中的最大区块高度。核心节点20接收到区块同步请求后,首先根据最大同步区块高度20a从自身所属的区块链中获取起始同步区块高度20b,上述最大同步区块高度20a所对应的同步区块为上述起始同步区块高度20b所对应的同步区块的前继区块,然后结合第一拥塞窗口20c确定本次同步区块集合20d,同步区块集合20d中的区块数量为第一拥塞窗口20c所请求的同步区块数量,核心节点将同步区块集合20d返回至数据节点10;数据节点10根据从核心节点20返回同步区块集合20d的传输速度以及自身处理同步区块集合20d的处理速度,对第一拥塞窗口20c进行调整,确定第二拥塞窗口20e,第二拥塞窗口20e用于确定下一个区块同步请求的请求同步区块数量,相当于下一个区块同步请求的第一拥塞窗口。
根据区块传输速度(核心节点传输同步区块至数据节点的速度)以及区块处理速度(数据节点处理同步区块的速度),对第一拥塞窗口对应的同步区块数量进行调整的具体过程,请参见图3,是本申请实施例提供的一种拥塞窗口变化示意图。如图3所示,横坐标代表区块同步请求次数,纵坐标代表拥塞窗口的大小或者拥塞窗口对应的同步区块数量,随着区块同步请求次数的增长,数据节点发送至核心节点的拥塞窗口不是单一类型的增长处理,而是不断发生多种类型的增长变化。首先设置拥塞窗口初始值、拥塞窗口阈值、指数增长处理中的常数、线性递增处理中的常数、拥塞初始权重以及发生网络拥塞时拥塞窗口阈值的缩减比例等系数,在本申请中以以下参数(如表1所示)示例说明上述各系数与本申请提供的拥塞窗口的关系,以及拥塞窗口的大小随着区块同步请求次数增长的具体变化。
表1
拥塞窗口初始值 1
拥塞窗口初始阈值 16
指数增长处理中的常数 2
线性递增处理中的常数 1
拥塞初始权重 51
拥塞窗口阈值的缩减比例 0.5
为了便于叙述和理解,将第X次区块同步请求称为区块同步请求X,例如将第1次区块同步请求称为区块同步请求1,第14次区块同步请求称为区块同步请求14。将区块同步请求X所对应的拥塞窗口称为拥塞窗口X,例如将区块同步请求1所对应的拥塞窗口称为拥塞窗口1。将区块同步请求X完成时所生成的拥塞权重称为拥塞权重X+1,例如,将区块同步请求1完成时生成的第二拥塞权重称为拥塞权重2。将区块同步请求X完成时所确定的拥塞窗口称为拥塞窗口X+1,例如,将区块同步请求1完成时确定的第二拥塞窗口称为拥塞窗口2。其中,X表示图3中横坐标上的区块同步请求次数。
表1中的拥塞窗口初始值即图3中区块同步请求1所对应的拥塞窗口大小以及区块同步请求14所对应的拥塞窗口大小,其中,区块同步请求1表示图3中横坐标上的“1”(即数据节点第一次发送区块同步请求至核心节点),区块同步请求14表示图3中横坐标上的“14”(即数据节点第十四次发送区块同步请求至核心节点);之所以区块同步请求1所对应的拥塞窗口大小为“1”,是因为当数据节点第一次发起区块同步请求的时候,数据节点并不知道当前的网络状况和自己的处理能力,所以若拥塞窗口初始值(拥塞窗口对应的同步区块数量)过大,且当前的网络状态并不好,则可能会导致数据节点以及核心节点之间发生网络拥塞,且致使核心节点忙于处理区块同步请求而没有更多资源去同步记账,因此,为了降低第一次发起区块同步请求就发生网络拥塞的概率,所以将第一次发起区块同步请求时的拥塞窗口初始值设置得尽量小。区块同步请求14对应的拥塞窗口14大小为“1”,是因为在区块同步请求13中发生了网络拥塞,所以将区块同步请求14对应的拥塞窗口14进行初始化,即恢复为拥塞窗口初始值。
拥塞窗口的增大或增大后初始化(即缩减为拥塞窗口初始值)是根据拥塞权重确定的,拥塞权重是根据数据节点从核心节点收到同步区块的实际速度(即区块传输速度),以及数据节点处理该同步区块的有效区块速度(即区块处理速度)确定的。在本申请中,假设网络默认的区块初始传输速度为50MB/s(即核心节点在1秒内传输同步区块至数据节点的速度为50MB),区块初始处理速度为1区块/s(即数据节点在1秒内处理1个同步区块),拥塞初始权重为区块初始传输速度和区块初始处理速度的和(此处是指两个速度的数值进行相加,不考虑单位),所以拥塞初始权重可以为51,为了便于叙述和理解,将拥塞初始权重称为第一拥塞权重。当数据节点与核心节点之间完成第1次区块同步请求时,数据节点根据本次传输同步区块的区块传输速度、区块处理速度以及区块初始传输速度和区块初始处理速度,算出第二拥塞权重(拥塞权重2),然后根据第二拥塞权重和上述第一拥塞权重对第一拥塞窗口(即拥塞初始窗口)进行调整,确定第二拥塞窗口(拥塞窗口2)的大小,第二拥塞窗口用于确定下一次区块同步请求(即第2次区块同步请求)的同步区块数量,相当于区块同步请求2的第一拥塞窗口;当区块同步请求次数逐渐增大,为了更加贴近网络拥塞情况,计算拥塞权重时所采用的参数可以包括数据节点从核心节点收到同步区块的最近几次实际速度speed,以及数据节点自身处理同步区块的最近几次有效区块速度rate,例如将次数设置为5,则当第5次区块同步请求完成时,是根据前面4次区块同步请求(区块同步请求1至区块同步请求4)所采集到的4个区块传输速度以及4个区块处理速度,以及本次区块同步请求(即区块同步请求5)的区块传输速度以及区块处理速度,计算区块同步请求5完成时所对应的拥塞权重6,如公式(1)所示。
Weight=(speed1+speed2+speed3+speed4+speed5)/5+(rate1+rate2+rate3+rate4+rate5)/5 (1)
其中,若Weight为区块同步请求5完成时所生成的拥塞权重6,则speed1为区块同步请求1完成时所采集的区块传输速度,rate1为区块同步请求1完成时所采集的区块处理速度;speed2为区块同步请求2完成时所采集的区块传输速度,rate2为区块同步请求2完成时所采集的区块处理速度;speed3为区块同步请求3完成时所采集的区块传输速度,rate3为区块同步请求3完成时所采集的区块处理速度;speed4为区块同步请求4完成时所采集的区块传输速度,rate4为区块同步请求4完成时所采集的区块处理速度;speed5为区块同步请求5完成时所采集的区块传输速度,rate5为区块同步请求5完成时所采集的区块处理速度。
以区块同步请求1为例进行说明,当数据节点将从核心节点返回的同步区块(此处的同步区块数量为拥塞窗口1的大小)处理完成时,数据节点根据本次传输同步区块的区块传输速度、区块处理速度以及区块初始传输速度和区块初始处理速度,计算出第二拥塞权重,若第二拥塞权重大于拥塞权重阈值(此处的拥塞权重阈值为第一拥塞权重的倍数),表明本次区块同步请求的区块传输速度快或者区块处理速度快,网络拥塞情况良好,所以数据节点可以增加同步区块数量,即数据节点发送至核心节点的区块同步请求2中的拥塞窗口可以变大,且拥塞窗口1(拥塞窗口初始值为1)小于拥塞窗口初始阈值(即表1中的拥塞窗口初始阈值16),如图3所示,所以对拥塞窗口1进行指数增长处理,请再参见表1,本申请示例的指数增长处理中的常数为2,则拥塞窗口2为21,即2。请再参见图3,区块同步请求2、区块同步请求3以及区块同步请求4完成时,亦是对对应的拥塞窗口的大小进行指数增长处理,所以区块同步请求2完成时,确定拥塞窗口3所对应的同步区块数量为4,区块同步请求3完成时,确定拥塞窗口4所对应的同步区块数量为8,区块同步请求4完成时,确定拥塞窗口5所对应的同步区块数量为16。通过对上述区块同步请求的拥塞窗口进行指数增长处理,逐步增大下一次区块同步请求的拥塞窗口,可以实现对网络资源的充分利用,且可以高效地同步核心节点中的区块数据。
请再参见图3,区块同步请求5所对应的拥塞窗口5的大小为16,当区块同步请求5完成时,数据节点根据前面4次区块同步请求的4个区块传输速度以及4个区块处理速度、本次区块同步请求(即区块同步请求5)的区块传输速度以及区块处理速度计算拥塞权重6,若拥塞权重6大于拥塞权重阈值(此处的拥塞权重阈值为拥塞权重5的倍数)且拥塞窗口5小于拥塞窗口初始阈值,则依然对拥塞窗口5进行指数增长处理,而实际上是拥塞权重6大于拥塞权重阈值,但拥塞窗口5等于拥塞窗口初始阈值,所以拥塞窗口5对应的同步区块数量不再进行指数增长处理,而是进行线性递增处理,得到拥塞窗口6对应的同步区块数量为16+1(请再参见表1,本申请示例的线性递增处理中的常数为1),即17。请再参见图3,区块同步请求6至区块同步请求12完成时,亦是对对应的拥塞窗口的大小进行线性递增处理,所以区块同步请求6完成时,确定拥塞窗口7所对应的同步区块数量为18,区块同步请求7完成时,确定拥塞窗口8所对应的同步区块数量为19,区块同步请求8完成时,确定拥塞窗口9所对应的同步区块数量为20,区块同步请求9完成时,确定拥塞窗口10所对应的同步区块数量为21,区块同步请求10完成时,确定拥塞窗口11所对应的同步区块数量为22,区块同步请求11完成时,确定拥塞窗口12所对应的同步区块数量为23,区块同步请求12完成时,确定拥塞窗口13所对应的同步区块数量为24。通过对上述区块同步请求的拥塞窗口进行线性递增处理,缓慢增大下一次区块同步请求的拥塞窗口,可以防止拥塞窗口增长过大引起网络拥塞或者阻塞数据节点自身处理同步区块。
上述的两种情况是发生在区块同步请求完成时,检测到所生成的拥塞权重大于拥塞权重阈值。假如网络发生拥塞,例如核心节点没有按时将同步区块返回至数据节点,或者数据节点自身处理同步区块速度过慢,则导致上述生成的拥塞权重会小于或等于拥塞权重阈值,所以区块同步请求所对应的拥塞窗口不再是进行指数增长处理或者线性递增处理,而是对区块同步请求所对应的拥塞窗口进行初始化,即下一次区块同步请求所对应的拥塞窗口大小为拥塞窗口初始值,这种情况例如图3中在区块同步请求13完成时,数据节点根据区块同步请求13所对应的区块传输速度、区块处理速度、前面4个区块传输速度以及前面4个区块处理速度(即区块同步请求9至区块同步请求12分别对应的区块传输速度以及区块处理速度)确定拥塞权重14,此时,拥塞权重14小于或等于拥塞权重阈值(此处的拥塞权重阈值为拥塞权重13的倍数),所以拥塞窗口13对应的同步区块数量不再进行指数增长处理或者线性递增处理,而是对拥塞窗口13对应的同步区块数量进行初始化,确定拥塞窗口14的大小为1,即下一次同步区块数量为1,并且拥塞窗口阈值也发生变化,区块同步请求13对应的拥塞窗口13大小为24,请再参见表1,本申请示例的拥塞窗口阈值的缩减比例为0.5,所以新的拥塞窗口阈值为24*0.5,即12。当后面的区块同步请求完成时,例如区块同步请求14,其生成的拥塞权重15大于拥塞权重阈值(此处的拥塞权重阈值为拥塞权重14的倍数)时,所对应的拥塞窗口14不再与拥塞窗口初始阈值16进行比较,而是与新的拥塞窗口阈值12进行比较。
当网络拥塞时或者数据节点自身处理区块出现拥塞时,数据节点对发送至核心节点的拥塞窗口进行初始化,即下一个拥塞窗口的大小为拥塞窗口初始值,这有利于缓解网络拥塞,让数据节点有足够的时间把积压的同步区块处理完。
进一步地,请参见图4,是本申请实施例提供的一种基于区块链的数据同步方法的流程示意图。本实施例中提及的第一拥塞窗口以及第二拥塞窗口可以是上述图3中任意两次相邻的区块同步请求所对应的拥塞窗口,且本次区块同步请求所确定的第二拥塞权重为下一次区块同步请求中的第一拥塞权重,如图4所示,上述方法可以包括:
步骤S101,第一节点发送区块同步请求至第二节点;区块同步请求包含第一拥塞窗口,第一拥塞窗口用于确定所请求的同步区块数量。
具体的,请一并参见图2,如图2所示,在本申请实施例中,将数据节点10称为第一节点,将核心节点20称为第二节点,即第一节点发送区块同步请求至第二节点,上述区块同步请求包含第一拥塞窗口20c,用于确定本次请求的同步区块数量。
步骤S102,获取第二节点根据第一拥塞窗口返回的同步区块,根据与同步区块相关联的区块同步行为,获取同步行为参数。
具体的,上述区块同步行为包括区块同步传输行为和区块同步处理行为,根据与上述同步区块相关联的上述区块同步传输行为以及传输时间,确定区块传输速度;上述区块同步传输行为是上述第二节点在上述传输时间内传输上述同步区块至上述第一节点的行为;根据与上述同步区块相关联的上述区块同步处理行为以及处理时间,确定区块处理速度;上述区块同步处理行为是上述第一节点在上述处理时间内处理上述同步区块的行为;将上述区块传输速度和上述区块处理速度确定为上述同步行为参数。
请参见图2和图5,图5是本申请实施例提供的一种基于区块链的数据同步的场景示意图。如图2所示,第二节点接收第一节点发送的区块同步请求,上述区块同步请求包含第一拥塞窗口20c,以及第一节点已同步的最大同步区块高度20a,上述最大同步区块高度20a是指区块同步历史行为中已同步区块中的最大区块高度,上述区块同步历史行为是第一节点发送历史区块同步请求至第二节点时,第二节点返回历史同步区块集合(如图5中的历史同步区块集合102d)所发生的区块同步传输行为,以及第一节点自身处理上述历史同步区块集合所发生的区块同步处理行为;第二节点可以通过如下方式确定本轮次区块同步请求的待发送的同步区块,首先,获取区块同步请求中的最大同步区块高度20a,然后获取所属的区块链中的相对应的区块高度20a,若所属的区块链中没有比区块高度20a(即最大同步区块高度20a)大的区块高度,表明区块同步请求中的最大同步区块高度20a即为第二节点所属的区块链中的最大区块,第二节点则返回空同步区块至第一节点,根据与上述空同步区块相关联的区块同步传输行为以及传输时间,确定区块传输速度为0,上述区块同步传输行为是上述第二节点在上述传输时间内传输上述空同步区块至上述第一节点的行为;如图5所示,第一节点接收到第二节点返回的空同步区块,根据与上述空同步区块相关联的区块同步处理行为以及处理时间,确定区块处理速度为0,上述区块同步处理行为是上述第一节点10在上述处理时间内处理上述空同步区块的行为,将上述区块传输速度和上述区块处理速度确定为同步行为参数,则同步行为参数为0,在这种情况下,第一节点可以暂停发送区块同步请求至第二节点,第一节点可以通过心跳机制以在后续再次向第二节点发送携带拥塞窗口初始值的区块同步请求。若所属的区块链中有比区块高度20a(即最大同步区块高度20a)大的区块高度,则确定起始同步区块高度20b,如图2所示,上述最大同步区块高度20a所对应的同步区块为上述起始同步区块高度20b所对应的同步区块的前继区块;然后根据第一拥塞窗口20c确定本次所请求的同步区块数量,假如第一拥塞窗口对应的同步区块数量为4,第二节点将返回包括起始同步区块高度20b对应的区块的4个同步区块,如图2中的同步区块集合20d,然后根据与上述同步区块集合20d相关联的上述区块同步传输行为以及传输时间,第一节点确定区块传输速度s,根据与上述同步区块集合20d相关联的上述区块同步处理行为以及处理时间,第一节点确定区块处理速度v,根据上述区块传输速度s和上述区块处理速度v确定同步行为参数。假设第二节点返回4个同步区块的传输时间是0.1秒,且4个同步区块的容量大小为4MB,则区块传输速度为4/0.1=40;假设第一节点处理上述4个同步区块的处理时间为2秒,则区块处理速度为4/2=2。
假如第二节点所属的区块链中有比最大同步区块高度20a大的区块高度20b,但第一拥塞窗口所对应的同步区块数量大于第二节点所属的区块链中未同步的区块数量,假设第一拥塞窗口所对应的同步区块数量为4,第二节点20所属的区块链中未同步的区块为3,则可以将未同步的3个区块返回至第一节点。
步骤S103,根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;第一拥塞权重是通过区块同步历史行为对应的历史同步行为参数所确定的。
具体的,获取与上述第一拥塞权重相关联的上述历史同步行为参数中的待替换参数;上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数;将上述待替换参数替换为上述同步行为参数,得到替换后的历史同步行为参数;上述替换后的历史同步行为参数包括替换后的区块传输速度集合和替换后的区块处理速度集合;根据上述替换后的区块传输速度集合,确定第二传输权重;根据上述替换后的区块处理速度集合,确定第二处理权重;根据上述第二传输权重和上述第二处理权重,生成上述第二拥塞权重。
当一个新的数据节点10(第一节点)启动后,由于本地账本数据为空,需要向核心节点20(第二节点)同步区块,网络会设置一个默认的区块初始传输速度和一个默认的区块初始处理速度,因为此时第一节点和第二节点并无交互,没有产生步骤S102中上述的区块同步传输行为和上述的区块同步处理行为,无法确定区块传输速度和区块处理速度,所以拥塞初始权重为区块初始传输速度和区块初始处理速度的和,假设网络设置区块初始传输速度为50MB/s,区块初始处理速度为1区块/s,所以拥塞初始权重(第一拥塞权重)为51,当第一节点发送第一拥塞窗口(此处的第一拥塞窗口为网络设置的拥塞窗口初始值)至第二节点时,第二节点根据第一拥塞窗口返回同步区块至第一节点,则会发生区块同步传输行为以及区块同步处理行为,进而可以确定区块传输速度s和区块处理速度v,第一节点根据本次传输同步区块的区块传输速度s和区块处理速度v,算出第二拥塞权重,然后根据第二拥塞权重和上述第一拥塞权重确定下一次区块同步请求中的第二拥塞窗口所对应的同步区块数量。一个新的数据节点10(第一节点)的同步区块的具体情况请参见上述图2所对应的实施例,此处不再进行赘述。
请一并参见图5,本实施例主要描述当第一节点发送区块同步请求的次数逐渐增大时的情况,为了更加贴近网络拥塞情况,第二拥塞权重的确定不仅仅考虑区块同步行为(包括区块同步传输行为和区块同步处理行为),还考虑与第一拥塞权重相关联的区块同步历史行为(包括区块同步历史传输行为和区块同步历史处理行为),例如以5为参考次数,在本申请中第一拥塞权重根据最近5次区块同步传输行为分别对应的5个区块传输速度,以及最近5次区块同步处理行为分别对应的5个区块处理速度确定,第二拥塞权重根据本次区块同步传输行为所对应的区块传输速度、本次区块同步处理行为所对应的区块处理速度、最近4次区块同步传输行为分别对应的4个区块传输速度,以及最近4次区块同步处理行为分别对应的4个区块处理速度确定,具体过程为:首先获取与第一拥塞权重相关联的5个历史同步行为参数(包括历史区块传输速度和历史区块处理速度),如图5中所示的历史同步区块集合(也包括历史同步区块集合101d、历史同步区块集合102d、…、历史同步区块集合105d,其中历史同步区块101d集合至历史同步区块集合105d为最近5次历史同步区块集合)所对应的5个历史同步行为参数,为了便于理解和叙述,假设本次区块同步请求是第25次区块同步请求,最近5个历史区块传输速度和区块传输速度的值,如表2所示。
表2
n S<sub>n</sub> T<sub>n</sub>
20 20 2019年10月7日11时00分00秒
21 35 2019年10月7日11时00分10秒
22 25 2019年10月7日11时00分18秒
23 45 2019年10月7日11时00分27秒
24 30 2019年10月7日11时00分36秒
25 35 2019年10月7日11时00分44秒
其中,n表示区块同步请求次数,Sn表示区块同步请求n所对应的区块传输速度,Tn表示记录区块同步请求n所对应的区块传输速度的时间戳,再请参见图5,则在2019年10月7日11时00分00秒,第一节点确定第二节点传输历史同步区块集合101d的速度为1秒内传输20MB;在2019年10月7日11时00分10秒,确定第二节点传输历史同步区块集合102d的速度为1秒内传输35MB;在2019年10月7日11时00分18秒,第一节点确定第二节点传输历史同步区块集合103d的速度为1秒内传输MB;在2019年10月7日11时00分27秒,确定第二节点传输历史同步区块集合104d的速度为1秒内传输45MB;在2019年10月7日11时00分36秒,确定第二节点传输历史同步区块集合105d的速度为1秒内传输30MB;在2019年10月7日11时00分44秒,第一节点10确定第二节点传输同步区块集合20d的速度为1秒内传输35MB。
最近5个历史区块处理速度和区块处理速度的值,如表3所示。
表3
n V<sub>n</sub> T<sup>*</sup><sub>n</sub>
20 4 2019年10月7日11时00分06秒
21 6 2019年10月7日11时00分16秒
22 4 2019年10月7日11时00分25秒
23 7 2019年10月7日11时00分34秒
24 6 2019年10月7日11时00分42秒
25 6 2019年10月7日11时00分51秒
其中,n表示区块同步请求次数,Vn表示区块同步请求n所对应的区块处理速度,T* n表示记录区块同步请求n所对应的区块处理速度的时间戳,再请参见图5,则在2019年10月7日11时00分06秒,第一节点确定自身处理历史同步区块集合101d的速度为1秒内处理4个同步区块;在2019年10月7日11时00分16秒,确定自身处理历史同步区块集合102d的速度为1秒内处理6个同步区块;在2019年10月7日11时00分25秒,确定自身节点处理历史同步区块集合103d的速度为1秒内侧链4个同步区块;在2019年10月7日11时00分34秒,确定自身节点处理历史同步区块集合104d的速度为1秒内处理7个同步区块;在2019年10月7日11时00分42秒,确定自身节点处理历史同步区块集合105d的速度为1秒内处理6个同步区块;在2019年10月7日11时00分51秒,第一节点确定自身节点处理同步区块集合20d的速度为1秒内处理6个同步区块。
综上可知,第一拥塞权重W1等于:
Figure BDA0002336149030000201
根据获取历史同步行为参数的时间戳,将最新的同步行为参数替换掉待替换参数,得到替换后的历史同步行为参数,上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数,然后根据替换后的历史同步行为参数,确定第二拥塞权重W2,可知,第二拥塞权重W2等于:
Figure BDA0002336149030000211
其中,上述表2以及表3中的数字只是示例,不具有唯一性。
步骤S104,根据第二拥塞权重和第一拥塞权重对第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
具体的,若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口;上述拥塞权重阈值是根据上述第一拥塞权重所生成。
上述情况又分为以下两种:1)若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口小于拥塞窗口阈值,将区块同步历史请求以及上述区块同步请求均确定为待检测请求,从上述待检测请求中获取时间连续且包含上述区块同步请求的有效请求集合;上述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;将上述有效请求集合中的有效请求的数量作为请求指数,根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;上述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;若上述预估同步区块数量小于或等于上述拥塞窗口阈值,则确定上述预估同步区块数量为上述第二拥塞窗口所请求的同步区块数量;若上述预估同步区块数量大于上述拥塞窗口阈值,则确定上述拥塞窗口阈值为上述第二拥塞窗口所请求的同步区块数量。2)若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口大于或等于上述拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到上述第二拥塞窗口。
若上述第二拥塞权重小于上述拥塞权重阈值,则根据上述第一拥塞窗口对应的同步区块数量和缩减比例,更新上述拥塞窗口阈值,对上述第一拥塞窗口对应的同步区块数量进行初始化处理,得到上述第二拥塞窗口。
请一并参见图3和图5,首先根据第一拥塞权重确定拥塞权重阈值,需要注意拥塞权重阈值不是常数,是随着不同区块同步请求的第一拥塞权重发生变化,但拥塞权重阈值为上述第一拥塞权重的倍数,,例如Wp=0.8W1,其中,Wp代表拥塞权重阈值,W1代表第一拥塞权重。
然后将第二拥塞权重与拥塞权重阈值进行对比,若第二拥塞权重大于拥塞权重阈值,则对第一拥塞窗口对应的同步区块数量进行增长处理,此时又分为以下两种情况,如图3所示,若本次区块同步请求为区块同步请求15,第二拥塞权重(等同于图3实施例中的拥塞权重16)大于拥塞权重阈值,且第一拥塞窗口(为2)小于拥塞窗口阈值(为12),则对第一拥塞窗口对应的同步区块数量进行指数增长处理,由图3可知,区块同步请求14以及区块同步请求15均为有效请求,故确定预估同步区块数量为22=4,很明显预估同步区块数量小于拥塞窗口阈值,所以确定上述预估同步区块数量为第二拥塞窗口(等同于图3实施例中的拥塞窗口16)所请求的同步区块数量,即区块同步请求16对应的第一拥塞窗口大小为4。
如图3所示,若本次区块同步请求为区块同步请求17,第二拥塞权重(等同于图3实施例中的拥塞权重18)大于拥塞权重阈值,且第一拥塞窗口(为8)小于拥塞窗口阈值(为12),还是对第一拥塞窗口对应的同步区块数量进行指数增长处理,由图3可知,区块同步请求14、区块同步请求15、区块同步请求16以及区块同步请求17均为有效请求,故确定预估同步区块数量为24=16,很明显预估同步区块数量大于拥塞窗口阈值,所以确定拥塞窗口阈值为第二拥塞窗口(等同于图3实施例中的拥塞窗口18)所请求的同步区块数量,即区块同步请求18对应的第一拥塞窗口大小为12。
可选的,上述预估同步区块数量大于拥塞窗口阈值,依然令上述预估同步区块数量为第二拥塞窗口所请求的同步区块数量,即区块同步请求18对应的第一拥塞窗口大小为16。
如图3所示,若本次区块同步请求为区块同步请求18,第二拥塞权重(等同于图3实施例中的拥塞权重19)大于拥塞权重阈值,且第一拥塞窗口(为12)等于拥塞窗口阈值(为12),则对第一拥塞窗口对应的同步区块数量进行线性递增处理,使得第二拥塞窗口(等同于图3实施例中的拥塞窗口19)对应的同步区块数量为加1,所以区块同步请求19对应的第一拥塞窗口大小为13。
上述的4中情况均为第二拥塞权重大于拥塞权重阈值,若第二拥塞权重小于拥塞权重阈值,如图3所示,若本次区块同步请求为区块同步请求13,第二拥塞权重小于拥塞权重阈值,则对第一拥塞窗口对应的同步区块数量进行初始化,使得第二拥塞窗口(等同于图3实施例中的拥塞窗口14)对应的同步区块数量为初始值(本申请以1为示例),所以区块同步请求14对应的第一拥塞窗口大小为1。
本申请实施例中的第一节点通过发送包含第一拥塞窗口的区块同步请求至第二节点,可以获取第二节点所属的区块链中的区块(即同步区块),上述第一拥塞窗口用于确定所请求的同步区块数量;根据与同步区块相关联的区块同步行为(包括第二节点传输上述同步区块至第一节点的行为以及第一节点处理上述同步区块的行为),获取同步行为参数(包括区块传输速度和区块处理速度);根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,根据第二拥塞权重和第一拥塞权重,对第一拥塞窗口对应的同步区块数量进行调整,确定第二拥塞窗口,第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。上述可知,本申请通过对历史同步行为参数和同步行为参数的综合考虑,生成的第二拥塞权重可以更贴近网络拥塞情况,然后根据第一拥塞权重和第二拥塞权重,循环地对第一拥塞窗口进行调整,生成第二拥塞窗口,采用本申请,不仅可以充分利用第一节点和第二节点的资源,还可以解决各节点之间的网络拥塞问题。
进一步地,请参见图6,是本申请实施例提供的一种基于区块链的数据同步方法的流程示意图。如图6所示,上述方法可以包括:
步骤S201,根据最大同步区块高度,确定第二节点待发送的起始同步区块高度;最大同步区块高度是指区块同步历史行为中已同步区块中的最大区块高度。
具体的,请一并参见图7,是本申请实施例提供的一种基于区块链的数据同步的场景示意图。如图7所示,第一节点10首先从已同步区块集合10d中获取最大同步区块高度10a,则根据最大同步区块高度10a,确定第二节点20待发送的起始同步区块高度20a;其中,最大同步区块高度10a对应的区块为起始同步区块高度20a对应的区块的前继区块。
步骤S202,根据所述起始同步区块高度以及所述第一拥塞窗口,生成所述区块同步请求。
具体的,请一并参见图7,第一节点10发送至第二节点20的上述区块同步请求包含起始同步区块高度20a以及第一拥塞窗口20b。
步骤S203,第一节点发送区块同步请求至第二节点;区块同步请求包含第一拥塞窗口,第一拥塞窗口用于确定所请求的同步区块数量。
步骤S204,获取第二节点根据第一拥塞窗口返回的同步区块,根据与同步区块相关联的区块同步行为,获取同步行为参数。
步骤S205,根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;第一拥塞权重是通过区块同步历史行为对应的历史同步行为参数所确定的。
步骤S206,根据第二拥塞权重和第一拥塞权重对第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
其中,步骤S203-步骤S206的具体实现过程可以参见上述图3所对应实施例中对步骤S101-步骤S104的描述,这里不再进行赘述。
本申请实施例中的第一节点通过发送包含第一拥塞窗口的区块同步请求至第二节点,可以获取第二节点所属的区块链中的区块(即同步区块),上述第一拥塞窗口用于确定所请求的同步区块数量;根据与同步区块相关联的区块同步行为(包括第二节点传输上述同步区块至第一节点的行为以及第一节点处理上述同步区块的行为),获取同步行为参数(包括区块传输速度和区块处理速度);根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,根据第二拥塞权重和第一拥塞权重,对第一拥塞窗口对应的同步区块数量进行调整,确定第二拥塞窗口,第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。上述可知,本申请通过对历史同步行为参数和同步行为参数的综合考虑,生成的第二拥塞权重可以更贴近网络拥塞情况,然后根据第一拥塞权重和第二拥塞权重,循环地对第一拥塞窗口进行调整,生成第二拥塞窗口,采用本申请,不仅可以充分利用第一节点和第二节点的资源,还可以解决各节点之间的网络拥塞问题。
请参见图8,是本申请实施例提供的一种基于区块链的数据同步装置的结构示意图。所述基于区块链的数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据同步装置1可以包括:发送模块11、获取模块12、第一生成模块13以及调整模块14。
发送模块11,用于第一节点发送区块同步请求至第二节点;上述区块同步请求包含第一拥塞窗口,上述第一拥塞窗口用于确定所请求的同步区块数量;
获取模块12,用于获取上述第二节点根据上述第一拥塞窗口返回的同步区块,根据与上述同步区块相关联的区块同步行为,获取同步行为参数;
第一生成模块13,用于根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;上述第一拥塞权重是通过区块同步历史行为对应的上述历史同步行为参数所确定的;
调整模块14,用于根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;上述第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
其中,发送模块11、获取模块12、第一生成模块13以及调整模块14的具体功能实现方式可以参见上述图4对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图8,第一生成模块13可以包括:获取参数单元131、替换参数单元132以及生成权重单元133。
获取参数单元131,用于获取与上述第一拥塞权重相关联的上述历史同步行为参数中的待替换参数;上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数;
替换参数单元132,用于将上述待替换参数替换为上述同步行为参数,得到替换后的历史同步行为参数;
生成权重单元133,用于根据上述替换后的历史同步行为参数,生成上述第二拥塞权重。
其中,获取参数单元131、替换参数单元132以及生成权重单元133的具体功能实现方式可以参见上述图4对应实施例中的步骤S103,这里不再进行赘述。
再请参见图8,生成权重单元133可以包括:确定权重子单元1331以及生成权重子单元1332。
确定权重子单元1331,用于根据上述替换后的区块传输速度集合,确定第二传输权重;
上述确定权重子单元1331,还用于根据上述替换后的区块处理速度集合,确定第二处理权重;
生成权重子单元1332,用于根据上述第二传输权重和上述第二处理权重,生成上述第二拥塞权重。
其中,确定权重子单元1331以及生成权重子单元1332的具体功能实现方式可以参见上述图4对应实施例中的步骤S103,这里不再进行赘述。
再请参见图8,调整模块14,具体用于若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口;上述拥塞权重阈值是根据上述第一拥塞权重所生成。
其中,调整模块14的具体功能实现方式可以参见上述图4对应实施例中的步骤S104,这里不再进行赘述。
再请参见图8,上述调整模块14可以包括:第一处理单元141以及第二处理单元142。
第一处理单元141,用于若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口小于拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口;
第二处理单元142,用于若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口大于或等于上述拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到上述第二拥塞窗口。
其中,第一处理单元141以及第二处理单元142的具体功能实现方式可以参见上述图4对应实施例中的步骤S104,这里不再进行赘述。
再请参见图8,第一处理单元141可以包括:获取集合子单元1411以及更新数量子单元1412。
获取集合子单元1411,用于将区块同步历史请求以及上述区块同步请求均确定为待检测请求,从上述待检测请求中获取时间连续且包含上述区块同步请求的有效请求集合;上述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;
更新数量子单元1412,用于将上述有效请求集合中的有效请求的数量作为请求指数,根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口。
其中,获取集合子单元1411以及更新数量子单元1412的具体功能实现方式可以参见上述图4对应实施例中的步骤S104,这里不再进行赘述。
再请参见图8,更新数量子单元1412可以包括:预估数量子单元14121以及确定窗口子单元14122。
预估数量子单元14121,用于根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;上述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;
确定窗口子单元14122,用于根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口。
其中,上述确定窗口子单元14122,具体用于若上述预估同步区块数量小于或等于上述拥塞窗口阈值,则确定上述预估同步区块数量为上述第二拥塞窗口所请求的同步区块数量;
上述确定窗口子单14122,具体还用于若上述预估同步区块数量大于上述拥塞窗口阈值,则确定上述拥塞窗口阈值为上述第二拥塞窗口所请求的同步区块数量。
其中,预估数量子单元14121以及确定窗口子单元14122的具体功能实现方式可以参见上述图4对应实施例中的步骤S104,这里不再进行赘述。
再请参见图8,上述调整模块14还可以包括:第三处理单元143。
第三处理单元143,用于若上述第二拥塞权重小于上述拥塞权重阈值,则根据上述第一拥塞窗口对应的同步区块数量和缩减比例,更新上述拥塞窗口阈值,对上述第一拥塞窗口对应的同步区块数量进行初始化处理,得到上述第二拥塞窗口。
其中,第三处理单元143的具体功能实现方式可以参见上述图4对应实施例中的步骤S104,这里不再进行赘述。
再请参见图8,获取模块12可以包括:确定速度单元121以及确定参数单元122。
确定速度单元121,用于根据与上述同步区块相关联的上述区块同步传输行为以及传输时间,确定区块传输速度;上述区块同步传输行为是上述第二节点在上述传输时间内传输上述同步区块至上述第一节点的行为;
上述确定速度单元121,还用于根据与上述同步区块相关联的上述区块同步处理行为以及处理时间,确定区块处理速度;上述区块同步处理行为是上述第一节点在上述处理时间内处理上述同步区块的行为;
确定参数单元122,将上述区块传输速度和上述区块处理速度确定为上述同步行为参数。
其中,确定速度单元121以及确定参数单元122的具体功能实现方式可以参见上述图4对应实施例中的步骤S102,这里不再进行赘述。
再请参见图8,上述数据同步装置1还可以包括:确定模块15以及第二生成模块16。
确定模块15,用于根据最大同步区块高度,确定上述第二节点待发送的起始同步区块高度;上述最大同步区块高度是指上述区块同步历史行为中已同步区块中的最大区块高度;
第二生成模块16,用于根据上述起始同步区块高度以及上述第一拥塞窗口,生成上述区块同步请求。
其中,确定模块15以及第二生成模块16的具体功能实现方式可以参见上述图6对应实施例中的步骤S201-步骤S202,这里不再进行赘述。
本申请实施例中的第一节点通过发送包含第一拥塞窗口的区块同步请求至第二节点,可以获取第二节点所属的区块链中的区块(即同步区块),上述第一拥塞窗口用于确定所请求的同步区块数量;根据与同步区块相关联的区块同步行为(包括第二节点传输上述同步区块至第一节点的行为以及第一节点处理上述同步区块的行为),获取同步行为参数(包括区块传输速度和区块处理速度);根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,根据第二拥塞权重和第一拥塞权重,对第一拥塞窗口对应的同步区块数量进行调整,确定第二拥塞窗口,第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。上述可知,本申请通过对历史同步行为参数和同步行为参数的综合考虑,生成的第二拥塞权重可以更贴近网络拥塞情况,然后根据第一拥塞权重和第二拥塞权重,循环地对第一拥塞窗口进行调整,生成第二拥塞窗口,采用本申请,不仅可以充分利用第一节点和第二节点的资源,还可以解决各节点之间的网络拥塞问题。
请参见图9,是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
第一节点发送区块同步请求至第二节点;上述区块同步请求包含第一拥塞窗口,上述第一拥塞窗口用于确定所请求的同步区块数量;
获取上述第二节点根据上述第一拥塞窗口返回的同步区块,根据与上述同步区块相关联的区块同步行为,获取同步行为参数;
根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重;上述第一拥塞权重是通过区块同步历史行为对应的上述历史同步行为参数所确定的;
根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口;上述第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。
在一个实施例中,上述处理器1001在执行根据上述同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重时,具体执行以下步骤:
获取与上述第一拥塞权重相关联的上述历史同步行为参数中的待替换参数;上述待替换参数为上述历史同步行为参数中具有最小参数获取时间戳的参数;
将上述待替换参数替换为上述同步行为参数,得到替换后的历史同步行为参数;
根据上述替换后的历史同步行为参数,生成上述第二拥塞权重。
在一个实施例中,上述替换后的历史同步行为参数包括替换后的区块传输速度集合和替换后的区块处理速度集合;
上述处理器1001在执行根据上述替换后的历史同步行为参数,生成上述第二拥塞权重时,具体执行以下步骤:
根据上述替换后的区块传输速度集合,确定第二传输权重;
根据上述替换后的区块处理速度集合,确定第二处理权重;
根据上述第二传输权重和上述第二处理权重,生成上述第二拥塞权重。
在一个实施例中,上述处理器1001在执行根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口时,具体执行以下步骤:
若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口;上述拥塞权重阈值是根据上述第一拥塞权重所生成。
在一个实施例中,上述处理器1001在执行若上述第二拥塞权重大于拥塞权重阈值,则对上述第一拥塞窗口对应的同步区块数量进行增长处理,得到上述第二拥塞窗口时,具体执行以下步骤:
若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口小于拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口;
若上述第二拥塞权重大于上述拥塞权重阈值,且上述第一拥塞窗口大于或等于上述拥塞窗口阈值,则对上述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到上述第二拥塞窗口。
在一个实施例中,上述处理器1001在执行则对上述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到上述第二拥塞窗口时,具体执行以下步骤:
将区块同步历史请求以及上述区块同步请求均确定为待检测请求,从上述待检测请求中获取时间连续且包含上述区块同步请求的有效请求集合;上述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;
将上述有效请求集合中的有效请求的数量作为请求指数,根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口。
在一个实施例中,上述处理器1001在执行根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到上述第二拥塞窗口时,具体执行以下步骤:
根据上述请求指数对应的同步区块数量更新上述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;上述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;
根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口。
在一个实施例中,上述处理器1001在执行根据上述预估同步区块数量以及上述拥塞窗口阈值,确定上述第二拥塞窗口时,具体执行以下步骤:
若上述预估同步区块数量小于或等于上述拥塞窗口阈值,则确定上述预估同步区块数量为上述第二拥塞窗口所请求的同步区块数量;
若上述预估同步区块数量大于上述拥塞窗口阈值,则确定上述拥塞窗口阈值为上述第二拥塞窗口所请求的同步区块数量。
在一个实施例中,上述处理器1001在执行根据上述第二拥塞权重和上述第一拥塞权重对上述第一拥塞窗口对应的同步区块数量进行调整,得到第二拥塞窗口时,具体还执行以下步骤:
若上述第二拥塞权重小于上述拥塞权重阈值,则根据上述第一拥塞窗口对应的同步区块数量和缩减比例,更新上述拥塞窗口阈值,对上述第一拥塞窗口对应的同步区块数量进行初始化处理,得到上述第二拥塞窗口。
在一个实施例中,上述区块同步行为包括区块同步传输行为和区块同步处理行为;
上述处理器1001在执行根据与上述同步区块相关联的区块同步行为,获取同步行为参数时,具体执行以下步骤:
根据与上述同步区块相关联的上述区块同步传输行为以及传输时间,确定区块传输速度;上述区块同步传输行为是上述第二节点在上述传输时间内传输上述同步区块至上述第一节点的行为;
根据与上述同步区块相关联的上述区块同步处理行为以及处理时间,确定区块处理速度;上述区块同步处理行为是上述第一节点在上述处理时间内处理上述同步区块的行为;
将上述区块传输速度和上述区块处理速度确定为上述同步行为参数。
在一个实施例中,上述处理器1001具体还执行以下步骤:
根据最大同步区块高度,确定上述第二节点待发送的起始同步区块高度;上述最大同步区块高度是指上述区块同步历史行为中已同步区块中的最大区块高度;
根据上述起始同步区块高度以及上述第一拥塞窗口,生成上述区块同步请求。
本申请实施例中的第一节点通过发送包含第一拥塞窗口的区块同步请求至第二节点,可以获取第二节点所属的区块链中的区块(即同步区块),上述第一拥塞窗口用于确定所请求的同步区块数量;根据与同步区块相关联的区块同步行为(包括第二节点传输上述同步区块至第一节点的行为以及第一节点处理上述同步区块的行为),获取同步行为参数(包括区块传输速度和区块处理速度);根据同步行为参数和与第一拥塞权重相关联的历史同步行为参数,生成第二拥塞权重,根据第二拥塞权重和第一拥塞权重,对第一拥塞窗口对应的同步区块数量进行调整,确定第二拥塞窗口,第二拥塞窗口用于确定下一个区块同步请求所请求的同步区块数量。上述可知,本申请通过对历史同步行为参数和同步行为参数的综合考虑,生成的第二拥塞权重可以更贴近网络拥塞情况,然后根据第一拥塞权重和第二拥塞权重,循环地对第一拥塞窗口进行调整,生成第二拥塞窗口,采用本申请,不仅可以充分利用第一节点和第二节点的资源,还可以解决各节点之间的网络拥塞问题。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的基于区块链的数据同步装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图4或图6对应实施例中对上述基于区块链的数据同步方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁盘、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (12)

1.一种基于区块链的数据同步方法,其特征在于,所述方法包括:
第一节点发送区块同步请求至第二节点;所述区块同步请求包含第一拥塞窗口,所述第一拥塞窗口用于确定所请求的同步区块数量;
获取所述第二节点根据所述第一拥塞窗口返回的同步区块,根据与所述同步区块相关联的区块同步行为,获取同步行为参数;
获取与第一拥塞权重相关联的历史同步行为参数中的待替换参数;所述第一拥塞权重是通过区块同步历史行为对应的所述历史同步行为参数所确定的;所述待替换参数为所述历史同步行为参数中具有最小参数获取时间戳的参数;
将所述待替换参数替换为所述同步行为参数,得到替换后的历史同步行为参数,根据所述替换后的历史同步行为参数,生成第二拥塞权重;
若所述第二拥塞权重大于拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行增长处理,得到第二拥塞窗口;所述拥塞权重阈值是根据所述第一拥塞权重所生成;
若所述第二拥塞权重小于或等于所述拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行初始化处理,得到所述第二拥塞窗口。
2.根据权利要求1所述的方法,其特征在于,所述替换后的历史同步行为参数包括替换后的区块传输速度集合和替换后的区块处理速度集合;
所述根据所述替换后的历史同步行为参数,生成第二拥塞权重,包括:
根据所述替换后的区块传输速度集合,确定第二传输权重;
根据所述替换后的区块处理速度集合,确定第二处理权重;
根据所述第二传输权重和所述第二处理权重,生成所述第二拥塞权重。
3.根据权利要求1所述的方法,其特征在于,所述若所述第二拥塞权重大于拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行增长处理,得到第二拥塞窗口,包括:
若所述第二拥塞权重大于所述拥塞权重阈值,且所述第一拥塞窗口小于拥塞窗口阈值,则对所述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到所述第二拥塞窗口;
若所述第二拥塞权重大于所述拥塞权重阈值,且所述第一拥塞窗口大于或等于所述拥塞窗口阈值,则对所述第一拥塞窗口对应的同步区块数量进行线性递增处理,得到所述第二拥塞窗口。
4.根据权利要求3所述的方法,其特征在于,所述则对所述第一拥塞窗口对应的同步区块数量进行指数增长处理,得到所述第二拥塞窗口,包括:
将区块同步历史请求以及所述区块同步请求均确定为待检测请求,从所述待检测请求中获取时间连续且包含所述区块同步请求的有效请求集合;所述有效请求集合中的有效请求分别对应的同步区块数量均为指数增长处理;
将所述有效请求集合中的有效请求的数量作为请求指数,根据所述请求指数对应的同步区块数量更新所述第一拥塞窗口对应的同步区块数量,得到所述第二拥塞窗口。
5.根据权利要求4所述的方法,其特征在于,所述根据所述请求指数对应的同步区块数量更新所述第一拥塞窗口对应的同步区块数量,得到所述第二拥塞窗口,包括:
根据所述请求指数对应的同步区块数量更新所述第一拥塞窗口对应的同步区块数量,得到预估同步区块数量;所述预估同步区块数量为预估下一个区块同步请求所请求的同步区块数量;
根据所述预估同步区块数量以及所述拥塞窗口阈值,确定所述第二拥塞窗口。
6.根据权利要求5所述的方法,其特征在于,所述根据所述预估同步区块数量以及所述拥塞窗口阈值,确定所述第二拥塞窗口,包括:
若所述预估同步区块数量小于或等于所述拥塞窗口阈值,则确定所述预估同步区块数量为所述第二拥塞窗口所请求的同步区块数量;
若所述预估同步区块数量大于所述拥塞窗口阈值,则确定所述拥塞窗口阈值为所述第二拥塞窗口所请求的同步区块数量。
7.根据权利要求1所述的方法,其特征在于,所述若所述第二拥塞权重小于或等于所述拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行初始化处理,得到所述第二拥塞窗口,包括:
若所述第二拥塞权重小于或等于所述拥塞权重阈值,则根据所述第一拥塞窗口对应的同步区块数量和缩减比例,更新拥塞窗口阈值,对所述第一拥塞窗口对应的同步区块数量进行初始化处理,得到所述第二拥塞窗口。
8.根据权利要求1所述的方法,其特征在于,所述区块同步行为包括区块同步传输行为和区块同步处理行为;
所述根据与所述同步区块相关联的区块同步行为,获取同步行为参数,包括:
根据与所述同步区块相关联的所述区块同步传输行为以及传输时间,确定区块传输速度;所述区块同步传输行为是所述第二节点在所述传输时间内传输所述同步区块至所述第一节点的行为;
根据与所述同步区块相关联的所述区块同步处理行为以及处理时间,确定区块处理速度;所述区块同步处理行为是所述第一节点在所述处理时间内处理所述同步区块的行为;
将所述区块传输速度和所述区块处理速度确定为所述同步行为参数。
9.根据权利要求1所述的方法,其特征在于,还包括:
根据最大同步区块高度,确定所述第二节点待发送的起始同步区块高度;所述最大同步区块高度是指所述区块同步历史行为中已同步区块中的最大区块高度;
根据所述起始同步区块高度以及所述第一拥塞窗口,生成所述区块同步请求。
10.一种基于区块链的数据同步装置,其特征在于,所述装置包括:
发送模块,用于第一节点发送区块同步请求至第二节点;所述区块同步请求包含第一拥塞窗口,所述第一拥塞窗口用于确定所请求的同步区块数量;
获取模块,用于获取所述第二节点根据所述第一拥塞窗口返回的同步区块,根据与所述同步区块相关联的区块同步行为,获取同步行为参数;
第一生成模块,用于获取与第一拥塞权重相关联的历史同步行为参数中的待替换参数;所述第一拥塞权重是通过区块同步历史行为对应的所述历史同步行为参数所确定的;所述待替换参数为所述历史同步行为参数中具有最小参数获取时间戳的参数;
所述第一生成模块,还用于将所述待替换参数替换为所述同步行为参数,得到替换后的历史同步行为参数,根据所述替换后的历史同步行为参数,生成第二拥塞权重;
调整模块,用于若所述第二拥塞权重大于拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行增长处理,得到第二拥塞窗口;所述拥塞权重阈值是根据所述第一拥塞权重所生成;
所述调整模块,还用于若所述第二拥塞权重小于或等于所述拥塞权重阈值,则对所述第一拥塞窗口对应的同步区块数量进行初始化处理,得到所述第二拥塞窗口。
11.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1至9中任一项所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至9中任一项所述方法的步骤。
CN201911356799.7A 2019-12-25 2019-12-25 基于区块链的数据同步方法、装置、设备及可读存储介质 Active CN111147392B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911356799.7A CN111147392B (zh) 2019-12-25 2019-12-25 基于区块链的数据同步方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911356799.7A CN111147392B (zh) 2019-12-25 2019-12-25 基于区块链的数据同步方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN111147392A CN111147392A (zh) 2020-05-12
CN111147392B true CN111147392B (zh) 2021-08-24

Family

ID=70519983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911356799.7A Active CN111147392B (zh) 2019-12-25 2019-12-25 基于区块链的数据同步方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111147392B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112565104B (zh) * 2020-12-01 2021-11-05 腾讯科技(深圳)有限公司 区块链系统的流量控制方法、装置、介质及电子设备
CN112287031B (zh) * 2020-12-15 2021-04-23 腾讯科技(深圳)有限公司 区块链系统的数据同步方法、装置、可读介质及电子设备
CN114422526B (zh) * 2021-12-31 2024-03-15 支付宝(杭州)信息技术有限公司 一种区块同步方法、装置、电子设备和存储介质
CN115086065B (zh) * 2022-07-12 2024-01-19 北斗星通智联科技有限责任公司 一种基于区块链的数据同步方法、装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108521328A (zh) * 2018-03-26 2018-09-11 杭州秘猿科技有限公司 一种区块链共识方法、装置及电子设备
CN109412677A (zh) * 2018-11-12 2019-03-01 清华大学 星地协同区块链系统中的通信广播自适应融合方法
CN110365768A (zh) * 2019-07-15 2019-10-22 腾讯科技(深圳)有限公司 分布式系统的数据同步方法、装置、介质、电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562353B2 (en) * 2015-11-24 2023-01-24 Mastercard International Incorporated Method and system for gross settlement by use of an opaque blockchain
US20180286239A1 (en) * 2017-03-31 2018-10-04 Alain Elie Kaloyeros Image data integrator for addressing congestion
US20170285720A1 (en) * 2017-05-07 2017-10-05 Jigar Jayesh Shah Method and system for mitigating transmission congestion via distributed computing and blockchain technology

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108521328A (zh) * 2018-03-26 2018-09-11 杭州秘猿科技有限公司 一种区块链共识方法、装置及电子设备
CN109412677A (zh) * 2018-11-12 2019-03-01 清华大学 星地协同区块链系统中的通信广播自适应融合方法
CN110365768A (zh) * 2019-07-15 2019-10-22 腾讯科技(深圳)有限公司 分布式系统的数据同步方法、装置、介质、电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于BBR的NDN拥塞控制算法;黄俊琳等;《重庆邮电大学学报(自然科学版)》;20180215(第01期);全文 *

Also Published As

Publication number Publication date
CN111147392A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN111147392B (zh) 基于区块链的数据同步方法、装置、设备及可读存储介质
US11824996B2 (en) Parachain data synchronization method, device and storage medium
WO2021052029A1 (zh) 数据对象标识生成方法、装置、计算机设备和存储介质
CN111344706B (zh) 管理区块链上的交易的方法和系统
CN107276765B (zh) 区块链中共识的处理方法及装置
JP2017126975A (ja) データセンターのネットワークトラフィックスケジューリング方法及び装置
CN111756646B (zh) 网络传输控制方法、装置、计算机设备及存储介质
EP4300323A1 (en) Data processing method and apparatus for blockchain network, computer device, computer readable storage medium, and computer program product
CN107197036A (zh) 一种基于区块链的信息一致处理方法及终端
CN104243405A (zh) 一种请求处理方法、装置及系统
US10715387B1 (en) System for dynamic provisioning of host devices
CN108875035B (zh) 分布式文件系统的数据存储方法及相关设备
CN104253868A (zh) 一种云存储数据同步的方法及装置
CN112965974A (zh) 基于区块链的数据共享方法、节点、终端及系统
CN102325367B (zh) 为客户端应用进行数据分组同步的装置和方法
US10810166B2 (en) Reconciliation of data in a distributed system
CN111343212A (zh) 消息处理方法、装置、设备以及存储介质
CN111161072A (zh) 基于区块链的随机数生成方法、设备及存储介质
CN112417052B (zh) 区块链网络中的数据同步方法、装置、设备及存储介质
CN111865576B (zh) 一种同步url分类数据的方法和装置
US10250515B2 (en) Method and device for forwarding data messages
CN114691703A (zh) 数据更新方法、装置、电子设备及存储介质
CN109766363B (zh) 流式数据处理方法、系统、电子设备及存储介质
CN107707383B (zh) 放通处理方法、装置、第一网元及第二网元
CN113744013A (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