电子装置、区块链共识的方法及存储介质与流程

文档序号:18642216发布日期:2019-09-11 23:35阅读:183来源:国知局
电子装置、区块链共识的方法及存储介质与流程

本发明涉及区块链技术领域,尤其涉及一种电子装置、区块链共识的方法及存储介质。



背景技术:

区块链一般被理解为一个分布式账本,它的本质也是一个分布式的数据库。联盟区块链与普通区块链的区别是可以提供更高效的交易性能,参与节点数也相对较少。一般来说,联盟区块链需要参与机构进行多机房异地部署。目前,在联盟链的部署场景中,如果发生机房毁坏或宕机的情况,则该机房的交易数据无法共识以同步给异地机房,这样容易导致交易数据的丢失,造成链的分叉,联盟区块链交易无法正常执行。



技术实现要素:

本发明的目的在于提供一种电子装置、区块链共识的方法及存储介质,旨在实现对联盟链多机房异地部署的灾备补救。

为实现上述目的,本发明提供一种电子装置,所述电子装置包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:

当集群中的主共识节点在共识完成区块,分别向其他集群中的主共识节点发送是否共识完成该区块的确认请求后,若在预定的第一时间内未接收到基于该确认请求对应的确认消息,则向未接收到确认消息对应的集群的主共识节点发送心跳请求,其中,将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点;

若在预定的第二时间内未接收到该集群基于该心跳请求的心跳响应,则该未进行心跳响应的集群发生机房宕机,启用本集群中的备用共识节点作为发生机房宕机的集群的主共识节点进行共识服务,以对区块进行共识;

当接收到发生机房宕机的集群发送的恢复运行的恢复消息后,关闭作为该恢复运行的集群的主共识节点的备用共识节点的共识服务,并控制该备用共识节点与该恢复运行的集群的主共识节点同步增量区块数据。

优选地,所述处理系统被所述处理器执行时,还实现如下步骤:

当有集群中的主共识节点发生宕机,将该集群中的一个备用共识节点设置为主共识节点,以进行共识服务;

当该发生宕机的主共识节点恢复运行后,向该备用共识节点发送恢复消息,以便该备用共识节点基于该恢复消息关闭共识服务,并控制该备用共识节点与该恢复运行的主共识节点同步增量区块数据。

优选地,所述处理系统被所述处理器执行时,还实现如下步骤:

当集群中的主共识节点同步增量区块数据后,分别向其他集群中的主共识节点发送是否共识完成该增量区块数据的确认请求;

若均接收到其他集群中的主共识节点基于该确认请求发送的确认消息,则将该增量区块数据同步给区块链中的数据节点。

优选地,所述处理系统被所述处理器执行时,还实现如下步骤:

当集群中的主共识节点接收到其他集群中的主共识节点发送的是否共识完成一区块的确认请求后,分析本集群中的主共识节点的最新区块编号与其他集群中的主共识节点的最新区块编号是否一致;

若本集群中的主共识节点的最新区块编号小于其他集群中的主共识节点的最新区块编号,则向其他集群中的主共识节点请求增量区块数据。

为实现上述目的,本发明还提供一种区块链共识的方法,所述区块链共识的方法包括:

s1,当集群中的主共识节点在共识完成区块,分别向其他集群中的主共识节点发送是否共识完成该区块的确认请求后,若在预定的第一时间内未接收到基于该确认请求对应的确认消息,则向未接收到确认消息对应的集群的主共识节点发送心跳请求,其中,将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点;

s2,若在预定的第二时间内未接收到该集群基于该心跳请求的心跳响应,则该未进行心跳响应的集群发生机房宕机,启用本集群中的备用共识节点作为发生机房宕机的集群的主共识节点进行共识服务,以对区块进行共识;

s3,当接收到发生机房宕机的集群发送的恢复运行的恢复消息后,关闭作为该恢复运行的集群的主共识节点的备用共识节点的共识服务,并控制该备用共识节点与该恢复运行的集群的主共识节点同步增量区块数据。

优选地,所述步骤s1之后,还包括:

当有集群中的主共识节点发生宕机,将该集群中的一个备用共识节点设置为主共识节点,以进行共识服务;

当该发生宕机的主共识节点恢复运行后,向该备用共识节点发送恢复消息,以便该备用共识节点基于该恢复消息关闭共识服务,并控制该备用共识节点与该恢复运行的主共识节点同步增量区块数据。

优选地,所述步骤s1之后,还包括:

当集群中的主共识节点同步增量区块数据后,分别向其他集群中的主共识节点发送是否共识完成该增量区块数据的确认请求;

若均接收到其他集群中的主共识节点基于该确认请求发送的确认消息,则将该增量区块数据同步给区块链中的数据节点。

优选地,该区块链共识的方法,还包括:

当集群中的主共识节点接收到其他集群中的主共识节点发送的是否共识完成一区块的确认请求后,分析本集群中的主共识节点的最新区块编号与其他集群中的主共识节点的最新区块编号是否一致;

若本集群中的主共识节点的最新区块编号小于其他集群中的主共识节点的最新区块编号,则向其他集群中的主共识节点请求增量区块数据。

优选地,该区块链共识的方法,还包括:若本集群中的主共识节点的最新区块编号大于其他集群中的主共识节点的最新区块编号,则向其他集群中的主共识节点发送确认请求,以供其他集群中的主共识节点向本集群中的主共识节点请求增量区块数据。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现上述的区块链共识的方法的步骤。

本发明的有益效果是:本发明在联盟链多机房异地部署的场景下,将同一机房的共识节点划分为同一集群,每个机房中配备一个主共识节点及至少一个备用共识节点,在机房宕机后无法与其他机房进行共识时,可以启用正常运行的机房中的备用共识节点作为宕机机房的暂时的主共识节点进行共识服务,并在宕机机房恢复运行后,将该暂时的主共识节点的共识服务进行关闭,然后该暂时的主共识节点与恢复运行的机房中的主共识节点同步增量区块数据,通过这种方式,在有机房发生宕机下线情况下,通过其他正常运行的机房代替该宕机机房进行共识服务,并在宕机机房恢复运行后,将期间共识的增量区块数据同步给该宕机机房的主共识节点,使得数据不会丢失,保证数据的完整性,实现对联盟链多机房异地部署的灾备补救。

附图说明

图1为本发明各个实施例一可选的应用环境示意图;

图2是图1中电子装置一实施例的硬件架构的示意图;

图3为图2中处理系统一实施例的程序模块图;

图4为本发明区块链共识的方法一实施例的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

参阅图1所示,是本发明的较佳实施例的应用环境示意图。在该实施例中,多机房为异地部署的场景,在该场景下,需要将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点。在图1中,每个机房配置了一个主共识节点及两个备共识节点。由于需要将共识节点的数据时刻更新到最新,网络传输会是主要的时间消耗,因此,需要使用专线网络来连接各个机房或者尽量缩短各个机房之间的物理距离。电子装置为主共识节点所在的设备。

所述电子装置是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述电子装置可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。

参照图2所示,在本实施例中,电子装置1可包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,存储器11存储有可在处理器12上运行的处理系统10。需要指出的是,图2仅示出了具有组件11-13的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

其中,存储器11包括内存及至少一种类型的可读存储介质。内存为电子装置1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是电子装置1的内部存储单元,例如该电子装置1的硬盘;在另一些实施例中,该非易失性存储介质也可以是电子装置1的外部存储设备,例如电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。本实施例中,存储器11的可读存储介质通常用于存储安装于电子装置1的操作系统和各类应用软件,例如存储本发明一实施例中的处理系统10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器12在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或者处理数据,例如运行处理系统10等。

所述网络接口13可包括标准的无线网络接口、有线网络接口,该网络接口13通常用于在所述电子装置1与其他电子设备之间建立通信连接。

所述处理系统10存储在存储器11中,包括至少一个存储在存储器11中的计算机可读指令,该至少一个计算机可读指令可被处理器器12执行,以实现本申请各实施例的方法;以及,该至少一个计算机可读指令依据其各部分所实现的功能不同,可被划为不同的逻辑模块。

在一实施例中,上述处理系统10被所述处理器12执行时实现如下步骤:

当集群中的主共识节点在共识完成区块,分别向其他集群中的主共识节点发送是否共识完成该区块的确认请求后,若在预定的第一时间内未接收到基于该确认请求对应的确认消息,则向未接收到确认消息对应的集群的主共识节点发送心跳请求,其中,将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点;

若在预定的第二时间内未接收到该集群基于该心跳请求的心跳响应,则该未进行心跳响应的集群发生机房宕机,启用本集群中的备用共识节点作为发生机房宕机的集群的主共识节点进行共识服务,以对区块进行共识;

当接收到发生机房宕机的集群发送的恢复运行的恢复消息后,关闭作为该恢复运行的集群的主共识节点的备用共识节点的共识服务,并控制该备用共识节点与该恢复运行的集群的主共识节点同步增量区块数据。

具体原理请参照下述图3关于处理系统10的程序模块图及图4关于该方法的流程图的介绍。

参照图3所示,为图2中处理系统10的程序模块图。所述处理系统10被分割为多个模块,该多个模块被存储于存储器12中,并由处理器13执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。

所述处理系统10可以被分割为:发送模块101、启用模块102及共识模块103。

所述发送模块101,用于当集群中的主共识节点在共识完成区块,分别向其他集群中的主共识节点发送是否共识完成该区块的确认请求后,若在预定的第一时间内未接收到基于该确认请求对应的确认消息,则向未接收到确认消息对应的集群的主共识节点发送心跳请求;

其中,将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点。

其中,如果在预定的第一时间内未接收其他集群中的至少一个主共识节点发送的确认消息,则说明该机房出现异常,该异常可能是主共识节点宕机也可能是整个机房宕机。为了确认该异常是主共识节点宕机还是整个机房宕机,则可以再次向未接收到确认消息对应的集群的主共识节点发送心跳请求,例如,每隔10秒钟发送一次心跳请求给这些集群的主共识节点,若有心跳响应,则主共识节点正常工作,若主共识节点宕机,则会在限定时间内(例如,1分钟)选举本集群中的某一备用共识节点作为主共识节点,此期间,无法收到心跳响应,但后续选举备用共识节点作为暂时的主共识节点后,能够进行心跳响应,可以确认该集群的主共识节点宕机。

所述启用模块102,用于若在预定的第二时间内(即超过选举时间阈值)未接收到该集群基于该心跳请求的心跳响应,则该未进行心跳响应的集群发生机房宕机,启用本集群中的备用共识节点作为发生机房宕机的集群的主共识节点进行共识服务,以对区块进行共识;

所述共识模块103,用于当接收到发生机房宕机的集群发送的恢复运行的恢复消息后,关闭作为该恢复运行的集群的主共识节点的备用共识节点的共识服务,并控制该备用共识节点与该恢复运行的集群的主共识节点同步增量区块数据。

其中,对于启用本集群中的备用共识节点作为发生机房宕机的集群的暂时的主共识节点的机房,在接收到恢复消息后,由于不再需要该暂时的主共识节点的共识服务,因此将该暂时的主共识节点的共识服务进行关闭。然后,该暂时的主共识节点与恢复运行的集群的主共识节点同步增量区块数据。同步完成后,该恢复运行的集群的主共识节点上线共识服务。

如图4所示,图4为本发明方法一实施例的流程示意图,电子装置1的处理器13执行存储器12中存储的处理系统10时实现该方法的如下步骤:

步骤s1,当集群中的主共识节点在共识完成区块,分别向其他集群中的主共识节点发送是否共识完成该区块的确认请求后,若在预定的第一时间内未接收到基于该确认请求对应的确认消息,则向未接收到确认消息对应的集群的主共识节点发送心跳请求;

其中,将共识节点按照机房进行划分,将同一机房的共识节点划分为同一集群,每一集群配置一个主共识节点及至少一个备用共识节点。

其中,可以使用paxos、raft或pbft等算法进行区块的共识。

如果在预定的第一时间内(例如,5分钟)均接收到其他集群中的主共识节点发送的确认消息,说明本次区块的共识成功,可以将共识后区块数据提交至数据节点。如果在预定的第一时间内未接收其他集群中的至少一个主共识节点发送的确认消息,则说明该机房出现异常,该异常可能是主共识节点宕机也可能是整个机房宕机。为了确认该异常是主共识节点宕机还是整个机房宕机,则可以再次向未接收到确认消息对应的集群的主共识节点发送心跳请求,例如,每隔10秒钟发送一次心跳请求给这些集群的主共识节点,若有心跳响应,则主共识节点正常工作,若主共识节点宕机,则会在限定时间内(例如,1分钟)选举本集群中的某一备用共识节点作为主共识节点,此期间,无法收到心跳响应,但后续选举备用共识节点作为暂时的主共识节点后,能够进行心跳响应,可以确认该集群的主共识节点宕机。

步骤s2,若在预定的第二时间内未接收到该集群基于该心跳请求的心跳响应,则该未进行心跳响应的集群发生机房宕机,启用本集群中的备用共识节点作为发生机房宕机的集群的主共识节点进行共识服务,以对区块进行共识;

若在预定的第二时间内(例如3分钟)未接收到该集群基于该心跳请求的心跳响应,即超过选举时间阈值,可以认为机房宕机,即此机房所有设备均损坏,例如发生地震、火灾等情况下整个机房均损坏,则启用本集群中的备用共识节点作为发生机房宕机的集群的暂时的主共识节点,进行共识服务。

步骤s3,当接收到发生机房宕机的集群发送的恢复运行的恢复消息后,关闭作为该恢复运行的集群的主共识节点的备用共识节点的共识服务,并控制该备用共识节点与该恢复运行的集群的主共识节点同步增量区块数据。

其中,在宕机机房恢复正常运行后,分别向其他各个机房的主共识节点发送恢复消息,其他各个机房的主共识节点接收到该恢复消息后,可以确认该机房已经恢复正常运行。对于启用本集群中的备用共识节点作为发生机房宕机的集群的暂时的主共识节点的机房,在接收到恢复消息后,由于不再需要该暂时的主共识节点的共识服务,因此将该暂时的主共识节点的共识服务进行关闭。然后,通过控制该暂时的主共识节点与恢复运行的集群的主共识节点同步增量区块数据,以将恢复运行的集群的主共识节点的区块数据更新至最新区块数据的状态。同步完成后,该恢复运行的集群的主共识节点上线共识服务。

其中,在同步增量区块数据时,可以使用kafka的数据同步功能,通过kafka对机房(rack)和同步增量区块数据的节点(insyncreplica)的配置完成同步。

进一步地,在上述的步骤s3之后,当集群中的主共识节点同步增量区块数据后,该方法还包括:分别向其他集群中的主共识节点发送是否共识完成该增量区块数据的确认请求;若均接收到其他集群中的主共识节点基于该确认请求发送的确认消息,则将该增量区块数据同步给区块链中的数据节点。

进一步地,当集群中的主共识节点接收到其他集群中的主共识节点发送的是否共识完成一区块的确认请求后,分析本集群中的主共识节点的最新区块编号与其他集群中的主共识节点的最新区块编号是否一致;

若本集群中的主共识节点的最新区块编号小于其他集群中的主共识节点的最新区块编号,则向其他集群中的主共识节点请求增量区块数据;

若本集群中的主共识节点的最新区块编号大于其他集群中的主共识节点的最新区块编号,则向其他集群中的主共识节点发送确认请求,以供其他集群中的主共识节点向本集群中的主共识节点请求增量区块数据。

其中,如果各个集群中的主共识节点的最新区块的区块编号均一致,即可认为各个集群中的区块同步到最新状态。例如,如果本集群中的主共识节点的最新区块编号为100,其他集群中的主共识节点的最新区块编号为103,则本集群中的主共识节点需要向其他集群中的主共识节点请求区块编号为101至103的区块编号对应的增量区块数据;如果本集群中的主共识节点的最新区块编号为103,其他集群中的主共识节点的最新区块编号为100,则本集群中的主共识节点需要向其他集群中的主共识节点发送确认请求,以供其他集群中的主共识节点向本集群中的主共识节点请求该区块区块编号为101至103的区块编号对应的增量区块数据。

在一实施例中,在上述实施例的基础上,在上述步骤s1之后,该方法还包括:当有集群中的主共识节点发生宕机,将该集群中的一个备用共识节点设置为主共识节点,以进行共识服务;当该发生宕机的主共识节点恢复运行后,向该备用共识节点发送恢复消息,以便该备用共识节点基于该恢复消息关闭共识服务,并控制该备用共识节点与该恢复运行的主共识节点同步增量区块数据。

其中,如上所述,当本集群中的主共识节点在预定的第一时间内未接收到基于该确认请求对应的确认消息,说明有机房出现异常,需要再次心跳请求至未接收确认消息的集群对应的主共识节点,若主共识节点宕机,则选举备用共识节点作为暂时的主共识节点,进行共识服务,并进行心跳响应。当宕机的主共识节点恢复运行后,首先向作为暂时的主共识节点的备用共识节点发送恢复消息,该作为暂时的主共识节点的备用共识节点接收到恢复消息后关闭共识服务,然后作为暂时的主共识节点的备用共识节点与恢复运行的主共识节点同步增量区块数据,同步完成后,该恢复运行的主共识节点上线共识服务。

可以看出,在多机房异地部署的联盟区块链场景下,若仅有两个机房,可允许一个机房宕机,节点的共识服务仍能正常进行,适用于异地双机房异地部署的灾备情况,当然,也适用于两个以上的机房异地部署的灾备情况,容错率高。

与现有技术相比,本发明在联盟链多机房异地部署的场景下,将同一机房的共识节点划分为同一集群,每个机房中配备一个主共识节点及至少一个备用共识节点,在机房宕机后无法与其他机房进行共识时,可以启用正常运行的机房中的备用共识节点作为宕机机房的暂时的主共识节点进行共识服务,并在宕机机房恢复运行后,将该暂时的主共识节点的共识服务进行关闭,然后该暂时的主共识节点与恢复运行的机房中的主共识节点同步增量区块数据,通过这种方式,在有机房发生宕机下线情况下,通过其他正常运行的机房代替该宕机机房进行共识服务,并在宕机机房恢复运行后,将期间共识的增量区块数据同步给该宕机机房的主共识节点,使得数据不会丢失,保证数据的完整性,实现对联盟链多机房异地部署的灾备补救。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质可以是硬盘、多媒体卡、sd卡、闪存卡、smc、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括处理系统,该处理系统被处理器执行时实现的功能,请参照上述关于图3和图4的介绍,在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1