CN113342893A - 基于区块链的节点同步方法、装置、存储介质及服务器 - Google Patents
基于区块链的节点同步方法、装置、存储介质及服务器 Download PDFInfo
- Publication number
- CN113342893A CN113342893A CN202110644436.4A CN202110644436A CN113342893A CN 113342893 A CN113342893 A CN 113342893A CN 202110644436 A CN202110644436 A CN 202110644436A CN 113342893 A CN113342893 A CN 113342893A
- Authority
- CN
- China
- Prior art keywords
- node
- storage node
- storage
- block
- slave
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/235—Update request formulation
Abstract
本申请实施例公开了一种基于区块链的节点同步方法、装置、存储介质及服务器。方法包括:控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,待存储区块携带有状态数据,发送节点集群包括主节点以及多个从节点,状态数据用于记录区块的交易状态;控制多个从节点中的每一从节点,从存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,提高了主节点的处理效率。
Description
技术领域
本申请涉及计算机领域,具体涉及一种基于区块链的节点同步方法、装置、存储介质及服务器。
背景技术
近年来,伴随互联网技术的不断发展普及,区块链逐渐被各公司及个人所运用,Hyperledger Fabric是一个许可的区块链构架(permissioned blockchaininfrastructure)。HyperledgerFa Fabric由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性。Hyperledger Fabric被设计成支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景。
现有技术中,HyperledgerFa Fabric区块链架构中存在用于将交易打包成区块并将区块发送给存储节点的交易管理主节点。为了确保交易管理主节点与其他的从节点之间的状态同步,需要主节点在打包过程中要与从节点保持日志复制与日志修复。
发明内容
在对现有技术的研究和实践过程中,本申请的发明人发现,现有技术中,主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,降低了主节点的处理效率。
本申请实施例提供一种基于区块链的节点同步方法、装置、存储介质及服务器,可以提高主节点的处理效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
一种基于区块链的节点同步方法,包括:
控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,所述待存储区块携带有状态数据,所述发送节点集群包括主节点以及多个从节点,所述状态数据用于记录区块的交易状态;
控制所述多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使所述每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
一种基于区块链的节点同步装置,包括:
第一发送模块,用于控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,所述待存储区块携带有状态数据,所述发送节点集群包括主节点以及多个从节点,所述状态数据用于记录区块的交易状态;
第一获取模块,用于控制所述多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使所述每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
在一些实施例中,所述第一获取模块,包括:
设定子模块,用于设定每一从节点获取状态数据的初始获取时间点,每一从节点的获取时间点与其他从节点的获取时间点均不相同;
控制子模块,用于控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据。
在一些实施例中,所述第一获取模块还包括:
比对子模块,用于比对每一从节点在当前获取时间点获取的当前状态数据,以及上一获取时间点获取的历史状态数据,得到比对结果;
第一判断子模块,用于基于所述比对结果判断所述存储节点集群中是否存在异常存储节点;
第一确定子模块,用于若所述存储节点集群中存在异常存储节点,则确定所述异常存储节点的异常存储节点标识;
第一发送子模块,用于生成一第一提示信息,向每一所述从节点发送所述第一提示信息,所述第一提示信息用于提示从节点在下一获取时间点时,从其他存储节点获取已存储区块携带的状态数据,所述其他存储节点为存储节点集群中存储节点标识为除所述异常存储节点标识以外的其他存储节点标识对应的存储节点。
在一些实施例中,所述判断子模块,包括:
判断单元,用于判断比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数据;
第一确定单元,用于所述若所述存储节点集群中存在异常存储节点,则确定所述异常存储节点的异常存储节点标识的步骤,包括:
第二确定单元,用于若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定所述存储节点集群中存在异常存储节点,并将所述目标从节点在当前获取时间点获取状态数据的存储节点的存储节点标识确定为异常存储节点标识。
在一些实施例中,所述装置还包括:
筛选模块,用于当所述主节点异常时,在多个从节点中筛选出目标从节点,并将所述目标从节点更新为主节点,以及从所述存储节点集群中筛选出目标存储节点;
第二获取模块,用于控制更新后主节点从所述目标存储节点获取每一已存储区块携带的状态数据,以使所述更新后主节点根据每一已存储区块携带的状态数据确定异常主节点在异常时的区块发送进度。
在一些实施例中,所述装置还包括:
接收模块,用于接收每一所述存储节点发送的响应信息,当所述响应信息的数量大于第一预设数量时,向存储节点集群中的每一存储节点发送下一待存储区块;
所述筛选模块,包括:
第二发送子模块,用于向每一存储节点发送第一查询请求,所述第一查询请求用于查询存储节点的最高区块的高度值以及最高区块的哈希值;
第二确定子模块,用于接收存储节点根据所述第一查询请求返回的第一反馈信息,基于所述第一反馈信息从多个高度值中确定第一高度值,以及所述第一高度值对应区块的目标哈希值;
第二判断子模块,用于当所述第一反馈信息的数量大于第二预设数量时,所述第二预设数量为所述第一预设数量加一后的数量,判断具有所述第一高度值,且所述第一高度值所处区块的哈希值为所述目标哈希值的第一候选存储节点的数量是否大于所述第二预设数量;
第三确定子模块,用于若具有所述第一高度值,且所述第一高度值所处区块的哈希值为所述目标哈希值的第一候选存储节点的数量大于所述第二预设数量,则将任一第一候选存储节点确定为目标存储节点。
在一些实施例中,所述第二确定子模块,包括:
第三确定单元,用于将所述第一反馈信息中相同高度值数量最多且最大的高度值确定为第一高度值;
第四确定单元,用于将所述第一高度值所处区块中,相同哈希值数量最多的哈希值确定为目标哈希值。
在一些实施例中,所述筛选模块还包括:
第四确定子模块,用于当所述第一反馈信息的数量小于第二预设数量时,根据所述第一反馈信息的数量确定异常数量,所述异常数量为存储节点集群中未根据所述第一查询请求返回第一反馈信息的异常存储节点的数量;
计算子模块,用于计算所述异常数量与所述第一候选存储节点的数量之和,得到计算结果;
第五确定子模块,用于当所述计算结果小于所述第二预设数量时,根据所述第一高度值确定第二高度值,所述第二高度值为所述第一高度值减一得到的高度值;
第三发送子模块,用于向每一存储节点发送第二查询请求,所述第二查询请求用于查询所述第二高度值对应区块的哈希值;
第六确定子模块,用于接收存储节点根据所述第二查询请求返回的第二反馈信息,确定具有相同哈希值的第二候选存储节点的数量;
第七确定子模块,用于若具有相同哈希值的第二候选存储节点的数量大于所述第二预设数量,则将任一第二候选存储节点确定为目标存储节点。
在一些实施例中,所述筛选模块还包括:
第三判断子模块,用于当所述计算结果大于所述第二预设数量时,判断在预设时间段内是否收到异常存储节点根据所述第一查询请求返回的第一反馈信息;
第八确定子模块,用于若在第一预设时间段内未收到异常存储节点根据所述第一查询请求返回的第一反馈信息,则将所述异常存储节点的最高区块的高度值确定为零,将所述异常存储节点的最高区块的哈希值确定为无。
在一些实施例中,所述筛选模块还包括:
生成子模块,用于若具有相同哈希值的第二候选存储节点的数量小于所述第二预设数量,则生成一第二提示信息,所述第二提示信息用于提示无法确定目标存储节点。
在一些实施例中,所述装置还包括:
控制模块,用于控制所述主节点按照预设时间间隔向每一从节点发送运行状态信息;
所述筛选模块,包括:
指定子模块,用于当从节点在当前运行状态信息的接收时间点未接收到所述运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送所述指定结果;
筛选子模块,用于接收每一从节点发送的指定结果,基于所述指定结果在多个从节点中筛选出目标从节点。
在一些实施例中,所述筛选子模块,包括:
基于所述确定结果,确定多个从节点中每一从节点被指定为候选从节点的次数;
第五确定单元,用于将多个从节点中所述次数最高的从节点,确定为目标从节点。
一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述基于区块链的节点同步方法中的步骤。
一种服务器,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于区块链的节点同步方法中的步骤。
本申请实施例通过控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,所述待存储区块携带有状态数据,所述发送节点集群包括主节点以及多个从节点,所述状态数据用于记录区块的交易状态;控制所述多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使所述每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。以此,通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,进而提高了主节点的处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例所提供的基于区块链的节点同步方法的数据共享系统示意图。
图1b为本申请实施例提供的区块链中区块的结构示意图。
图1c为本申请实施例提供的区块产生示意图。
图1d为本申请实施例提供的基于区块链的节点同步方法的第一种流程示意图。
图1e为本申请实施例提供的存储节点集群中每一存储节点的第一种存储示意图。
图1f为本申请实施例提供的存储节点集群中每一存储节点的第二种存储示意图。
图1g为本申请实施例提供的存储节点集群中每一存储节点的第三种存储示意图。
图1h为本申请实施例提供的存储节点集群中每一存储节点的第四种存储示意图。
图2a为本申请实施例提供的基于区块链的节点同步方法的第二种流程示意图。
图2b为本申请实施例提供的基于区块链的节点同步方法的第三种流程示意图。
图2c为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第一种通信连接图。
图2d为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第二种通信连接图。
图2e为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第三种通信连接图。
图2f为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第四种通信连接图。
图2g为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第五种通信连接图。
图3为本申请实施例提供的基于区块链的节点同步装置的结构示意图;
图4为本申请实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一基于区块链的节点同步方法、装置及计算机可读存储介质。
本申请实施例提供了一基于区块链的节点同步方法、装置及计算机可读存储介质。
请参阅图1a,图1a为本申请实施例所提供的基于区块链的节点同步方法的数据共享系统示意图,参见图1a所示的数据共享系统,数据共享系统100是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点11,多个节点11可以是指数据共享系统中各个客户端。每个节点11在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1
节点名称 | 节点标识 |
节点1 | 112.112.152.172 |
节点2 | 113.113.183.143 |
… | … |
节点N | 119.129.789.259 |
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1b,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图1c,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
在本实施例中,将从基于区块链的节点同步装置的角度进行描述,该基于区块链的节点同步装置具体可以集成在具备储存单元并安装有微处理器而具有运算能力的服务器中。
请参阅图1d,图1d为本申请实施例提供的基于区块链的节点同步方法的第一种流程示意图。该基于区块链的节点同步方法包括:
在步骤101中,控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,待存储区块携带有状态数据,发送节点集群包括主节点以及多个从节点,状态数据用于记录区块的交易状态。
其中,在区块链上进行交易时,交易会被主节点进行拆分以及打包,最终得到打包后的多个待存储区块,主节点会将多个待存储区块中的每一待存储区块分别发送至存储节点集群中的每一存储节点,并由存储节点进行存储。其中,每一区块中均携带有状态数据(State Database),状态数据记录的是交易执行的结果,最新的状态代表了通道(Channel)上所有键的最新值,所以又称为“世界状态”。因此,交易以区块的形式在链上被执行时,到达每一进度,均会在区块的状态数据中记录。
具体的,为避免主节点因宕机等原因出现异常,会在区块链中部署多个从节点,以备主节点出现异常时,代替异常主节点继续执行交易的拆分以及打包操作。
在步骤102中,控制多个从节点中的每一从节点,从存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
其中,为确保主节点异常后,任一一从节点均可代替异常主节点继续执行交易的拆分以及打包操作,因此需要保证每一从节点均与主节点保持共识(进度同步),因此可控制每一从节点从存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
在一些实施方式中,该控制该从多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤,包括:
(1)设定每一从节点获取状态数据的初始获取时间点,每一从节点的获取时间点与其他从节点的获取时间点均不相同;
(2)控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据。
其中,为避免多个从节点在同一时间点从同一存储节点中获取已存储区块携带的状态数据,导致存储节点响应每一从节点的响应时间过长,以及从节点拉取状态数据的拉取时间过长,因此可对每一从节点设定不同的初始获取时间点,并控制每一从节点按照固定的预设时间间隔从存储节点集群中的存储节点拉取状态数据,进而使得当某一从节点拉取状态数据时,其他从节点不会从存储节点集群中的存储节点拉取状态数据。
例如,存储节点集群中存在从节点1、从节点2以及从节点3,设定从节点1的初始获取时间点为12:00、从节点2的初始获取时间点为12:05、从节点3的初始获取时间点为12:10,预设时间间隔为20分钟,则从节点1下一获取时间点为12:20、从节点2下一获取时间点为12:25、从节点3下一获取时间点为12:30。因此按照此方式不会出现当某一从节点从存储节点集群中的某一存储节点获取已存储区块携带的状态数据时,其他从节点也在当前时间点从存储节点集群中的某一存储节点获取已存储区块携带的状态数据的情况发生。避免多个从节点在同一时间点从同一存储节点中获取已存储区块携带的状态数据,导致存储节点响应每一从节点的响应时间过长,以及从节点拉取状态数据的拉取时间过长。
在一些实施方式中,在该控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤之后,还包括:
(1)比对每一从节点在当前获取时间点获取的当前状态数据,以及上一获取时间点获取的历史状态数据,得到比对结果;
(2)基于该比对结果判断该存储节点集群中是否存在异常存储节点;
(3)若该存储节点集群中存在异常存储节点,则确定该异常存储节点的异常存储节点标识;
(4)生成一第一提示信息,向每一该从节点发送该第一提示信息,该第一提示信息用于提示从节点在下一获取时间点时,从其他存储节点获取已存储区块携带的状态数据,该其他存储节点为存储节点集群中存储节点标识为除该异常存储节点标识以外的其他存储节点标识对应的存储节点。
其中,由于存储节点存在因存储节点磁盘、内存跳变导致区块数据丢失、存储节点程序出错以及存储节点自身宕机的情况,因此若存在异常的存储节点,则需要告知每一从节点在下一获取时间点时禁止从异常存储节点获取已存储区块携带的状态数据,以防从节点根据获取的状态数据无法与主节点保持共识。
具体的,确定存储节点是否异常的方式为:在每一从节点获取从存储节点获取状态数据时,比对当前获取时间点获取到的状态数据以及上一获取时间点获取到的状态数据,得到一比对结果,根据比对结果确定是否存在异常存储节点,若存在,则确定异常存储节点的异常存储节点标识,并生成一提示信息,向每一从节点发送该提示信息,以告知每一从节点在下一获取时间点时,从除异常存储节点标识以外的其他存储节点标识对应的存储节点获取已存储区块携带的状态数据。
在一些实施方式中,该基于该比对结果判断该存储节点集群中是否存在异常存储节点的步骤,包括:
(1.1)判断比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数据;
该若该存储节点集群中存在异常存储节点,则确定该异常存储节点的异常存储节点标识的步骤,包括:
(1.2)若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定该存储节点集群中存在异常存储节点,并将该目标从节点在当前获取时间点获取状态数据的存储节点的存储节点标识确定为异常存储节点标识。
其中,当存储节点存在因存储节点磁盘、内存跳变导致区块数据丢失、存储节点程序出错以及存储节点自身宕机的情况,会导致异常存储节点中已存储的区块数据丢失发生,因此异常存储节点中已存储区块数量会少于正常存储节点中已存储区块的数量。基于该特性,通过比对结果确定异常存储节点的具体方式为:判断每一从节点发送的比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数,若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定该存储节点集群中存在异常存储节点。则将第一从节点在当前获取时间点获取状态数据的存储节点对应的存储节点标识确定为异常存储节点标识。
在一些实施方式中,在该控制该从多个从节点中的每一从节点从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤之后,还包括:
(1)当该主节点异常时,在多个从节点中筛选出目标从节点,并将该目标从节点更新为主节点,以及从该存储节点集群中筛选出目标存储节点;
(2)控制更新后主节点从该目标存储节点获取每一已存储区块携带的状态数据,以使该更新后主节点根据每一已存储区块携带的状态数据确定异常主节点在异常时的区块发送进度。
其中,当主节点异常时,会从多个备用的从节点中选择一可以代替异常主节点的目标从节点,进而将目标从节点更新为主节点,以继续异常主节点的发送进度。
具体的,目标存储节点为多个存储节点中可信度最高的存储节点。控制更新后的主节点从筛选出的目标存储节点中获取每一已存储区块携带的状态数据,从而根据状态数据用于记录区块的交易状态确定异常主节点在异常时的区块发送进度。
在一些实施方式中,在该当该主节点异常时,在多个从节点中筛选出目标从节点的步骤之前,还包括:
控制该主节点按照预设时间间隔向每一从节点发送运行状态信息;
该当该主节点异常时,在多个从节点中筛选出目标从节点的步骤,包括:
(1)当从节点在当前运行状态信息的接收时间点未接收到该运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送该指定结果;
(2)接收每一从节点发送的指定结果,基于该指定结果在多个从节点中筛选出目标从节点。
其中,可事先设定主节点按照预设时间间隔(例如,5s)向每一从节点发送运行状态信息,该运行状态信息用于告知主节点当前运行状态正常。从而在下一当前运行状态信息的接收时间点,从节点未接收到该运行状态信息时,即可判定主节点异常,需要从多个从节点中确定出可代替异常主节点的目标从节点。
具体的,多个从节点中确定目标从节点的方式可以为:控制每一从节点在多个从节点中指定一候选从节点,并发送指定后的指定结果,从而根据接收到的指定结果从多个从节点中筛选出目标从节点。
在一些实施方式中,在该向存储节点集群中的每一存储节点发送该待存储区块的步骤之后,还包括:
接收每一该存储节点发送的响应信息,当该响应信息的数量大于第一预设数量时,向存储节点集群中的每一存储节点发送下一待存储区块;
该从该存储节点集群中筛选出目标存储节点的步骤,包括:
(1.1)向每一存储节点发送第一查询请求,该第一查询请求用于查询存储节点的最高区块的高度值以及最高区块的哈希值;
(1.2)接收存储节点根据该第一查询请求返回的第一反馈信息,基于该第一反馈信息从多个高度值中确定第一高度值,以及该第一高度值对应区块的目标哈希值;
(1.3)当该第一反馈信息的数量大于第二预设数量时,该第二预设数量为该第一预设数量加一后的数量,判断具有该第一高度值,且该第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量是否大于该第二预设数量;
(1.4)若具有该第一高度值,且该第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量大于该第二预设数量,则将任一第一候选存储节点确定为目标存储节点。
其中,事先设定主节点在向存储集群中的每一存储节点发送待存储区块时的发送规则,当每一存储节点将待存储区块存储完毕后会发送响应信息,以告知区块存储完成,此处的第一预设数量即为存储节点数量的一半,当有超过一半的存储节点发送第一反馈信息,则主节点继续发送下一待存储区块。依次类推,每一存储节点的高度仅能存储一区块,因此在存储节点中不同的区块对应有不同的高度值。从而在从存储节点集群中确定可信任的存储节点时,可以根据每个存储节点中最高区块的高度值确定可信任的存储节点。
具体的,请参阅图1e、图1f、图1g以及图1h,图1e为本申请实施例提供的存储节点集群中每一存储节点的第一种存储示意图;图1f为本申请实施例提供的存储节点集群中每一存储节点的第二种存储示意图;图1g为本申请实施例提供的存储节点集群中每一存储节点的第三种存储示意图;图1h为本申请实施例提供的存储节点集群中每一存储节点的第四种存储示意图。其中,当每一存储节点的存储性能相差不大时,可以得到如图1e所示的区块存储状态,即每一存储节点中存储的区块高度均相同;当存储节点的存储性能相差较大时,如图1f所示,存储节点1、存储节点2以及存储节点3的存储性能相似,但存储节点5存储到区块6,存储节点4存储到区块4,说明存储节点5的存储性能与存储节点1、存储节点2以及存储节点3的存储性能差,但优于存储节点4的存储性能。如图1g所示,少数存储节点中已存储区块的高度值达到9,大多数存储节点中已存储区块的高度值并未达到9;如图1h所示,存储节点3宕机,存储节点4宕机,仅有存储节点1、存储节点2以及存储节点5运行,针对于不同的情况,存在不同确定目标存储节点的方式。
此外,人为篡改已存储区块的区块数据、存储节点程序出错以及存储节点、磁盘、内存跳变均会导致同一区块高度下异常存储节点存储的区块哈希值与其他存储节点的区块哈希值不同,因此为了避免人为篡改存储节点、存储节点程序出错以及存储节点磁盘、内存跳变导致区块数据丢失,以及不可信任的风险,可以结合区块哈希值确定可信任存储节点。
具体的,可向每一存储节点发送查询存储节点的最高区块的高度值以及最高区块的哈希值的第一查询请求,并接收存储节点返回的第一反馈信息。从而根据第一反馈信息得知每一存储节点最高区块的高度值以及最高区块对应的哈希值。从而从多个高度值中确定第一高度值,以及该第一高度值对应区块的目标哈希值。由于存在存储节点宕机的情况,因此需判断接收到的第一反馈信息的数量是否大于第二预设数量,第二预设数量为存储节点集群中所有存储节点的数量一半加一。当第一反馈信息的数量是否大于第二预设数量,则说明有超过一半的存储节点是处于运行状态的。此时可以判断具有相同的第一高度值且第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量是否大于该第二预设数量,若具有该第一高度值,且该第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量大于该第二预设数量,说明当前存储节点中的状态符合图1e(存储节点1至5任意节点均可确定为目标存储节点)的状态,以及图1f(存储节点1、2及3均可确定为目标存储节点)的状态。则将任意一第一候选存储节点确定为目标存储节点。
例如,如表2所示,表2中存储节点1、2、3及4返回了第一反馈信息,其中存储节点1中最高区块的高度值为9,对应哈希值为AAA,存储节点2中最高区块的高度值为9,对应哈希值为AAA,存储节点3中最高区块的高度值为9,对应哈希值为AAA,存储节点4中最高区块的高度值为8,对应哈希值为CCC。则可将存储节点1、2及3中任一存储节点确定为目标存储节点。
表2
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 9 | AAA |
存储节点2 | 9 | AAA |
存储节点3 | 9 | AAA |
存储节点4 | 8 | CCC |
在一些实施方式中,该基于该第一反馈信息从多个高度值中确定第一高度值,以及该第一高度值对应区块的目标哈希值的步骤,包括:
(1.1)将该第一反馈信息中相同高度值数量最多且最大的高度值确定为第一高度值;
(1.2)将该第一高度值对应区块中,相同哈希值数量最多的哈希值确定为目标哈希值。
其中,第一高度值为第一反馈信息中相同高度值最多的高度值,目标哈希值为第一高度值对应区块中,相同哈希值数量最多的哈希值。
在一些实施方式中,该方法还包括:
(1)当该第一反馈信息的数量小于第二预设数量时,根据该第一反馈信息的数量确定异常数量,该异常数量为存储节点集群中未根据该第一查询请求返回第一反馈信息的异常存储节点的数量;
(2)计算该异常数量与该第一候选存储节点的数量之和,得到计算结果;
(3)当该计算结果小于该第二预设数量时,根据该第一高度值确定第二高度值,该第二高度值为该第一高度值减一得到的高度值;
(4)向每一存储节点发送第二查询请求,该第二查询请求用于查询该第二高度值对应区块的哈希值;
(5)接收存储节点根据该第二查询请求返回的第二反馈信息,确定具有相同哈希值的第二候选存储节点的数量;
(6)若具有相同哈希值的第二候选存储节点的数量大于该预设数量,则将任一第二候选存储节点确定为目标存储节点。
其中,若第一反馈信息的数量少于第二预设数量时,说明存在部分存储节点未完成区块存储,或存在宕机的情况,因此需要根据第一反馈信息的数量确定未反馈存在异常的存储节点的数量,得到异常数量。计算第一候选存储节点的数量与异常数量之和,得到计算结果。比较计算结果与第二预设数量,当该计算结果小于该第二预设数量时,则说明存储节点集群中的存储状态为图1g所示,仅有少部分存储节点存储到了第一高度值。因此无法将少部分存储节点确定为可信存储节点(存在人为在存储节点中添加区块的风险)。根据该第一高度值确定第二高度值,该第二高度值为该第一高度值减一得到的高度值。
具体的,当第一高度值为9时,则第二高度值为8,因此重新发送第二查询请求,用于查询第二高度值对应的哈希值,根据返回的第二反馈信息确定具有相同哈希值的第二候选存储节点的数量。若具有相同哈希值的第二候选存储节点的数量大于第二预设数量,则说明存储节点集群中大部分存储节点均处于运行状态,仅有小部分存储节点存储到最高区块高度值。因此可将任一一第二候选存储节点确定为目标存储节点。
例如,表3所示,表3中根据第一查询请求反馈的第一反馈信息为:存储节点1中最高区块的高度值为9,对应哈希值为AAA,存储节点2中最高区块的高度值为5,对应哈希值为DDD,存储节点3中最高区块的高度值为9,对应哈希值为AAA,存储节点4中最高区块的高度值为8,对应哈希值为EEE,存储节点5中最高区块的高度值为8,对应哈希值为EEE。由于无法确定出目标存储节点,因此发送第二查询请求,查询高度值为9-1=8的区块对应哈希值,从而得到表4。表4中存储节点1及存储节点3的最高区块高度值变更为8,对应哈希值为EEE,因此可将存储节点1、存储节点3、存储节点4及存储节点5中任一存储节点确定为目标存储节点。
表3
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 9 | AAA |
存储节点2 | 5 | DDD |
存储节点3 | 9 | AAA |
存储节点4 | 8 | EEE |
存储节点5 | 8 | EEE |
表4
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 8 | EEE |
存储节点2 | 5 | DDD |
存储节点3 | 8 | EEE |
存储节点4 | 8 | EEE |
存储节点5 | 8 | EEE |
在一些实施方式中,该方法还包括:
(1)当该计算结果大于该第二预设数量时,判断在预设时间段内是否收到异常存储节点根据该第一查询请求返回的第一反馈信息;
(2)若在第一预设时间段内未收到异常存储节点根据该第一查询请求返回的第一反馈信息,则将该异常存储节点的最高区块的高度值确定为零,将该异常存储节点的最高区块的哈希值确定为无。
其中,当结算结果大于第二预设数量,则说明未返回第一反馈信息的存储节点数量较多,可以延长接收时间,判断在预设时间段内是否收到异常存储节点根据该第一查询请求返回的第一反馈信息;若超过预设时间段还未接收到第一反馈信息,则将异常存储节点的最高区块的高度值确定为零,将该异常存储节点的最高区块的哈希值确定为无。
在一些实施方式中,该方法还包括:
若具有相同哈希值的第二候选存储节点的数量小于该第二预设数量,则生成一第二提示信息,该第二提示信息用于提示无法确定目标存储节点。
其中,若具有相同哈希值的第二候选存储节点的数量小于该第二预设数量,则说明当前存储节点集群中的异常存储节点过多,无法确定出可信任的存储节点,生成提示信息,用于提示管理区块链的管理机构处理。
具体的,交易可被打包成单一区块,所需处理量较大的交易可被拆分并打包成多个区块,所有区块内的子交易组成交易整体,同一区块被发送给每一存储节点,从而当区块被发送至存储节点并存储后,区块携带的状态数据会进行更新,从而更新后主节点可根据已存储区块携带的状态数据确定异常主节点在异常时的区块发送进度。
在一些实施方式中,在该当该主节点异常时,在多个从节点中筛选出目标从节点的步骤之前,还包括:
控制该主节点按照预设时间间隔向每一从节点发送运行状态信息;
该当该主节点异常时,在多个从节点中筛选出目标从节点的步骤,包括:
(1)当从节点在当前运行状态信息的接收时间点未接收到该运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送该指定结果;
(2)接收每一从节点发送的指定结果,基于该指定结果在多个从节点中筛选出目标从节点。
其中,可事先设定主节点按照预设时间间隔(例如,5s)向每一从节点发送运行状态信息,该运行状态信息用于告知主节点当前运行状态正常。从而在下一当前运行状态信息的接收时间点,从节点未接收到该运行状态信息时,即可判定主节点异常,需要从多个从节点中确定出可代替异常主节点的目标从节点。
具体的,多个从节点中确定目标从节点的方式可以为:控制每一从节点在多个从节点中指定一候选从节点,并发送指定后的指定结果,从而根据接收到的指定结果从多个从节点中筛选出目标从节点。
在一些实施方式中,该基于该确定结果在多个从节点中筛选出目标从节点的步骤,包括:
(1.1)基于该确定结果,确定多个从节点中每一从节点被指定为候选从节点的次数;
(1.2)将多个从节点中该次数最高的从节点,确定为目标从节点。
其中,每一从节点均会发送一指定结果,因此可接收到多个指定结果,根据每一指定结果中从节点被指定的次数,将被指定次数最高的从节点确定为目标从节点。
例如,接收到5个指定结果,其中3个指定结果中指定从节点1作为候选从节点,2个指定结果中指定从节点2作为候选从节点,则将从节点1作为目标从节点。
由上述可知,本申请实施例通过控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。以此,通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,进而提高了主节点的处理效率。
结合上述实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该基于区块链的节点同步装置具体集成在服务器中为例进行说明,具体参照以下说明。
请参阅图2a,图2a为本申请实施例提供的基于区块链的节点同步方法的第二种流程示意图。该方法流程用于主节点正常工作时,从节点的同步流程,具体包括:
在步骤201中,控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,待存储区块携带有状态数据,节点集群包括主节点以及多个从节点,状态数据用于记录区块的交易状态。
其中,在区块链上进行交易时,交易会被主节点进行拆分以及打包,最终得到打包后的多个待存储区块,主节点会将多个待存储区块中的每一待存储区块分别发送至存储节点集群中的每一存储节点,并由存储节点进行存储。其中,每一区块中均携带有状态数据(State Database),状态数据记录的是交易执行的结果,最新的状态代表了通道(Channel)上所有键的最新值,所以又称为“世界状态”。因此,交易以区块的形式在链上被执行时,到达每一进度,均会在区块的状态数据中记录。
具体的,为避免主节点因宕机等原因出现异常,会在区块链中部署多个从节点,以备主节点出现异常时,代替异常主节点继续执行交易的拆分以及打包操作。
在步骤202中,设定每一从节点获取状态数据的初始获取时间点,每一从节点的获取时间点与其他从节点的获取时间点均不相同。
其中,为确保主节点异常后,任一一从节点均可代替异常主节点继续执行交易的拆分以及打包操作,因此需要保证每一从节点均与主节点保持共识(进度同步),因此可控制每一从节点从存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
具体的,为避免多个从节点在同一时间点从同一存储节点中获取已存储区块携带的状态数据,导致存储节点响应每一从节点的响应时间过长,以及从节点拉取状态数据的拉取时间过长,因此可对每一从节点设定不同的初始获取时间点。
在步骤203中,控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
控制每一从节点按照固定的预设时间间隔从存储节点集群中的存储节点拉取状态数据,进而使得当某一从节点拉取状态数据时,其他从节点不会从存储节点集群中的存储节点拉取状态数据。
例如,存储节点集群中存在从节点1、从节点2以及从节点3,设定从节点1的初始获取时间点为12:00、从节点2的初始获取时间点为12:05、从节点3的初始获取时间点为12:10,预设时间间隔为20分钟,则从节点1下一获取时间点为12:20、从节点2下一获取时间点为12:25、从节点3下一获取时间点为12:30。因此按照此方式不会出现当某一从节点从存储节点集群中的某一存储节点获取已存储区块携带的状态数据时,其他从节点也在当前时间点从存储节点集群中的某一存储节点获取已存储区块携带的状态数据的情况发生。避免多个从节点在同一时间点从同一存储节点中获取已存储区块携带的状态数据,导致存储节点响应每一从节点的响应时间过长,以及从节点拉取状态数据的拉取时间过长。
在步骤204中,比对每一从节点在当前获取时间点获取的当前状态数据,以及上一获取时间点获取的历史状态数据,得到比对结果。
其中,由于存储节点存在因存储节点磁盘、内存跳变导致区块数据丢失、存储节点程序出错以及存储节点自身宕机的情况,因此若存在异常的存储节点,则需要告知每一从节点在下一获取时间点时禁止从异常存储节点获取已存储区块携带的状态数据,以防从节点根据获取的状态数据无法与主节点保持共识。
具体的,通过比对当前获取时间点获取的当前状态数据以及上一获取时间点获取的历史状态数据,得到比对结果。
在步骤205中,判断比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数据。
其中,当存储节点存在因存储节点磁盘、内存跳变导致区块数据丢失、存储节点程序出错以及存储节点自身宕机的情况,会导致异常存储节点中已存储的区块数据丢失发生,因此异常存储节点中已存储区块数量会少于正常存储节点中已存储区块的数量。基于该特性,通过比对结果确定异常存储节点的具体方式为:判断每一从节点发送的比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数,若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定该存储节点集群中存在异常存储节点。
在步骤206中,若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定存储节点集群中存在异常存储节点,并将目标从节点在当前获取时间点获取状态数据的存储节点的存储节点标识确定为异常存储节点标识。
若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定该存储节点集群中存在异常存储节点。则将第一从节点在当前获取时间点获取状态数据的存储节点对应的存储节点标识确定为异常存储节点标识。
在步骤207中,生成一第一提示信息,向每一从节点发送第一提示信息,第一提示信息用于提示从节点在下一获取时间点时,从其他存储节点获取已存储区块携带的状态数据。
其中,生成一提示信息,向每一从节点发送该提示信息,以告知每一从节点在下一获取时间点时,从除异常存储节点标识以外的其他存储节点标识对应的存储节点获取已存储区块携带的状态数据。
请参阅图2b,图2b为本申请实施例提供的基于区块链的节点同步方法的第三种流程示意图。该方法流程用于主节点处于异常时,更新后主节点的同步流程,具体包括:
在步骤301中,控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,待存储区块携带有状态数据,节点集群包括主节点以及多个从节点,状态数据用于记录区块的交易状态。
其中,在区块链上进行交易时,交易会被主节点进行拆分以及打包,最终得到打包后的多个待存储区块,主节点会将多个待存储区块中的每一待存储区块分别发送至存储节点集群中的每一存储节点,并由存储节点进行存储。其中,每一区块中均携带有状态数据(State Database),状态数据记录的是交易执行的结果,最新的状态代表了通道(Channel)上所有键的最新值,所以又称为“世界状态”。因此,交易以区块的形式在链上被执行时,到达每一进度,均会在区块的状态数据中记录。
具体的,为避免主节点因宕机等原因出现异常,会在区块链中部署多个从节点,以备主节点出现异常时,代替异常主节点继续执行交易的拆分以及打包操作。
在步骤302中,接收每一存储节点发送的响应信息,当响应信息的数量大于第一预设数量时,向存储节点集群中的每一存储节点发送下一待存储区块。
其中,事先设定主节点在向存储集群中的每一存储节点发送待存储区块时的发送规则,当每一存储节点将待存储区块存储完毕后会发送响应信息,以告知区块存储完成,此处的第一预设数量即为存储节点数量的一半,当有超过一半的存储节点发送第一反馈信息,则主节点继续发送下一待存储区块。
在步骤303中,控制主节点按照预设时间间隔向每一从节点发送运行状态信息。
其中,可事先设定主节点按照预设时间间隔(例如,5s)向每一从节点发送运行状态信息,该运行状态信息用于告知主节点当前运行状态正常。
在步骤304中,当从节点在当前运行状态信息的接收时间点未接收到该运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送指定结果。
其中,在下一当前运行状态信息的接收时间点,从节点未接收到该运行状态信息时,即可判定主节点异常,需要从多个从节点中确定出可代替异常主节点的目标从节点。
具体的,多个从节点中确定目标从节点的方式可以为:控制每一从节点在多个从节点中指定一候选从节点,并发送指定后的指定结果,从而根据接收到的指定结果从多个从节点中筛选出目标从节点。
在步骤305中,接收每一从节点发送的指定结果,基于确定结果,确定多个从节点中每一从节点被指定为候选从节点的次数。
其中,每一从节点均会发送一指定结果,因此可接收到多个指定结果,根据每一指定结果中从节点被指定的次数,将被指定次数最高的从节点确定为目标从节点。
在步骤306中,将多个从节点中次数最高的从节点,确定为目标从节点。
例如,接收到5个指定结果,其中3个指定结果中指定从节点1作为候选从节点,2个指定结果中指定从节点2作为候选从节点,则将从节点1作为目标从节点。
在步骤307中,向每一存储节点发送第一查询请求,第一查询请求用于查询存储节点的最高区块的高度值以及最高区块的哈希值。
每一存储节点的高度仅能存储一区块,因此在存储节点中不同的区块对应有不同的高度值。从而在从存储节点集群中确定可信任的存储节点时,可以根据每个存储节点中最高区块的高度值确定可信任的存储节点。
具体的,请参阅图1e、图1f、图1g以及图1h,图1e为本申请实施例提供的存储节点集群中每一存储节点的第一种存储示意图;图1f为本申请实施例提供的存储节点集群中每一存储节点的第二种存储示意图;图1g为本申请实施例提供的存储节点集群中每一存储节点的第三种存储示意图;图1h为本申请实施例提供的存储节点集群中每一存储节点的第四种存储示意图。其中,当每一存储节点的存储性能相差不大时,可以得到如图1e所示的区块存储状态,即每一存储节点中存储的区块高度均相同;当存储节点的存储性能相差较大时,如图1f所示,存储节点1、存储节点2以及存储节点3的存储性能相似,但存储节点5存储到区块6,存储节点4存储到区块4,说明存储节点5的存储性能与存储节点1、存储节点2以及存储节点3的存储性能差,但优于存储节点4的存储性能。如图1g所示,少数存储节点中已存储区块的高度值达到9,大多数存储节点中已存储区块的高度值并未达到9;如图1h所示,存储节点3宕机,存储节点4宕机,仅有存储节点1、存储节点2以及存储节点5运行,针对于不同的情况,存在不同确定目标存储节点的方式。
此外,人为篡改已存储区块的区块数据、存储节点程序出错以及存储节点、磁盘、内存跳变均会导致同一区块高度下异常存储节点存储的区块哈希值与其他存储节点的区块哈希值不同,因此为了避免人为篡改存储节点、存储节点程序出错以及存储节点磁盘、内存跳变导致区块数据丢失,以及不可信任的风险,可以结合区块哈希值确定可信任存储节点。
具体的,可向每一存储节点发送查询存储节点的最高区块的高度值以及最高区块的哈希值的第一查询请求,并接收存储节点返回的第一反馈信息。从而根据第一反馈信息得知每一存储节点最高区块的高度值以及最高区块对应的哈希值。
在步骤308中,接收存储节点根据第一查询请求返回的第一反馈信息,将第一反馈信息中相同高度值数量最多且最大的高度值确定为第一高度值。
其中,第一高度值为第一反馈信息中相同高度值最多的高度值。
在步骤309中,将第一高度值对应区块中,相同哈希值数量最多的哈希值确定为目标哈希值。
其中,目标哈希值为第一高度值对应区块中,相同哈希值数量最多的哈希值。
在步骤310中,当第一反馈信息的数量大于第二预设数量时,第二预设数量为第一预设数量加一后的数量,判断具有第一高度值,且第一高度值对应区块的哈希值为目标哈希值的第一候选存储节点的数量是否大于第二预设数量。
其中,当第一反馈信息的数量大于第二预设数量,则说明有超过一半的存储节点是处于运行状态的。此时可以判断具有相同的第一高度值且第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量是否大于该第二预设数量。
在步骤311中,若具有第一高度值,且第一高度值对应区块的哈希值为目标哈希值的第一候选存储节点的数量大于第二预设数量,则将任一第一候选存储节点确定为目标存储节点。
其中,若具有该第一高度值,且该第一高度值对应区块的哈希值为该目标哈希值的第一候选存储节点的数量大于该第二预设数量,说明当前存储节点中的状态符合图1e(存储节点1至5任意节点均可确定为目标存储节点)的状态,以及图1f(存储节点1、2及3均可确定为目标存储节点)的状态。则将任意一第一候选存储节点确定为目标存储节点。
例如,如表5所示,表5中存储节点1、2、3及4返回了第一反馈信息,其中存储节点1中最高区块的高度值为9,对应哈希值为AAA,存储节点2中最高区块的高度值为9,对应哈希值为AAA,存储节点3中最高区块的高度值为9,对应哈希值为AAA,存储节点4中最高区块的高度值为8,对应哈希值为CCC。则可将存储节点1、2及3中任一存储节点确定为目标存储节点。
表5
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 9 | AAA |
存储节点2 | 9 | AAA |
存储节点3 | 9 | AAA |
存储节点4 | 8 | CCC |
在步骤312中,当第一反馈信息的数量小于第二预设数量时,根据第一反馈信息的数量确定异常数量,异常数量为存储节点集群中未根据第一查询请求返回第一反馈信息的异常存储节点的数量。
其中,若第一反馈信息的数量少于第二预设数量时,说明存在部分存储节点未完成区块存储,或存在宕机的情况,因此需要根据第一反馈信息的数量确定未反馈存在异常的存储节点的数量,得到异常数量。
在步骤313中,计算异常数量与第一候选存储节点的数量之和,得到计算结果。
其中,计算第一候选存储节点的数量与异常数量之和,得到计算结果。
在步骤314中,当计算结果小于第二预设数量时,根据第一高度值确定第二高度值,第二高度值为该第一高度值减一得到的高度值。
其中,比较计算结果与第二预设数量,当该计算结果小于该第二预设数量时,则说明存储节点集群中的存储状态为图1g所示,仅有少部分存储节点存储到了第一高度值。因此无法将少部分存储节点确定为可信存储节点(存在人为在存储节点中添加区块的风险)。根据该第一高度值确定第二高度值,该第二高度值为该第一高度值减一得到的高度值。
在步骤315中,向每一存储节点发送第二查询请求,第二查询请求用于查询第二高度值对应区块的哈希值。
其中,当第一高度值为9时,则第二高度值为8,因此重新发送第二查询请求,用于查询第二高度值对应的哈希值。
在步骤316中,接收存储节点根据第二查询请求返回的第二反馈信息,确定具有相同哈希值的第二候选存储节点的数量。
其中,根据返回的第二反馈信息确定具有相同哈希值的第二候选存储节点的数量。
在步骤317中,若具有相同哈希值的第二候选存储节点的数量大于第二预设数量,则将任一第二候选存储节点确定为目标存储节点。
其中,若具有相同哈希值的第二候选存储节点的数量大于第二预设数量,则说明存储节点集群中大部分存储节点均处于运行状态,仅有小部分存储节点存储到最高区块高度值。因此可将任一一第二候选存储节点确定为目标存储节点。
例如表6所示,表6中根据第一查询请求反馈的第一反馈信息为:存储节点1中最高区块的高度值为9,对应哈希值为AAA,存储节点2中最高区块的高度值为5,对应哈希值为DDD,存储节点3中最高区块的高度值为9,对应哈希值为AAA,存储节点4中最高区块的高度值为8,对应哈希值为EEE,存储节点5中最高区块的高度值为8,对应哈希值为EEE。由于无法确定出目标存储节点,因此发送第二查询请求,查询高度值为9-1=8的区块对应哈希值,从而得到表7。表7中存储节点1及存储节点3的最高区块高度值变更为8,对应哈希值为EEE,因此可将存储节点1、存储节点3、存储节点4及存储节点5中任一存储节点确定为目标存储节点。
表6
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 9 | AAA |
存储节点2 | 5 | DDD |
存储节点3 | 9 | AAA |
存储节点4 | 8 | EEE |
存储节点5 | 8 | EEE |
表7
存储节点 | 最高区块高度值 | 最高区块对应的哈希值 |
存储节点1 | 8 | EEE |
存储节点2 | 5 | DDD |
存储节点3 | 8 | EEE |
存储节点4 | 8 | EEE |
存储节点5 | 8 | EEE |
由上述可知,本申请实施例通过控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。以此,通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,进而提高了主节点的处理效率。
在一些实施方式中,请参阅图2c,图2c为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第一种通信连接图。其中,图2c以发送节点集群为由主节点、从节点1以及从节点2构成,存储节点集群为由存储节点1、存储节点2、存储节点3以及存储节点4构成为例。当接收到交易时,主节点用于将交易进行排序和打包成区块,并发送到存储节点集群中的每一存储节点。每一存储节点会验证接收到的区块中的交易是否合法,将合法的交易执行并进行存储。为了避免主节点在异常时,交易无法正常被打包以及执行等,需要为主节点配置多个从节点,从而在主节点异常时,可以由一从节点代替异常的主节点继续执行交易。而为了确定主节点在异常时的区块发送进度,可控制每一从节点从任一一存储节点获取已存储区块对应的状态数据,从而确定主节点在异常时的区块发送进度。
具体的,如图2c所示,接收交易后,主节点会将交易进行排序打包成待存储区块,并将该待存储区块分发至存储节点1、存储节点2、存储节点3以及存储节点4进行验证,当存储节点验证通过后,将该区块进行存储。对应的,区块的状态数据即从待存储至待写入至已存储这三种交易状态。从节点1及从节点2从存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以保证与主节点的区块发送进度的同步。例如,从节点1从存储节点2中获取到已存储区块携带的状态数据有区块1已存储,区块2已存储以及区块3已存储,则从节点1确定主节点已经将区块1、区块2以及区块3进行分发并验证通过后被存储节点进行存储,则主节点的区块发送进度为区块1、区块2以及区块3。
具体的,为使从节点可以确定主节点是否发生异常,可建立每一从节点与主节点之间的通信关系,从而在主节点异常时,从节点可快速得知。如图2c所示,可控制主节点定时向从节点1以及从节点2发送运行状态信息,以告知从节点当前运行正常,而在下一发送时间点从节点未接收到运行状态信息,则从节点可将主节点判定为异常。
在一些实施方式中,请参阅图2d,图2d为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第二种通信连接图。其中,当主节点未向从节点发送运行状态信息时,从节点之间进行投票,选举出可以代替异常的主节点继续执行交易的目标从节点,或者从节点将投票结果统一发送至发送节点集群对应的管理端,由管理端将得票数最多的从节点确定为目标从节点。
在一些实施方式中,请参阅图2e,图2e为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第三种通信连接图。其中,当选举出目标从节点后,设定目标从节点向其他从节点以及恢复后的主节点发送运行状态信息。并且目标从节点需从存储节点集群中确定出可信任的存储节点,从而根据高可信的存储节点确定出主节点在异常时的区块发送进度。因此,目标从节点需查询每一存储节点中的最高区块的高度值以及最高区块的哈希值,从而确定出可信任的存储节点。
例如,从节点2被确定为目标从节点,此时异常主节点并未恢复,则控制目标从节点向从节点1定时发送运行状态信息,并查询存储节点1、存储节点2、存储节点3以及存储节点4中最高区块的高度值以及最高区块的哈希值。
在一些实施方式中,请参阅图2f,图2f为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第四种通信连接图。其中,当确定出存储节点1为可信任的存储节点后,目标从节点从存储节点1中获取已存储区块的状态数据,并根据已存储区块的状态数据确定主节点在异常时的区块发送进度。
例如,目标从节点在存储节点1中获取到已存储区块携带的状态数据有区块1已存储,区块2已存储以及区块3已存储,则从节点1确定主节点已经将区块1、区块2以及区块3进行分发并验证通过后被存储节点进行存储,则主节点的区块发送进度为区块1、区块2以及区块3。
在一些实施方式中,请参阅图2g,图2g为本申请实施例提供的发送节点集群中的主从节点与存储节点集群中的存储节点之间的第五种通信连接图。其中,目标从节点在确定了主节点在异常时的区块发送进度后,代替主节点继续交易的执行,因此,接收交易的节点从主节点变更为目标从节点,并由目标从节点进行交易的排序和打包成区块的过程,并将待存储区块发送至存储节点集群中的每一存储节点进行验证及存储。
例如,主节点在异常时的区块发送进度为区块1、区块2以及区块3,则目标从节点在代替主节点继续交易的执行后,会继续发送区块4等的区块至存储节点集群中的每一存储节点进行验证及存储。
为便于更好的实施本申请实施例提供的基于区块链的节点同步方法,本申请实施例还提供一种基于上述基于区块链的节点同步方法的装置。其中名词的含义与上述基于区块链的节点同步方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图3,图3为本申请实施例提供的基于区块链的节点同步装置的结构示意图,其中该基于区块链的节点同步装置可以包括第一发送模块401以及第一获取模块402等。
第一发送模块401,用于控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;
第一获取模块402,用于控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
在一些实施例中,该第一获取模块402,包括:
设定子模块,用于设定每一从节点获取状态数据的初始获取时间点,每一从节点的获取时间点与其他从节点的获取时间点均不相同;
控制子模块,用于控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据。
在一些实施例中,该第一获取模块402还包括:
比对子模块,用于比对每一从节点在当前获取时间点获取的当前状态数据,以及上一获取时间点获取的历史状态数据,得到比对结果;
第一判断子模块,用于基于该比对结果判断该存储节点集群中是否存在异常存储节点;
第一确定子模块,用于若该存储节点集群中存在异常存储节点,则确定该异常存储节点的异常存储节点标识;
第一发送子模块,用于生成一第一提示信息,向每一该从节点发送该第一提示信息,该第一提示信息用于提示从节点在下一获取时间点时,从其他存储节点获取已存储区块携带的状态数据,该其他存储节点为存储节点集群中存储节点标识为除该异常存储节点标识以外的其他存储节点标识对应的存储节点。
在一些实施例中,该判断子模块,包括:
判断单元,用于判断比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数据;
第一确定单元,用于该若该存储节点集群中存在异常存储节点,则确定该异常存储节点的异常存储节点标识的步骤,包括:
第二确定单元,用于若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定该存储节点集群中存在异常存储节点,并将该目标从节点在当前获取时间点获取状态数据的存储节点的存储节点标识确定为异常存储节点标识。
在一些实施例中,该装置还包括:
筛选模块,用于当该主节点异常时,在多个从节点中筛选出目标从节点,并将该目标从节点更新为主节点,以及从该存储节点集群中筛选出目标存储节点;
第二获取模块,用于控制更新后主节点从该目标存储节点获取每一已存储区块携带的状态数据,以使该更新后主节点根据每一已存储区块携带的状态数据确定异常主节点在异常时的区块发送进度。
在一些实施例中,该装置还包括:
接收模块,用于接收每一该存储节点发送的响应信息,当该响应信息的数量大于第一预设数量时,向存储节点集群中的每一存储节点发送下一待存储区块;
该筛选模块,包括:
第二发送子模块,用于向每一存储节点发送第一查询请求,该第一查询请求用于查询存储节点的最高区块的高度值以及最高区块的哈希值;
第二确定子模块,用于接收存储节点根据该第一查询请求返回的第一反馈信息,基于该第一反馈信息从多个高度值中确定第一高度值,以及该第一高度值对应区块的目标哈希值;
第二判断子模块,用于当该第一反馈信息的数量大于第二预设数量时,该第二预设数量为该第一预设数量加一后的数量,判断具有该第一高度值,且该第一高度值所处区块的哈希值为该目标哈希值的第一候选存储节点的数量是否大于该第二预设数量;
第三确定子模块,用于若具有该第一高度值,且该第一高度值所处区块的哈希值为该目标哈希值的第一候选存储节点的数量大于该第二预设数量,则将任一第一候选存储节点确定为目标存储节点。
在一些实施例中,该第二确定子模块,包括:
第三确定单元,用于将该第一反馈信息中相同高度值数量最多且最大的高度值确定为第一高度值;
第四确定单元,用于将该第一高度值所处区块中,相同哈希值数量最多的哈希值确定为目标哈希值。
在一些实施例中,该筛选模块还包括:
第四确定子模块,用于当该第一反馈信息的数量小于第二预设数量时,根据该第一反馈信息的数量确定异常数量,该异常数量为存储节点集群中未根据该第一查询请求返回第一反馈信息的异常存储节点的数量;
计算子模块,用于计算该异常数量与该第一候选存储节点的数量之和,得到计算结果;
第五确定子模块,用于当该计算结果小于该第二预设数量时,根据该第一高度值确定第二高度值,该第二高度值为该第一高度值减一得到的高度值;
第三发送子模块,用于向每一存储节点发送第二查询请求,该第二查询请求用于查询该第二高度值对应区块的哈希值;
第六确定子模块,用于接收存储节点根据该第二查询请求返回的第二反馈信息,确定具有相同哈希值的第二候选存储节点的数量;
第七确定子模块,用于若具有相同哈希值的第二候选存储节点的数量大于该第二预设数量,则将任一第二候选存储节点确定为目标存储节点。
在一些实施例中,该筛选模块还包括:
第三判断子模块,用于当该计算结果大于该第二预设数量时,判断在预设时间段内是否收到异常存储节点根据该第一查询请求返回的第一反馈信息;
第八确定子模块,用于若在第一预设时间段内未收到异常存储节点根据该第一查询请求返回的第一反馈信息,则将该异常存储节点的最高区块的高度值确定为零,将该异常存储节点的最高区块的哈希值确定为无。
在一些实施例中,该筛选模块还包括:
生成子模块,用于若具有相同哈希值的第二候选存储节点的数量小于该第二预设数量,则生成一第二提示信息,该第二提示信息用于提示无法确定目标存储节点。
在一些实施例中,所述装置还包括:
控制模块,用于控制所述主节点按照预设时间间隔向每一从节点发送运行状态信息;
所述筛选模块,包括:
指定子模块,用于当从节点在当前运行状态信息的接收时间点未接收到所述运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送所述指定结果;
筛选子模块,用于接收每一从节点发送的指定结果,基于所述指定结果在多个从节点中筛选出目标从节点。
在一些实施例中,所述筛选子模块,包括:
基于所述确定结果,确定多个从节点中每一从节点被指定为候选从节点的次数;
第五确定单元,用于将多个从节点中所述次数最高的从节点,确定为目标从节点。
由上述可知,本申请实施例通过第一发送模块401,用于控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;第一获取模块402,用于控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。以此,通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,进而提高了主节点的处理效率。
相应的,本申请实施例还提供一种服务器,该服务器可以为笔记本电脑、个人计算机(PC,Personal Computer)、个人数字助理(Personal Digital Assistant,PDA)等终端设备。如图4所示,图4为本申请实施例提供的服务器的结构示意图。该服务器500包括有一个或者一个以上处理核心的处理器501、有一个或一个以上计算机可读存储介质的存储器502及存储在存储器502上并可在处理器上运行的计算机程序。其中,处理器501与存储器502电性连接。本领域技术人员可以理解,图中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器501是服务器500的控制中心,利用各种接口和线路连接整个服务器500的各个部分,通过运行或加载存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行服务器500的各种功能和处理数据,从而对服务器500进行整体监控。
在本申请实施例中,服务器500中的处理器501会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能:
控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图4所示,服务器500还包括:输入单元503以及电源504。其中,处理器501分别与输入单元503以及电源504电性连接。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在本申请实施例中,输入单元506可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源504用于给服务器500的各个部件供电。可选的,电源504可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源504还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
由上可知,本实施例提供的服务器,通过控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。以此,通过控制每一从节点从存储节点中已存储区块携带的状态数据确定主节点的区块发送进度,进而避免主节点在打包过程中还需控制主节点与其他的从节点保持状态同步,占用主节点较大的处理资源,进而提高了主节点的处理效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,该待存储区块携带有状态数据,该发送节点集群包括主节点以及多个从节点,该状态数据用于记录区块的交易状态;控制该多个从节点中的每一从节点,从该存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使该每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种基于区块链的节点同步方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种基于区块链的节点同步方法、装置、存储介质及服务器进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种基于区块链的节点同步方法,其特征在于,包括:
控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,所述待存储区块携带有状态数据,所述发送节点集群包括主节点以及多个从节点,所述状态数据用于记录区块的交易状态;
控制所述多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使所述每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
2.根据权利要求1所述的基于区块链的节点同步方法,其特征在于,所述控制所述从多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤,包括:
设定每一从节点获取状态数据的初始获取时间点,每一从节点的获取时间点与其他从节点的获取时间点均不相同;
控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据。
3.根据权利要求2所述的基于区块链的节点同步方法,其特征在于,在所述控制每一从节点自对应的初始获取时间点起,按照预设时间间隔从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤之后,还包括:
比对每一从节点在当前获取时间点获取的当前状态数据,以及上一获取时间点获取的历史状态数据,得到比对结果;
基于所述比对结果判断所述存储节点集群中是否存在异常存储节点;
若所述存储节点集群中存在异常存储节点,则确定所述异常存储节点的异常存储节点标识;
生成一第一提示信息,向每一所述从节点发送所述第一提示信息,所述第一提示信息用于提示从节点在下一获取时间点时,从其他存储节点获取已存储区块携带的状态数据,所述其他存储节点为存储节点集群中存储节点标识为除所述异常存储节点标识以外的其他存储节点标识对应的存储节点。
4.根据权利要求3所述的基于区块链的节点同步方法,其特征在于,所述基于所述比对结果判断所述存储节点集群中是否存在异常存储节点的步骤,包括:
判断比对结果中是否存在第一从节点获取的当前状态数据少于历史状态数据;
所述若所述存储节点集群中存在异常存储节点,则确定所述异常存储节点的异常存储节点标识的步骤,包括:
若比对结果中存在第一从节点获取的当前状态数据少于历史状态数据,则确定所述存储节点集群中存在异常存储节点,并将所述目标从节点在当前获取时间点获取状态数据的存储节点的存储节点标识确定为异常存储节点标识。
5.根据权利要求1所述的基于区块链的节点同步方法,其特征在于,在所述控制所述从多个从节点中的每一从节点从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据的步骤之后,还包括:
当所述主节点异常时,在多个从节点中筛选出目标从节点,并将所述目标从节点更新为主节点,以及从所述存储节点集群中筛选出目标存储节点;
控制更新后主节点从所述目标存储节点获取每一已存储区块携带的状态数据,以使所述更新后主节点根据每一已存储区块携带的状态数据确定异常主节点在异常时的区块发送进度。
6.根据权利要求5所述的基于区块链的节点同步方法,其特征在于,在所述向存储节点集群中的每一存储节点发送所述待存储区块的步骤之后,还包括:
接收每一所述存储节点发送的响应信息,当所述响应信息的数量大于第一预设数量时,向存储节点集群中的每一存储节点发送下一待存储区块;
所述从所述存储节点集群中筛选出目标存储节点的步骤,包括:
向每一存储节点发送第一查询请求,所述第一查询请求用于查询存储节点的最高区块的高度值以及最高区块的哈希值;
接收存储节点根据所述第一查询请求返回的第一反馈信息,基于所述第一反馈信息从多个高度值中确定第一高度值,以及所述第一高度值对应区块的目标哈希值;
当所述第一反馈信息的数量大于第二预设数量时,所述第二预设数量为所述第一预设数量加一后的数量,判断具有所述第一高度值,且所述第一高度值对应区块的哈希值为所述目标哈希值的第一候选存储节点的数量是否大于所述第二预设数量;
若具有所述第一高度值,且所述第一高度值对应区块的哈希值为所述目标哈希值的第一候选存储节点的数量大于所述第二预设数量,则将任一第一候选存储节点确定为目标存储节点。
7.根据权利要求6所述的基于区块链的节点同步方法,其特征在于,所述基于所述第一反馈信息从多个高度值中确定第一高度值,以及所述第一高度值所处区块的目标哈希值的步骤,包括:
将所述第一反馈信息中相同高度值数量最多且最大的高度值确定为第一高度值;
将所述第一高度值对应区块中,相同哈希值数量最多的哈希值确定为目标哈希值。
8.根据权利要求6所述的基于区块链的节点同步方法,其特征在于,所述方法还包括:
当所述第一反馈信息的数量小于第二预设数量时,根据所述第一反馈信息的数量确定异常数量,所述异常数量为存储节点集群中未根据所述第一查询请求返回第一反馈信息的异常存储节点的数量;
计算所述异常数量与所述第一候选存储节点的数量之和,得到计算结果;
当所述计算结果小于所述第二预设数量时,根据所述第一高度值确定第二高度值,所述第二高度值为所述第一高度值减一得到的高度值;
向每一存储节点发送第二查询请求,所述第二查询请求用于查询所述第二高度值对应区块的哈希值;
接收存储节点根据所述第二查询请求返回的第二反馈信息,确定具有相同哈希值的第二候选存储节点的数量;
若具有相同哈希值的第二候选存储节点的数量大于所述第二预设数量,则将任一第二候选存储节点确定为目标存储节点。
9.根据权利要求8所述的基于区块链的节点同步方法,其特征在于,所述方法还包括:
当所述计算结果大于所述第二预设数量时,判断在预设时间段内是否收到异常存储节点根据所述第一查询请求返回的第一反馈信息;
若在第一预设时间段内未收到异常存储节点根据所述第一查询请求返回的第一反馈信息,则将所述异常存储节点的最高区块的高度值确定为零,将所述异常存储节点的最高区块的哈希值确定为无。
10.根据权利要求8所述的基于区块链的节点同步方法,其特征在于,所述方法还包括:
若具有相同哈希值的第二候选存储节点的数量小于所述第二预设数量,则生成一第二提示信息,所述第二提示信息用于提示无法确定目标存储节点。
11.根据权利要求5所述的基于区块链的节点同步方法,其特征在于,在所述当所述主节点异常时,在多个从节点中筛选出目标从节点的步骤之前,还包括:
控制所述主节点按照预设时间间隔向每一从节点发送运行状态信息;
所述当所述主节点异常时,在多个从节点中筛选出目标从节点的步骤,包括:
当从节点在当前运行状态信息的接收时间点未接收到所述运行状态信息时,控制每一从节点从多个从节点中指定一候选从节点,得到指定结果,并发送所述指定结果;
接收每一从节点发送的指定结果,基于所述指定结果在多个从节点中筛选出目标从节点。
12.根据权利要求11所述的基于区块链的节点同步方法,其特征在于,所述基于所述确定结果在多个从节点中筛选出目标从节点的步骤,包括:
基于所述确定结果,确定多个从节点中每一从节点被指定为候选从节点的次数;
将多个从节点中所述次数最高的从节点,确定为目标从节点。
13.一种基于区块链的节点同步装置,其特征在于,包括:
第一发送模块,用于控制发送节点集群中的主节点向存储节点集群中的每一存储节点发送待存储区块,所述待存储区块携带有状态数据,所述发送节点集群包括主节点以及多个从节点,所述状态数据用于记录区块的交易状态;
第一获取模块,用于控制所述多个从节点中的每一从节点,从所述存储节点集群中的任一存储节点获取已存储区块携带的状态数据,以使所述每一从节点根据每一已存储区块携带的状态数据确定主节点的区块发送进度。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至12任一项所述的基于区块链的节点同步方法中的步骤。
15.一种服务器,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至12任一项所述的基于区块链的节点同步方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644436.4A CN113342893B (zh) | 2021-06-09 | 2021-06-09 | 基于区块链的节点同步方法、装置、存储介质及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644436.4A CN113342893B (zh) | 2021-06-09 | 2021-06-09 | 基于区块链的节点同步方法、装置、存储介质及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342893A true CN113342893A (zh) | 2021-09-03 |
CN113342893B CN113342893B (zh) | 2022-11-15 |
Family
ID=77475960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110644436.4A Active CN113342893B (zh) | 2021-06-09 | 2021-06-09 | 基于区块链的节点同步方法、装置、存储介质及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342893B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174598A (zh) * | 2022-09-01 | 2022-10-11 | 杭州趣链科技有限公司 | 区块同步方法、区块链系统、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108134706A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 区块链多活高可用系统、计算机设备以及方法 |
CN111274317A (zh) * | 2020-01-07 | 2020-06-12 | 书生星际(北京)科技有限公司 | 多节点数据同步的方法和装置,以及计算机设备 |
US20200220791A1 (en) * | 2019-01-08 | 2020-07-09 | Hewlett Packard Enterprise Development Lp | Instantiation of a telco blockchain in a nfv environment |
CN112118117A (zh) * | 2020-08-27 | 2020-12-22 | 紫光云(南京)数字技术有限公司 | 一种基于Paxos算法的区块链共识方法 |
US20210109936A1 (en) * | 2019-11-08 | 2021-04-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | System and method for blockchain-based data synchronization |
-
2021
- 2021-06-09 CN CN202110644436.4A patent/CN113342893B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108134706A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 区块链多活高可用系统、计算机设备以及方法 |
US20200220791A1 (en) * | 2019-01-08 | 2020-07-09 | Hewlett Packard Enterprise Development Lp | Instantiation of a telco blockchain in a nfv environment |
US20210109936A1 (en) * | 2019-11-08 | 2021-04-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | System and method for blockchain-based data synchronization |
CN111274317A (zh) * | 2020-01-07 | 2020-06-12 | 书生星际(北京)科技有限公司 | 多节点数据同步的方法和装置,以及计算机设备 |
CN112118117A (zh) * | 2020-08-27 | 2020-12-22 | 紫光云(南京)数字技术有限公司 | 一种基于Paxos算法的区块链共识方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174598A (zh) * | 2022-09-01 | 2022-10-11 | 杭州趣链科技有限公司 | 区块同步方法、区块链系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113342893B (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7428210B2 (en) | Fail over method and a computing system having fail over function | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
CN111163173B (zh) | 集群配置方法、装置、服务器及可读存储介质 | |
CN114049123B (zh) | 区块链的共识方法、装置、计算机设备和存储介质 | |
CN105069152B (zh) | 数据处理方法及装置 | |
US11102284B2 (en) | Service processing methods and systems based on a consortium blockchain network | |
CN113163414A (zh) | 一种信息处理方法和近实时无线接入网控制器 | |
CN112698952A (zh) | 计算资源统一管理方法、装置、计算机设备及存储介质 | |
CN111198662B (zh) | 一种数据存储方法、装置和计算机可读存储介质 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN114172785B (zh) | 告警信息处理方法、装置、设备和存储介质 | |
CN113364874B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN110704196B (zh) | 资源数据的转移方法、装置和区块链系统 | |
EP3349416B1 (en) | Relationship chain processing method and system, and storage medium | |
CN113032107B (zh) | 一种云数据库的资源管理方法、装置及系统 | |
CN114610545A (zh) | 减少私有云计算的单点故障的方法、系统、设备及介质 | |
EP3627359B1 (en) | Transaction processing method, device and equipment | |
CN112804090B (zh) | 联盟网络的运行实现方法、装置、设备及存储介质 | |
WO2023236806A1 (zh) | 数据烧录方法、装置、计算机设备和计算机可读存储介质 | |
CN117033084B (zh) | 虚拟机备份方法、装置、电子设备及存储介质 | |
US20230221934A1 (en) | Application deployment method, application blueprint generation method, platform, terminal and medium | |
CN114237875A (zh) | 一种集群管理方法、装置、设备及计算机存储介质 | |
US10938701B2 (en) | Efficient heartbeat with remote servers by NAS cluster nodes | |
WO2023198276A1 (en) | Handling failure of an application instance |
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 |