本发明涉及计算机,尤其涉及一种区块链节点故障恢复方法、装置、设备及存储介质。
背景技术:
1、区块链是一种将数据区块有序连接,并以密码学方式保证其不可篡改、不可伪造的分布式数据库。它可在无需第三方背书情况下,实现系统中所有数据信息的公开透明、不可篡改、不可伪造、可追溯。
2、区块链的核心特点之一是去中心化,系统节点地位是对等的,每个节点上都保存全量账本数据,并且角色权限完全相同。通过这种组织形式,结合加密算法和共识机制,使节点无需第三方中心机构,完成点对点可信交易。但区块链在实际运行过程,会出现节点算力资源不足、磁盘损坏等问题,导致故障节点无法正常生成区块,如果故障节点数量超过容错上限,则整个系统无法正常运行。所以,区块链容错恢复效率是区块链核心重要能力。而现有主流区块链系统的容错方法为:每个节点保存全量的账本信息,当系统某个节点出现故障数据被损坏时,在数据恢复时,需要同步全量账本。由于账本数据量巨大,每个节点保存全量账本,一方面浪费存储空间,另一方面,在节点故障恢复时,需要同步全量账本数据,容错恢复效率较低。因此,如何提高区块链节点故障恢复效率成为了亟待解决的技术问题。
技术实现思路
1、本发明的主要目的在于提供了一种区块链节点故障恢复方法、装置、设备及存储介质,旨在解决现有技术区块链节点故障恢复时需要同步全量账本数据和共识信息导致节点故障恢复效率较低的技术问题。
2、为实现上述目的,本发明提供了一种区块链节点故障恢复方法,所述方法包括以下步骤:
3、获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇,所述节点嵌套簇中包括用于共识的共识节点和存储账本数据的账本节点;
4、在检测到区块链节点故障时,确定故障区块链节点对应的节点嵌套簇;
5、基于所述节点嵌套簇对所述故障区块链节点进行故障恢复。
6、可选地,所述基于所述节点嵌套簇对所述故障区块链节点进行故障恢复的步骤,包括:
7、确定所述故障区块链节点的节点类型;
8、根据所述节点类型和所述节点嵌套簇对所述故障区块链节点进行故障恢复。
9、可选地,所述根据所述节点类型和所述节点嵌套簇对所述故障区块链节点进行故障恢复的步骤,包括:
10、在所述节点类型为第一类型节点时,确定所述节点嵌套簇中的共识节点;
11、根据所述共识节点确定共识指针;
12、基于所述共识指针对所述故障区块链节点进行故障恢复;
13、在所述节点类型为第二类型节点时,确定所述节点嵌套簇中的账本节点;
14、根据所述账本节点确定分区账本数据;
15、基于所述分区账本数据对所述故障区块链节点进行故障恢复。
16、可选地,所述获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
17、获取区块链节点的历史共识信息;
18、根据所述历史共识信息确定区块链节点的共识特征向量;
19、根据所述共识特征向量确定区块链嵌套森林质心;
20、基于所述区块链嵌套森林质心对所述区块链节点进行聚类,得到多个节点嵌套簇。
21、可选地,所述基于所述区块链嵌套森林质心对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
22、从第二个区块链节点开始遍历,确定遍历到的目标区块链节点;
23、获取当前已经生成的节点嵌套簇,确定所述节点嵌套簇的节点嵌套簇质心和节点嵌套簇直径;
24、根据所述节点嵌套簇质心和所述节点嵌套簇直径对所述目标区块链节点进行聚类,得到多个节点嵌套簇。
25、可选地,所述根据所述节点嵌套簇质心和所述节点嵌套簇直径对所述目标区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
26、确定所述目标区块链节点到所述节点嵌套簇质心的欧式距离;
27、根据所述欧式距离确定目标距离;
28、确定所述目标距离对应的节点嵌套簇的节点嵌套簇直径;
29、根据所述目标距离和所述节点嵌套簇直径对所述目标区块链节点进行聚类,得到多个节点嵌套簇。
30、可选地,所述获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤之后,还包括:
31、确定节点嵌套簇的嵌套簇数量和全量账本数据;
32、基于所述嵌套簇数量对所述全量账本数据进行划分,得到分区账本数据;
33、确定所述分区账本数据对应的区块标识和所述节点嵌套簇对应的嵌套簇标识;
34、根据所述嵌套簇标识和所述区块标识确定哈希环;
35、基于所述哈希环确定所述分区账本数据的存储位置;
36、根据所述存储位置和所述节点嵌套簇中的账本节点分区存储所述全量账本数据。
37、此外,为实现上述目的,本发明还提供一种区块链节点故障恢复装置,所述装置包括:
38、聚类模块,用于获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇;
39、检测模块,用于在检测到区块链节点故障时,确定故障区块链节点对应的节点嵌套簇;
40、故障恢复模块,用于基于所述节点嵌套簇对所述故障区块链节点进行故障恢复。
41、此外,为实现上述目的,本发明还提出一种区块链节点故障恢复设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链节点故障恢复程序,所述区块链节点故障恢复程序配置为实现如上文所述的区块链节点故障恢复方法的步骤。
42、此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有区块链节点故障恢复程序,所述区块链节点故障恢复程序被处理器执行时实现如上文所述的区块链节点故障恢复方法的步骤。
43、本发明获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇,所述节点嵌套簇中包括用于共识的共识节点和存储账本数据的账本节点;在检测到区块链节点故障时,确定故障区块链节点对应的节点嵌套簇;基于所述节点嵌套簇对所述故障区块链节点进行故障恢复。由于本发明账本节点仅存储账本数据,共识节点仅用于区块链共识,相对于现有的区块链节点既要进行节点共识,也要存储全量的账本数据,本发明上述方式在区块链节点故障时,可仅根据节点的类型对节点进行故障恢复,不用进行全量的账本数据和共识信息的恢复,提高节点故障恢复效率。
1.一种区块链节点故障恢复方法,其特征在于,所述区块链节点故障恢复方法包括以下步骤:
2.如权利要求1所述的区块链节点故障恢复方法,其特征在于,所述基于所述节点嵌套簇对所述故障区块链节点进行故障恢复的步骤,包括:
3.如权利要求2所述的区块链节点故障恢复方法,其特征在于,所述根据所述节点类型和所述节点嵌套簇对所述故障区块链节点进行故障恢复的步骤,包括:
4.如权利要求1-3任一项所述的区块链节点故障恢复方法,其特征在于,所述获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
5.如权利要求4所述的区块链节点故障恢复方法,其特征在于,所述基于所述区块链嵌套森林质心对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
6.如权利要求5所述的区块链节点故障恢复方法,其特征在于,所述根据所述节点嵌套簇质心和所述节点嵌套簇直径对所述目标区块链节点进行聚类,得到多个节点嵌套簇的步骤,包括:
7.如权利要求1-3任一项所述的区块链节点故障恢复方法,其特征在于,所述获取区块链节点的历史共识信息,根据所述历史共识信息对所述区块链节点进行聚类,得到多个节点嵌套簇的步骤之后,还包括:
8.一种区块链节点故障恢复装置,其特征在于,所述区块链节点故障恢复装置包括:
9.一种区块链节点故障恢复设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链节点故障恢复程序,所述区块链节点故障恢复程序配置为实现如权利要求1至7中任一项所述的区块链节点故障恢复方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有区块链节点故障恢复程序,所述区块链节点故障恢复程序被处理器执行时实现如权利要求1至7任一项所述的区块链节点故障恢复方法的步骤。