CN116915796B - 集群视图分叉后的自主恢复方法、装置以及电子设备 - Google Patents

集群视图分叉后的自主恢复方法、装置以及电子设备 Download PDF

Info

Publication number
CN116915796B
CN116915796B CN202311187039.4A CN202311187039A CN116915796B CN 116915796 B CN116915796 B CN 116915796B CN 202311187039 A CN202311187039 A CN 202311187039A CN 116915796 B CN116915796 B CN 116915796B
Authority
CN
China
Prior art keywords
view
node
value
target cluster
new
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
CN202311187039.4A
Other languages
English (en)
Other versions
CN116915796A (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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology 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 Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202311187039.4A priority Critical patent/CN116915796B/zh
Publication of CN116915796A publication Critical patent/CN116915796A/zh
Application granted granted Critical
Publication of CN116915796B publication Critical patent/CN116915796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本申请涉及一种集群视图分叉后的自主恢复方法、装置以及电子设备。该方法包括:在目标集群的当前视图出现视图分叉的情况下,若目标集群中存在第一节点,则控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息,以使第一节点广播视图值凭证;控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值;控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息,其中,第二节点为第一视图值对应的第一新视图的主节点;在目标集群除第二节点外的每一个节点都收到第一新视图消息后,目标集群进入第一新视图。本申请解决了PBFT算法中集群视图分叉后无法自主恢复的技术问题。

Description

集群视图分叉后的自主恢复方法、装置以及电子设备
技术领域
本申请涉及区块链领域,尤其涉及一种集群视图分叉后的自主恢复方法、装置以及电子设备。
背景技术
PBFT(Practical Byzantine Fault Tolerance)算法作为第一个可实用的拜占庭容错共识算法,设计了一种集群视图变更(view change)的子协议,用以解决在主节点发生故障时,主动切换主节点,从而避免集群进入混沌状态无法推进共识的问题。PBFT集群能够持续推进的前提是集群中至少存在2f+1个能够互相通信的节点,这是拜占庭容错算法持续推进的最低要求。然而,在某些极端场景下,即使PBFT集群能够保证2f+1个节点间互相通信,也会陷入到一种视图分叉,无法自主恢复的死循环中,导致于集群无法推进共识,影响了PBFT算法运行时的稳定性。
发明内容
本申请提供了一种集群视图分叉后的自主恢复方法、装置以及电子设备,以解决PBFT算法中集群视图分叉后无法自主恢复的技术问题。
第一方面,本申请提供了一种集群视图分叉后的自主恢复方法,包括:在目标集群的当前视图出现视图分叉的情况下,若上述目标集群中存在第一节点,则控制上述目标集群除上述第一节点外的每一个节点向上述第一节点发送视图索要消息,以使上述第一节点广播视图值凭证,其中,上述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为上述第一视图值,并将上述2f+1个第一视图变更请求汇总为上述视图值凭证的节点;控制上述目标集群除上述第一节点外的每一个节点在接收到上述视图值凭证后将本地的视图值更新为上述第一视图值;控制上述目标集群的第二节点构造第一视图值的第一新视图消息,并广播上述第一新视图消息,其中,上述第二节点为上述第一视图值对应的第一新视图的主节点;在上述目标集群除上述第二节点外的每一个节点都收到上述第一新视图消息后,上述目标集群进入上述第一新视图。
第二方面,本申请提供了一种集群视图分叉后的自主恢复装置,包括:第一控制模块,用于在目标集群的当前视图出现视图分叉的情况下,若上述目标集群中存在第一节点,则控制上述目标集群除上述第一节点外的每一个节点向上述第一节点发送视图索要消息,以使上述第一节点广播视图值凭证,其中,上述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为上述第一视图值,并将上述2f+1个第一视图变更请求汇总为上述视图值凭证的节点;第二控制模块,用于控制上述目标集群除上述第一节点外的每一个节点在接收到上述视图值凭证后将本地的视图值更新为上述第一视图值;第三控制模块,用于控制上述目标集群的第二节点构造第一视图值的第一新视图消息,并广播上述第一新视图消息,其中,上述第二节点为上述第一视图值对应的第一新视图的主节点;第一处理模块,用于在上述目标集群除上述第二节点外的每一个节点都收到上述第一新视图消息后,上述目标集群进入上述第一新视图。
作为一种可选的示例,上述第一控制模块包括:第一控制单元,用于在上述目标集群中出现f个节点宕机的情况下,控制上述目标集群的每一个节点广播上述第一视图变更请求;确定单元,用于在第一预设时间后,上述目标集群中存在第三节点未收到2f+1个上述第一视图变更请求的情况下,确定上述目标集群出现视图分叉,其中,上述第三节点为上述目标集群除上述第一节点外的任意一个节点。
作为一种可选的示例,上述装置还包括:第四控制模块,用于在控制上述目标集群的第二节点构造第一视图值的第一新视图消息,并广播上述第一新视图消息之后,在第二预设时间后,上述目标集群中存在第四节点未收到上述第一新视图消息的情况下,控制上述目标集群除上述第二节点外的所有节点广播第二视图值的第二视图变更请求,其中,上述第四节点为上述目标集群除上述第二节点外的任意一个节点,上述第二视图值为上述第一视图值的下一个视图值;第五控制模块,用于在上述第二节点收到f+1个上述第二视图变更请求后,控制上述第二节点广播上述第二视图变更请求;第六控制模块,用于在上述目标集群的第五节点收到2f+1个上述第二视图变更请求后,控制上述第五节点将本地的视图值更新为上述第二视图值,其中,上述第五节点为上述目标集群的任意一个节点;第七控制模块,用于控制上述目标集群的第六节点构造第二视图值的第二新视图消息,并广播上述第二新视图消息,其中,上述第六节点为上述第二视图值对应的第二新视图的主节点;第二处理模块,用于在上述目标集群除上述第六节点外的每一个节点都收到上述第二新视图消息后,上述目标集群进入上述第二新视图。
作为一种可选的示例,上述第一控制模块包括:第二控制单元,用于控制上述目标集群除上述第一节点外的每一个节点向上述第一节点发送上述视图索要消息;第三控制单元,用于在第七节点的当前视图值小于上述第一视图值的情况下,控制上述第一节点将上述视图值凭证发送至上述第七节点,其中,上述第七节点为上述目标集群除上述第一节点外的任意一个节点;第四控制单元,用于在上述第七节点的当前视图值大于或等于上述第一视图值的情况下,控制上述第一节点忽略上述第七节点发出的上述视图索要消息。
作为一种可选的示例,上述装置还包括:第一验证模块,用于在控制上述目标集群除上述第一节点外的每一个节点在接收到上述视图值凭证后将本地的视图值更新为上述第一视图值之前,验证上述视图值凭证;第八控制模块,用于在上述视图值凭证未被验证通过的情况下,控制上述目标集群除上述第一节点外的每一个节点忽略上述视图值凭证。
作为一种可选的示例,上述装置还包括:第二验证模块,用于在控制上述目标集群的第二节点构造第一视图值的第一新视图消息,并广播上述第一新视图消息之后,验证上述第一新视图消息;第九控制模块,用于在上述第一新视图消息未被验证通过的情况下,控制上述目标集群除上述第二节点外的每一个节点忽略上述第一新视图消息。
作为一种可选的示例,上述装置还包括:删除模块,用于在上述目标集群进入上述第一新视图之后,或在上述目标集群进入上述第二新视图之后,控制上述第一节点删除上述视图值凭证。
第三方面,本申请提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述集群视图分叉后的自主恢复方法。
第四方面,本申请还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的集群视图分叉后的自主恢复方法。
在本申请实施例中,采用了在目标集群的当前视图出现视图分叉的情况下,若上述目标集群中存在第一节点,则控制上述目标集群除上述第一节点外的每一个节点向上述第一节点发送视图索要消息,以使上述第一节点广播视图值凭证,其中,上述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为上述第一视图值,并将上述2f+1个第一视图变更请求汇总为上述视图值凭证的节点;控制上述目标集群除上述第一节点外的每一个节点在接收到上述视图值凭证后将本地的视图值更新为上述第一视图值;控制上述目标集群的第二节点构造第一视图值的第一新视图消息,并广播上述第一新视图消息,其中,上述第二节点为上述第一视图值对应的第一新视图的主节点;在上述目标集群除上述第二节点外的每一个节点都收到上述第一新视图消息后,上述目标集群进入上述第一新视图的方法,由于在上述方法中,当目标集群出现视图分叉后,目标集群的第一节点在收集到2f+1个视图值一致的第一视图值的第一视图变更请求时,将这些第一视图变更请求作为视图值凭证缓存在内存中,当其他节点视图值落后时,第一节点会选择主动或者被动地传递上述视图值凭证,因此,视图值落后的节点可以通过上述视图值凭证自主完成视图值的更新,使得目标集群进入到第一视图值的第一新视图。从而实现了目标集群完成集群视图的分叉恢复的目的,进而解决了PBFT算法中集群视图分叉后无法自主恢复的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本申请实施例的一种可选的集群视图分叉后的自主恢复方法的流程图;
图2是根据本申请实施例的一种可选的集群视图分叉后的自主恢复装置的结构示意图;
图3是根据本申请实施例的一种可选的电子设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下文的公开提供了许多不同的实施例或例子用来实现本申请的不同结构。为了简化本申请的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。
根据本申请实施例的第一方面,提供了一种集群视图分叉后的自主恢复方法,可选地,如图1所示,上述方法包括:
S102,在目标集群的当前视图出现视图分叉的情况下,若目标集群中存在第一节点,则控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息,以使第一节点广播视图值凭证,其中,第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为第一视图值,并将2f+1个第一视图变更请求汇总为视图值凭证的节点;
S104,控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值;
S106,控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息,其中,第二节点为第一视图值对应的第一新视图的主节点;
S108,在目标集群除第二节点外的每一个节点都收到第一新视图消息后,目标集群进入第一新视图。
可选地,本实施例中,在视图变更过程中,尝试变更的节点会广播视图变更请求ViewChange,表明自己期望进入的新的视图值,视图变更请求结构体中包含的内容如下表1所示:
表1
当节点收到了2f+1个视图值一致的视图变更请求后,需要将其作为最新的视图值凭证QuorumViewChange进行缓存记录,此时虽然还没有完成视图变更,但是该视图值凭证可以帮助视图落后的节点推进视图,视图值凭证消息结构体中包含的内容如下表2所示:
表2
当节点顺利完成了视图变更后,需要持久化一个最新的新视图消息结构体,帮助视图落后的节点直接同步至新视图对应的视图中,新视图消息结构体中包含的内容如下表3所示:
表3
视图落后的节点需要不断尝试获取最新的视图值凭证QuorumViewChange从而推进其视图,或者获取到最新的新视图直接进入一个新的稳定视图。因此,需要新增一个视图索要消息结构体进行视图值凭证或者新视图的主动获取,视图索要消息结构体中包含的内容如下表4所示:
表4
可选地,本实施例中,当目标集群已经存在f个节点的宕机,并且剩余的2f+1个节点的视图值已经发生了视图分叉,即目标集群中已经不存在2f+1个视图值一致的运行节点了,同时网络出现断开,导致剩余的2f+1个节点之间网络断开,需要促成这2f+1个运行节点自主恢复至一个一致的稳定视图。一段时间后,目标集群的第一节点与其他所有节点恢复网络连接,第一节点与其他所有节点互相发送第一视图值的第一视图变更请求,第一节点可以接收到2f+1个第一视图值的第一视图变更请求,因此第一节点将这2f+1个第一视图值的第一视图变更请求汇总为视图值凭证,其中,第一节点可以为至少一个。剩余其他节点因网络未恢复,未能接收到2f+1个第一视图值的第一视图变更请求,则向第一节点发送视图索要消息,以使第一节点返回视图值凭证。在其他节点接收到视图值凭证后,将本地的视图值更新为第一视图值。随后确定新视图的主节点,如果第二节点是新视图中的主节点,则构造第一视图值的第一新视图消息,并广播第一新视图消息,若此时所有节点之间的网络恢复,则除第二节点外的所有节点均可收到第一新视图消息,目标集群进入第一视图值对应的第一新视图,从而实现了目标集群完成集群视图的分叉后自主恢复的目的,进而解决了PBFT算法中集群视图分叉后无法自主恢复的技术问题。
作为一种可选的示例,目标集群出现视图分叉包括:
在目标集群中出现f个节点宕机的情况下,控制目标集群的每一个节点广播第一视图变更请求;
在第一预设时间后,目标集群中存在第三节点未收到2f+1个第一视图变更请求的情况下,确定目标集群出现视图分叉,其中,第三节点为目标集群除第一节点外的任意一个节点。
可选地,本实施例中,当目标集群已经存在f个节点的宕机,剩余的2f+1个节点广播第一视图值的第一视图变更请求,但由于网络断开,导致剩余的2f+1个节点中存在第三节点未收到2f+1个第一视图变更请求,无法更新本地的视图值,目标集群出现视图分叉。
作为一种可选的示例,在控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息之后,上述方法还包括:
在第二预设时间后,目标集群中存在第四节点未收到第一新视图消息的情况下,控制目标集群除第二节点外的所有节点广播第二视图值的第二视图变更请求,其中,第四节点为目标集群除第二节点外的任意一个节点,第二视图值为第一视图值的下一个视图值;
在第二节点收到f+1个第二视图变更请求后,控制第二节点广播第二视图变更请求;
在目标集群的第五节点收到2f+1个第二视图变更请求后,控制第五节点将本地的视图值更新为第二视图值,其中,第五节点为目标集群的任意一个节点;
控制目标集群的第六节点构造第二视图值的第二新视图消息,并广播第二新视图消息,其中,第六节点为第二视图值对应的第二新视图的主节点;
在目标集群除第六节点外的每一个节点都收到第二新视图消息后,目标集群进入第二新视图。
可选地,本实施例中,在确定第一新视图的主节点第二节点,第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息后,若此时仍存在节点未恢复网络,在第二预设时间后,存在第四节点未收到第一新视图消息,目标集群除第二节点外的所有节点广播第二视图值的第二视图变更请求,请求进入到下一个新视图,其中,第二视图值为第一视图值加一得到的。在一段时间后,恢复网络,在第一预设时间后,除第二节点外的所有节点再次广播第二视图值的第二视图变更请求,此时第二节点发现集群中有f+1个节点广播第二视图变更请求,因此也会广播第二视图变更请求,此时目标集群中的所有节点均收到了2f+1个第二视图变更请求,于是将本地的视图值更新为第二视图值,并确定出第六节点为第二新视图的主节点,第六节点构造第二视图值的第二新视图消息,并广播第二新视图消息。除第六节点外的每一个节点都收到第二新视图消息后,目标集群进入第二新视图。
作为一种可选的示例,控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息,以使第一节点广播视图值凭证包括:
控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息;
在第七节点的当前视图值小于第一视图值的情况下,控制第一节点将视图值凭证发送至第七节点,其中,第七节点为目标集群除第一节点外的任意一个节点;
在第七节点的当前视图值大于或等于第一视图值的情况下,控制第一节点忽略第七节点发出的视图索要消息。
可选地,本实施例中,当节点收到来自其他节点的任意共识消息(包括视图变更消息)时,判断对端节点的视图值(remote view)是否大于本地的视图值(current view),如果remote view 大于 current view,则将对端节点的ID记录到内存higherViewCache中,当节点处于视图变更状态时,会不断以第三预设时间为周期,向higherViewCache中的所有节点发送视图索要请求消息。当节点收到来自其他节点的视图索要请求消息时,首先判断本地的当前视图值是否大于请求节点的视图值,如果不是的话,则直接忽略该消息;如果是的话,则按照如下策略给请求节点响应消息:若本地存在视图值凭证QuorumViewChange,则说明本节点处在视图变更的过程中,但是还未完后视图变更,直接将QuorumViewChange返回给请求节点;若本地不存在视图值凭证QuorumViewChange,则说明本节点已经完成了视图变更,直接将最新的新视图返回给请求节点。
作为一种可选的示例,在控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值之前,上述方法还包括:
验证视图值凭证;
在视图值凭证未被验证通过的情况下,控制目标集群除第一节点外的每一个节点忽略视图值凭证。
可选地,本实施例中,当节点收到视图值凭证QuorumViewChange消息时,判断其中视图变更列表的合法性,包括签名是否合法,视图值是否大于本地视图值,如果判断为非法的话,即未被验证通过,则直接忽略该消息;如果判断为合法的话,则逐一遍历处理其中的视图变更消息,由于QuorumViewChange中包含了2f+1个合法的视图变更消息,因此可以帮助本节点推进到新的视图值。
作为一种可选的示例,在控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息之后,上述方法还包括:
验证第一新视图消息;
在第一新视图消息未被验证通过的情况下,控制目标集群除第二节点外的每一个节点忽略第一新视图消息。
可选地,本实施例中,验证第一新视图消息中的ViewChangeSet是否是一个合法的视图值凭证,如果不是的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。节点随后验证第一新视图消息的签名是否合法,如果非法的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。节点最后按照PBFT算法内置的逻辑,验证新视图中的XSet是否合法,如果非法的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。
作为一种可选的示例,在目标集群进入第一新视图之后,或在目标集群进入第二新视图之后,上述方法还包括:
控制第一节点删除视图值凭证。
可选地,本实施例中,在目标集群进入第一新视图之后,或在目标集群进入第二新视图之后,第一节点删除本地的QuorumViewChange视图值凭证,开始新一轮的共识。
结合一种示例进行说明,本申请涉及一种集群视图分叉后的自主恢复方法,本方法的整体思路是让节点在发送ViewChange消息时附带上数字签名,并在收集到2f+1个视图值一致的ViewChange时将这些ViewChange消息作为视图值凭证QuorumViewChange缓存在内存中,当其他节点因为丢失了若干个ViewChange消息导致于视图值落后时,本节点会选择主动或者被动地传递上述视图值凭证。由于每一个ViewChange消息中的数字签名是可验证的,因此,视图值落后的节点也可以通过上述凭证重新接收并处理其中所有的ViewChange消息,自主完成视图值的更新,从而解决了视图分叉的问题。
可选地,当目标集群中出现f个节点(node4节点)宕机,剩余的3个节点(node1、node2、node3)之间的网络全部断开:
步骤一、一段时间后,node1连上node2,由于主节点心跳超时,node1与node2之间互相发送了ViewChange请求,请求切换到视图1,即视图值为1;
步骤二、一段时间后,node1连上node3,由于主节点心跳超时,node1与node3之间互相发送了ViewChange请求,请求切换到视图1,即视图值为1。此时,node1能够收集到node1、node2、node3这3个节点的ViewChange请求,达到了2f+1个ViewChange请求的条件,因此node1更新QuorumViewChange到视图值为1的视图1,并且等待新视图中主节点(node2)的新视图消息。然而,node2仅能收集到node1、node2这2个节点的ViewChange请求,没有达到2f+1个ViewChange请求的条件,也就无法更新QuorumViewChange;同样的,node3仅能收集到node1、node3这2个节点的ViewChange请求,没有达到2f+1个ViewChange请求的条件,也就无法更新QuorumViewChange;
步骤三、一段时间后,node1第二预设时间(新视图超时时间)到达,但是此时新视图主节点node2还没有收到2f+1个ViewChange消息,也就无法按时发出新视图消息,因此node1无法在第二预设时间内收到node2的新视图消息,此时node1会请求切换到下一个视图2,即视图值为2;
步骤四、node2与node3在收到node1的视图值为2的ViewChange消息时,将node1记录到各自的higherViewCache中,当node2与node3的第三预设时间到达后,会分别向node1发送视图索要消息,请求最新的视图值凭证;
步骤五、node1在收到视图索要请求后,分别向node2与node3返回自己的视图值凭证,视图值为1;
步骤六、node2与node3在收到视图值凭证后,首先更新本地的最新视图值凭证,随后依次处理其中的ViewChange消息。此时,node2收到了2f+1个视图值为1的ViewChange消息,发现自己是视图值1的主节点,因此构造新视图消息广播给其他所有节点;
步骤七、node1收到来自node2的新视图消息,但是此时node1期望的是视图值为2的新视图消息,因此忽略新视图消息;而此时的node3还未连上node2,因此无法收到新视图消息;
步骤八、一段时间后,node3第二预设时间(新视图超时时间)到达,但是此时它无法收到来自node2的新视图消息,此时node3会请求切换到下一个视图2,即视图值为2;
步骤九、一段时间后,node2连上node3。此时,集群中有2f+1(=3)个节点(node1、node2、node3)之间的网络完成了互连;
步骤十、node1与node3的第一预设时间T1到达,分别重发视图值为2的ViewChange消息,node2发现目标集群中有f+1个节点发送视图值为2的ViewChange消息,因此也会跟进发送视图值为2的ViewChange消息;
步骤十一、node3发现有2f+1个节点尝试发送视图值为2的ViewChange消息,尝试切换到视图值2,而node3正好是视图值2的主节点,因此顺利构造视图值2的新视图,并广播给node1与node2;
步骤十二、node1与node2收到视图值2的新视图后,进入稳定视图值2,开始新一轮的共识。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一方面,还提供了一种集群视图分叉后的自主恢复装置,如图2所示,包括:
第一控制模块202,用于在目标集群的当前视图出现视图分叉的情况下,若目标集群中存在第一节点,则控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息,以使第一节点广播视图值凭证,其中,第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为第一视图值,并将2f+1个第一视图变更请求汇总为视图值凭证的节点;
第二控制模块204,用于控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值;
第三控制模块206,用于控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息,其中,第二节点为第一视图值对应的第一新视图的主节点;
第一处理模块208,用于在目标集群除第二节点外的每一个节点都收到第一新视图消息后,目标集群进入第一新视图。
可选地,本实施例中,在视图变更过程中,尝试变更的节点会广播视图变更请求ViewChange,表明自己期望进入的新的视图值,视图变更请求结构体中包含的内容如下表1所示:
当节点收到了2f+1个视图值一致的视图变更请求后,需要将其作为最新的视图值凭证QuorumViewChange进行缓存记录,此时虽然还没有完成视图变更,但是该视图值凭证可以帮助视图落后的节点推进视图,视图值凭证消息结构体中包含的内容如下表2所示:
当节点顺利完成了视图变更后,需要持久化一个最新的新视图消息结构体,帮助视图落后的节点直接同步至新视图对应的视图中,新视图消息结构体中包含的内容如下表3所示:
视图落后的节点需要不断尝试获取最新的视图值凭证QuorumViewChange从而推进其视图,或者获取到最新的新视图直接进入一个新的稳定视图。因此,需要新增一个视图索要消息结构体进行视图值凭证或者新视图的主动获取,视图索要消息结构体中包含的内容如下表4所示:
可选地,本实施例中,当目标集群已经存在f个节点的宕机,并且剩余的2f+1个节点的视图值已经发生了视图分叉,即目标集群中已经不存在2f+1个视图值一致的运行节点了,同时网络出现断开,导致剩余的2f+1个节点之间网络断开,需要促成这2f+1个运行节点自主恢复至一个一致的稳定视图。一段时间后,目标集群的第一节点与其他所有节点恢复网络连接,第一节点与其他所有节点互相发送第一视图值的第一视图变更请求,第一节点可以接收到2f+1个第一视图值的第一视图变更请求,因此第一节点将这2f+1个第一视图值的第一视图变更请求汇总为视图值凭证,其中,第一节点可以为至少一个。剩余其他节点因网络未恢复,未能接收到2f+1个第一视图值的第一视图变更请求,则向第一节点发送视图索要消息,以使第一节点返回视图值凭证。在其他节点接收到视图值凭证后,将本地的视图值更新为第一视图值。随后确定新视图的主节点,如果第二节点是新视图中的主节点,则构造第一视图值的第一新视图消息,并广播第一新视图消息,若此时所有节点之间的网络恢复,则除第二节点外的所有节点均可收到第一新视图消息,目标集群进入第一视图值对应的第一新视图,从而实现了目标集群完成集群视图的分叉后自主恢复的目的,进而解决了PBFT算法中集群视图分叉后无法自主恢复的技术问题。
作为一种可选的示例,第一控制模块包括:
第一控制单元,用于在目标集群中出现f个节点宕机的情况下,控制目标集群的每一个节点广播第一视图变更请求;
确定单元,用于在第一预设时间后,目标集群中存在第三节点未收到2f+1个第一视图变更请求的情况下,确定目标集群出现视图分叉,其中,第三节点为目标集群除第一节点外的任意一个节点。
可选地,本实施例中,当目标集群已经存在f个节点的宕机,剩余的2f+1个节点广播第一视图值的第一视图变更请求,但由于网络断开,导致剩余的2f+1个节点中存在第三节点未收到2f+1个第一视图变更请求,无法更新本地的视图值,目标集群出现视图分叉。
作为一种可选的示例,上述装置还包括:
第四控制模块,用于在控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息之后,在第二预设时间后,目标集群中存在第四节点未收到第一新视图消息的情况下,控制目标集群除第二节点外的所有节点广播第二视图值的第二视图变更请求,其中,第四节点为目标集群除第二节点外的任意一个节点,第二视图值为第一视图值的下一个视图值;
第五控制模块,用于在第二节点收到f+1个第二视图变更请求后,控制第二节点广播第二视图变更请求;
第六控制模块,用于在目标集群的第五节点收到2f+1个第二视图变更请求后,控制第五节点将本地的视图值更新为第二视图值,其中,第五节点为目标集群的任意一个节点;
第七控制模块,用于控制目标集群的第六节点构造第二视图值的第二新视图消息,并广播第二新视图消息,其中,第六节点为第二视图值对应的第二新视图的主节点;
第二处理模块,用于在目标集群除第六节点外的每一个节点都收到第二新视图消息后,目标集群进入第二新视图。
可选地,本实施例中,在确定第一新视图的主节点第二节点,第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息后,若此时仍存在节点未恢复网络,在第二预设时间后,存在第四节点未收到第一新视图消息,目标集群除第二节点外的所有节点广播第二视图值的第二视图变更请求,请求进入到下一个新视图,其中,第二视图值为第一视图值加一得到的。在一段时间后,恢复网络,在第一预设时间后,除第二节点外的所有节点再次广播第二视图值的第二视图变更请求,此时第二节点发现集群中有f+1个节点广播第二视图变更请求,因此也会广播第二视图变更请求,此时目标集群中的所有节点均收到了2f+1个第二视图变更请求,于是将本地的视图值更新为第二视图值,并确定出第六节点为第二新视图的主节点,第六节点构造第二视图值的第二新视图消息,并广播第二新视图消息。除第六节点外的每一个节点都收到第二新视图消息后,目标集群进入第二新视图。
作为一种可选的示例,第一控制模块包括:
第二控制单元,用于控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息;
第三控制单元,用于在第七节点的当前视图值小于第一视图值的情况下,控制第一节点将视图值凭证发送至第七节点,其中,第七节点为目标集群除第一节点外的任意一个节点;
第四控制单元,用于在第七节点的当前视图值大于或等于第一视图值的情况下,控制第一节点忽略第七节点发出的视图索要消息。
可选地,本实施例中,当节点收到来自其他节点的任意共识消息(包括视图变更消息)时,判断对端节点的视图值(remote view)是否大于本地的视图值(current view),如果remote view 大于 current view,则将对端节点的ID记录到内存higherViewCache中,当节点处于视图变更状态时,会不断以第三预设时间为周期,向higherViewCache中的所有节点发送视图索要请求消息。当节点收到来自其他节点的视图索要请求消息时,首先判断本地的当前视图值是否大于请求节点的视图值,如果不是的话,则直接忽略该消息;如果是的话,则按照如下策略给请求节点响应消息:若本地存在视图值凭证QuorumViewChange,则说明本节点处在视图变更的过程中,但是还未完后视图变更,直接将QuorumViewChange返回给请求节点;若本地不存在视图值凭证QuorumViewChange,则说明本节点已经完成了视图变更,直接将最新的新视图返回给请求节点。
作为一种可选的示例,上述装置还包括:
第一验证模块,用于在控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值之前,验证视图值凭证;
第八控制模块,用于在视图值凭证未被验证通过的情况下,控制目标集群除第一节点外的每一个节点忽略视图值凭证。
可选地,本实施例中,当节点收到视图值凭证QuorumViewChange消息时,判断其中视图变更列表的合法性,包括签名是否合法,视图值是否大于本地视图值,如果判断为非法的话,即未被验证通过,则直接忽略该消息;如果判断为合法的话,则逐一遍历处理其中的视图变更消息,由于QuorumViewChange中包含了2f+1个合法的视图变更消息,因此可以帮助本节点推进到新的视图值。
作为一种可选的示例,上述装置还包括:
第二验证模块,用于在控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息之后,验证第一新视图消息;
第九控制模块,用于在第一新视图消息未被验证通过的情况下,控制目标集群除第二节点外的每一个节点忽略第一新视图消息。
可选地,本实施例中,验证第一新视图消息中的ViewChangeSet是否是一个合法的视图值凭证,如果不是的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。节点随后验证第一新视图消息的签名是否合法,如果非法的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。节点最后按照PBFT算法内置的逻辑,验证新视图中的XSet是否合法,如果非法的话,则认为新视图中的主节点第二节点仍然存在故障,开始新一轮的视图变更(新一轮视图变更的期望视图值会比本轮的期望视图值高1)。
作为一种可选的示例,上述装置还包括:
删除模块,用于在目标集群进入第一新视图之后,或在目标集群进入第二新视图之后,控制第一节点删除视图值凭证。
可选地,本实施例中,在目标集群进入第一新视图之后,或在目标集群进入第二新视图之后,第一节点删除本地的QuorumViewChange视图值凭证,开始新一轮的共识。
本实施例的其他示例请参见上述示例,在此不在赘述。
图3是根据本申请实施例的一种可选的电子设备的示意图,如图3所示,包括处理器302、通信接口304、存储器306和通信总线308,其中,处理器302、通信接口304和存储器306通过通信总线308完成相互间的通信,其中,
存储器306,用于存储计算机程序;
处理器302,用于执行存储器306上所存放的计算机程序时,实现如下步骤:
在目标集群的当前视图出现视图分叉的情况下,若目标集群中存在第一节点,则控制目标集群除第一节点外的每一个节点向第一节点发送视图索要消息,以使第一节点广播视图值凭证,其中,所述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为所述第一视图值,并将所述2f+1个第一视图变更请求汇总为所述视图值凭证的节点;
控制目标集群除第一节点外的每一个节点在接收到视图值凭证后将本地的视图值更新为第一视图值;
控制目标集群的第二节点构造第一视图值的第一新视图消息,并广播第一新视图消息,其中,第二节点为第一视图值对应的第一新视图的主节点;
在目标集群除第二节点外的每一个节点都收到第一新视图消息后,目标集群进入第一新视图。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA (Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器306中可以但不限于包括上述集群视图分叉后的自主恢复装置中的第一控制模块202、第二控制模块204、第三控制模块206以及第一处理模块208。此外,还可以包括但不限于上述集群视图分叉后的自主恢复装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图3所示的结构仅为示意,实施上述集群视图分叉后的自主恢复方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图3并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图3中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图3所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述集群视图分叉后的自主恢复方法中的步骤。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种集群视图分叉后的自主恢复方法,其特征在于,包括:
在目标集群的当前视图出现视图分叉的情况下,若所述目标集群中存在第一节点,则控制所述目标集群除所述第一节点外的每一个节点向所述第一节点发送视图索要消息,以使所述第一节点广播视图值凭证,其中,所述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为所述第一视图值,并将所述2f+1个第一视图变更请求汇总为所述视图值凭证的节点;
控制所述目标集群除所述第一节点外的每一个节点在接收到所述视图值凭证后将本地的视图值更新为所述第一视图值;
控制所述目标集群的第二节点构造第一视图值的第一新视图消息,并广播所述第一新视图消息,其中,所述第二节点为所述第一视图值对应的第一新视图的主节点;
在所述目标集群除所述第二节点外的每一个节点都收到所述第一新视图消息后,所述目标集群进入所述第一新视图。
2.根据权利要求1所述的方法,其特征在于,所述目标集群出现视图分叉包括:
在所述目标集群中出现f个节点宕机的情况下,控制所述目标集群的每一个节点广播所述第一视图变更请求;
在第一预设时间后,所述目标集群中存在第三节点未收到2f+1个所述第一视图变更请求的情况下,确定所述目标集群出现视图分叉,其中,所述第三节点为所述目标集群除所述第一节点外的任意一个节点。
3.根据权利要求1所述的方法,其特征在于,在控制所述目标集群的第二节点构造第一视图值的第一新视图消息,并广播所述第一新视图消息之后,所述方法还包括:
在第二预设时间后,所述目标集群中存在第四节点未收到所述第一新视图消息的情况下,控制所述目标集群除所述第二节点外的所有节点广播第二视图值的第二视图变更请求,其中,所述第四节点为所述目标集群除所述第二节点外的任意一个节点,所述第二视图值为所述第一视图值的下一个视图值;
在所述第二节点收到f+1个所述第二视图变更请求后,控制所述第二节点广播所述第二视图变更请求;
在所述目标集群的第五节点收到2f+1个所述第二视图变更请求后,控制所述第五节点将本地的视图值更新为所述第二视图值,其中,所述第五节点为所述目标集群的任意一个节点;
控制所述目标集群的第六节点构造第二视图值的第二新视图消息,并广播所述第二新视图消息,其中,所述第六节点为所述第二视图值对应的第二新视图的主节点;
在所述目标集群除所述第六节点外的每一个节点都收到所述第二新视图消息后,所述目标集群进入所述第二新视图。
4.根据权利要求1所述的方法,其特征在于,所述控制所述目标集群除所述第一节点外的每一个节点向所述第一节点发送视图索要消息,以使所述第一节点广播视图值凭证广播包括:
控制所述目标集群除所述第一节点外的每一个节点向所述第一节点发送所述视图索要消息;
在第七节点的当前视图值小于所述第一视图值的情况下,控制所述第一节点将所述视图值凭证发送至所述第七节点,其中,所述第七节点为所述目标集群除所述第一节点外的任意一个节点;
在所述第七节点的当前视图值大于或等于所述第一视图值的情况下,控制所述第一节点忽略所述第七节点发出的所述视图索要消息。
5.根据权利要求1所述的方法,其特征在于,在控制所述目标集群除所述第一节点外的每一个节点在接收到所述视图值凭证后将本地的视图值更新为所述第一视图值之前,所述方法还包括:
验证所述视图值凭证;
在所述视图值凭证未被验证通过的情况下,控制所述目标集群除所述第一节点外的每一个节点忽略所述视图值凭证。
6.根据权利要求1所述的方法,其特征在于,在控制所述目标集群的第二节点构造第一视图值的第一新视图消息,并广播所述第一新视图消息之后,所述方法还包括:
验证所述第一新视图消息;
在所述第一新视图消息未被验证通过的情况下,控制所述目标集群除所述第二节点外的每一个节点忽略所述第一新视图消息。
7.根据权利要求3所述的方法,其特征在于,在所述目标集群进入所述第一新视图之后,或在所述目标集群进入所述第二新视图之后,所述方法还包括:
控制所述第一节点删除所述视图值凭证。
8.一种集群视图分叉后的自主恢复装置,其特征在于,包括:
第一控制模块,用于在目标集群的当前视图出现视图分叉的情况下,若所述目标集群中存在第一节点,则控制所述目标集群除所述第一节点外的每一个节点向所述第一节点发送视图索要消息,以使所述第一节点广播视图值凭证,其中,所述第一节点为在接收到2f+1个第一视图值的第一视图变更请求后,将本地的视图值更新为所述第一视图值,并将所述2f+1个第一视图变更请求汇总为所述视图值凭证的节点;
第二控制模块,用于控制所述目标集群除所述第一节点外的每一个节点在接收到所述视图值凭证后将本地的视图值更新为所述第一视图值;
第三控制模块,用于控制所述目标集群的第二节点构造第一视图值的第一新视图消息,并广播所述第一新视图消息,其中,所述第二节点为所述第一视图值对应的第一新视图的主节点;
第一处理模块,用于在所述目标集群除所述第二节点外的每一个节点都收到所述第一新视图消息后,所述目标集群进入所述第一新视图。
9.一种计算机可读的存储介质,所述计算机可读的存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。
CN202311187039.4A 2023-09-14 2023-09-14 集群视图分叉后的自主恢复方法、装置以及电子设备 Active CN116915796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311187039.4A CN116915796B (zh) 2023-09-14 2023-09-14 集群视图分叉后的自主恢复方法、装置以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311187039.4A CN116915796B (zh) 2023-09-14 2023-09-14 集群视图分叉后的自主恢复方法、装置以及电子设备

Publications (2)

Publication Number Publication Date
CN116915796A CN116915796A (zh) 2023-10-20
CN116915796B true CN116915796B (zh) 2023-12-12

Family

ID=88363411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311187039.4A Active CN116915796B (zh) 2023-09-14 2023-09-14 集群视图分叉后的自主恢复方法、装置以及电子设备

Country Status (1)

Country Link
CN (1) CN116915796B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019072263A2 (en) * 2018-11-07 2019-04-18 Alibaba Group Holding Limited FACILITATION OF BLOCK CHAIN CONSENSUS AND NODE SYNCHRONIZATION FOR PRACTICAL TOLERANCE TO ARBITRARY FAILURES
CN110336707A (zh) * 2019-08-07 2019-10-15 卓尔智联(武汉)研究院有限公司 区块链共识装置、方法及计算机可读存储介质
CN111130879A (zh) * 2019-12-24 2020-05-08 杭州趣链科技有限公司 一种基于pbft算法的集群异常恢复方法
CN112600678A (zh) * 2021-03-02 2021-04-02 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备及存储介质
CN114422513A (zh) * 2022-01-19 2022-04-29 重庆邮电大学 一种基于Raft-PBFT的区块链共识方法
CN116455685A (zh) * 2023-04-26 2023-07-18 浙江大学 一种在广播网络下的pbft改进共识方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110785966B (zh) * 2019-03-18 2022-08-26 创新先进技术有限公司 用于结束视图更改协议的系统和方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019072263A2 (en) * 2018-11-07 2019-04-18 Alibaba Group Holding Limited FACILITATION OF BLOCK CHAIN CONSENSUS AND NODE SYNCHRONIZATION FOR PRACTICAL TOLERANCE TO ARBITRARY FAILURES
CN110336707A (zh) * 2019-08-07 2019-10-15 卓尔智联(武汉)研究院有限公司 区块链共识装置、方法及计算机可读存储介质
CN111130879A (zh) * 2019-12-24 2020-05-08 杭州趣链科技有限公司 一种基于pbft算法的集群异常恢复方法
CN115632933A (zh) * 2019-12-24 2023-01-20 杭州趣链科技有限公司 一种基于pbft算法的集群异常恢复方法
CN112600678A (zh) * 2021-03-02 2021-04-02 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备及存储介质
CN114422513A (zh) * 2022-01-19 2022-04-29 重庆邮电大学 一种基于Raft-PBFT的区块链共识方法
CN116455685A (zh) * 2023-04-26 2023-07-18 浙江大学 一种在广播网络下的pbft改进共识方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种区块链实用拜占庭容错算法的改进;韩镇阳;宫宁生;任珈民;;计算机应用与软件(02);全文 *
一种改进的多视图聚类集成算法;邓强;杨燕;王浩;;计算机科学(01);全文 *

Also Published As

Publication number Publication date
CN116915796A (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
CN109189751B (zh) 基于区块链的数据同步方法及终端设备
US11237896B2 (en) Distributed system, message processing method, nodes, client, and storage medium
CN109417691B (zh) 一种蓝牙集群在线升级方法及装置
CN111258822B (zh) 数据处理方法、服务器和计算机可读存储介质
CN107864228B (zh) 一种内容分发网络中的连接建立方法及系统
JP4087271B2 (ja) 代理応答装置およびネットワークシステム
CN112118315A (zh) 数据处理系统、方法、装置、电子设备和存储介质
CN112069169B (zh) 区块数据存储方法、装置、电子设备及可读存储介质
WO2021068919A1 (zh) 基于pbft算法改进的单节点异常主动恢复方法、系统、设备和介质
CN114070733B (zh) 一种基于区块链网络的共识方法、装置及系统
CN110889143B (zh) 文件校验方法及装置
CN114268565A (zh) 终端设备及其心跳包发送间隔的探测方法、存储介质
CN109561054B (zh) 一种数据传输方法、控制器及接入设备
CN116915796B (zh) 集群视图分叉后的自主恢复方法、装置以及电子设备
WO2014032553A1 (zh) 一种网络资源管理方法、装置、客户端及系统
CN114760198B (zh) 一种基于区块链网络的共识方法、装置及系统
CN112367373B (zh) 分布式系统的节点确定方法和装置及存储介质
CN112434105A (zh) 区块链存储的数据持续保存的方法、系统、设备及介质
CN111400095A (zh) 一种集群以及异常断电重启集群的方法、系统以及介质
CN111190754A (zh) 一种区块链事件通知方法及区块链系统
CN115277379B (zh) 分布式锁容灾处理方法、装置、电子设备及存储介质
CN111314465B (zh) 弱网环境通讯方法、装置和电子设备
CN116991623B (zh) 区块链节点异常恢复方法、装置、电子设备及存储介质
CN113872961B (zh) 一种区块链的共识方法、共识节点及电子设备
JP3056075B2 (ja) ネットワークパスの切断・再接続方式

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