处理区块链的节点的状态的方法和装置与流程

文档序号:16544441发布日期:2019-01-08 20:45阅读:262来源:国知局
处理区块链的节点的状态的方法和装置与流程

本发明涉及区块链技术,尤其涉及处理区块链的节点的状态的方法和装置。



背景技术:

在分布式系统中主要基于节点的负载情况,比如cpu使用率、内存使用率、网络带宽使用率和磁盘使用率等,来对节点的状态进行检测。区块链领域也有针对区块链的节点的硬件资源情况对区块链的节点的状态进行检测。但是这些检测方法仅考虑节点的各种硬件资源是否超过相应的阈值,如果某种硬件资源超过相应的阈值则发送报警,运维人员在获悉报警情况之后进行问题排查。另外,即使节点的硬件资源可用,也并不代表业务场景能够在节点中执行。



技术实现要素:

针对上述问题,本发明一方面提供了一种用于处理区块链的节点的状态的方法,所述方法包括:从区块链接入单元接收请求;检测所述节点的状态;当所述节点处于不正常状态时,向区块链接入单元发送用于表示所述节点处于不正常状态的第一反馈信息。

在一种实施方式中,所述请求为交易请求。

在一种实施方式中,检测所述节点的状态包括:执行请求的交易;并且检测交易执行的状态。

在一种实施方式中,当在预定时间内提醒信息出现的次数大于等于指定阈值时,所述节点处于不正常状态。

在一种实施方式中,所述提醒信息包括以下各类信息中的任意一类:警告提示、错误提示、异常提示和致命错误提示,并且所述指定阈值与所述提醒信息的类别相关联。

在一种实施方式中,检测所述节点的状态包括:检测所述节点的硬件资源使用率,其中,所述硬件资源使用率包括以下各项中的至少一项:cpu使用率、内存使用率、网络带宽使用率和磁盘使用率,并且当所述硬件资源使用率中的任一项超过其相应阈值时,所述节点处于不正常状态。

在一种实施方式中,检测所述节点的状态包括:检测是否出现区块链相关的故障,其中,所述区块链相关的故障包括以下各项中的至少一项:共识失败、数据同步失败、验签失败、网路通信故障和数据库存储故障,并且当出现所述区块链相关的故障中的任一项时,所述节点处于不正常状态。

一种实施方式中,所述方法还包括:当所述节点恢复为正常状态时,向所述区块链接入单元发送用于表示所述节点恢复为正常状态的第二反馈信息。

一种实施方式中,所述请求为检测所述节点的状态的请求。

一种实施方式中,检测所述节点的状态包括:检测以下各项中的至少一项:所述节点的运行状态;所述节点的网络通信状态;所述节点的硬件资源利用率;和所述节点的历史交易执行异常的次数,并且其中,当所述节点处于宕机状态,或者当所述节点的网络通信处于不正常状态,或者当所述节点的历史交易执行异常的次数大于等于相应阈值时,所述节点处于不正常状态。

本发明另一方面还提供了一种处理区块链的节点的状态的方法,所述方法包括:向至少一个节点发送请求;基于从所述至少一个节点中的每一个节点接收的反馈信息来更新所述每一个节点的状态;当接收到用于表示所述节点处于不正常状态的第一反馈信息时,将发送所述第一反馈信息的节点中的每一个节点的状态更新为无法使用。

在一种实施方式中,所述请求为交易请求或者检测所述至少一个节点的状态的请求。

在一种实施方式中,将发送所述第一反馈信息的节点中的每一个节点的状态更新为无法使用包括:将与发送所述第一反馈信息的节点中的每一个节点相关联的信息从所述区块链接入单元的交易执行列表中移除。

在一种实施方式中,所述方法还包括:当接收到用于表示所述节点恢复为正常状态的第二反馈信息时,将发送所述第二反馈信息的节点中的每一个区块链的节点的状态更新为可以使用。

在一种实施方式中,将发送所述第二反馈信息的区块链的节点中的每一个节点的状态更新为可以使用包括:将与发送所述第二反馈信息的节点中的每一个节点相关联的信息添加到所述区块链接入单元的交易执行列表中。

本发明另一方面还提供了一种处理区块链的节点的状态的装置,包括:存储器,其用于存储指令;以及处理器,其耦合到所述存储器,所述指令在由所述处理器执行时使得所述装置执行上述任一项所述的方法。

本发明另一方面还提供了一种计算机存储介质,所述存储介质包括指令,所述指令被执行时,使得所述计算机的处理器执行上述任一项所述的方法。

本发明从区块链的业务场景的角度来考虑节点是否可用,从而能针对业务场景动态地利用节点的可用性,达到最大限度地并且合理地利用参数的目的。本发明的区块链接入单元可以发送请求对节点进行检测以获取节点的状态同时节点也可以对自身进行检测并向区块链接入单元反馈自身的状态消息,从而达到对节点的可用性进行双重检测的目的。

附图说明

图1示出了根据本发明的实施例的处理区块链的节点的状态的网路100的示意图;

图2是根据本发明的实施例的节点侧处理区块链的节点的状态的方法的流程图200;

图3是根据本发明的实施例的区块链接入单元测处理区块链的节点的状态的方法的流程图300;

图4是根据本发明的一个实施例的节点侧和区块链接入单元侧配合完成处理区块链的节点的状态的方法的流程图400;

图5是根据本发明的另一个实施例的节点侧和区块链链接入单元侧配合完成处理区块链的节点的状态的方法流程图500;

图6是根据本发明的实施例的获取区块链的节点的状态的装置600的示意图。

具体实施方式

以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。

本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。

对于相关领域普通技术人员已知的技术、方法和装置可能不作详细讨论,但在适当情况下,所述技术、方法和装置应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。

以下结合附图对本发明进行详细描述

图1示出了根据本发明的实施例的处理区块链的节点的状态的网路100的示意图,网络100包括区块链101和区块链接入单元102,区块链101由彼此互联的多个节点(例如,节点1,节点2,节点3,…,节点n)组成,应理解的是,这里n可以为大于等于1的任意值。区块链接入单元102与区块链101中的每个节点网络上相连(应理解,可以通过有线或无线方式进行连接)。区块链接入单元102可以向区块链中的至少一个节点发送交易请求或者发送检测至少一个节点的状态的请求;该至少一个节点响应于接收到的交易请求或检测请求检测自身的状态;之后,该至少一个节点会给区块链接入单元102发送反馈信息,区块链接入单元102根据节点的反馈信息来对该至少一个节点的状态进行更新。应理解的是,这里的区块链不局限于某一类型,可以是任意类型的区块链。一种实施方式中,区块链接入单元102可以是基于负载均衡的单元,也可以是基于通用的区块链客户端的单元,也可以是任何其它合适的单元。

图2是根据本发明的实施例的节点侧处理区块链的节点的状态的方法的流程图200,具体步骤如下:

步骤s201:从区块链接入单元102接收请求。

步骤s202:检测节点的状态。

步骤s203:当节点处于不正常状态时,向区块链接入单元发送用于表示节点处于不正常状态的第一反馈信息。

图3是根据本发明的实施例的区块链接入单元测处理区块链的节点的状态的方法的流程图300,具体步骤如下:

步骤s301:向至少一个节点发送请求。

步骤s302:基于从至少一个节点中的每一个节点接收的反馈信息来更新每一个节点的状态。

步骤s303:当接收到用于表示节点处于不正常状态的第一反馈信息时,将发送第一反馈信息的节点中的每一个节点的状态更新为无法使用。

图4是根据本发明的一个实施例的节点侧和区块链接入单元侧配合完成处理区块链的节点的状态的方法的流程图400。下面结合图1和图4进行详细描述。

步骤s401:用户向区块链接入单元发起交易请求。

步骤s402:区块链接入单元根据交易执行列表确认可以使用哪些节点来执行当前的业务场景,这些节点被称为可以使用的节点。应理解,本文中交易执行列表位于区块链接入单元中并且记录可以使用的节点的相关信息,并且初始记录区块链中所有的节点的相关信息,即所有节点初始均为可以使用。还应理解,还可以通过其它合适的方式来确认可以使用哪些节点来执行当前的业务场景。

步骤s403:区块链接入单元将交易请求发送给确认出的当前可以使用的节点。

步骤s404:每个当前可以使用的节点基于接收到的交易请求分别执行请求的交易。

步骤s405:如果当前可以使用的节点检测出自身当前交易执行的状态是不正常的,则执行步骤s406,否则执行步骤s409。

步骤s406:如果在预定时间内提醒信息出现的次数大于等于指定阈值,则执行步骤s407,否则执行步骤s410。应理解,这里的提醒信息包括以下各类信息中的任意一类:警告提示、错误提示、异常提示和致命错误提示,并且所述指定阈值与所述提醒信息的类别相关联,例如,当提示信息为警告提示时,警告提示出现的次数与第一阈值(在一个实施例中,第一阈值为在5秒内出现5次。)进行比较;当提示信息为错误提示时,错误提示出现的次数与第二阈值(在一个实施例中,第二阈值为在5秒内出现3次。)进行比较;当提示信息为异常提示时,异常提示出现的次数与第三阈值(在一个实施例中,第二阈值为在5秒内出现3次)进行比较;当提示信息为致命错误提示时,致命错误出现的次数与第四阈值(在一个实施例中,第四阈值为在5秒内出现1次)进行比较。应理解的是,预定时间、预定时间内出现的次数、第一阈值、第二阈值、第三阈值和第四阈值都可以根据需要进行调整。

步骤s407:节点向区块链接入单元发送用于表示该节点处于不正常状态的第一反馈信息。

步骤s408:区块链接入单元接收到第一反馈信息时,将与发送第一反馈信息的节点相关联的信息从区块链接入单元的交易执行列表中移除。

步骤s409:返回给区块链接入单元当前可以使用节点执行交易正常的状态正常的反馈信息。

步骤s410:返回给区块链接入单元节点执行交易异常但仍然可以使用。

在一个实施例中,节点接收到交易请求时会对自身的硬件资源使用率(包括但不限于cpu使用率、内存使用率、网络带宽使用率、磁盘使用率)进行检测;当cpu使用率、内存使用率、网络带宽使用率和磁盘使用率中至少有一项超过其相应阈值(cpu使用率、内存使用率、网络带宽使用率和磁盘使用率有各自的阈值,且阈值可以调整,优选地,设定cpu使用率阈值为70%,内存使用率阈值为90%,网络带宽使用率为80%,磁盘使用率阈值为80%,)时,节点向区块链接入单元发送用于表示节点处于不正常状态的第一反馈信息;然后重复步骤s408。

在另一个实施例中,节点接收到交易请求时会检测是否出现与区块链相关的故障(包括但不限于:共识失败、数据同步失败、验签失败、网络通信故障、数据库存储故障);如果出现故障中的至少一项,则节点向区块链接入单元发送用于表示该节点处于不正常状态的第一反馈信息;然后重复步骤s408。

应理解,在一个实施例中,当节点恢复为正常状态时,会向区块链接入单元发送用于表示节点恢复为正常状态的第二反馈信息,并且区块链接入单元在接收到第二反馈信息时将与发送第二反馈信息的节点相关联的信息添加到区块链接入单元的交易执行列表中。

应理解的是,将与发送第一反馈信息的节点相关联的信息从区块链接入单元的交易执行列表中移除是将发送第一反馈信息的节点状态更新为无法使用的一种实现方式;还可以通过其它合适的方式将发送第一反馈信息的节点状态更新为无法使用。同样,将与发送第二反馈信息的节点相关联的信息添加到区块链接入单元的交易执行列表中是将发送第二反馈信息的节点的状态更新为可以使用的一种实现方式,还可以通过其它合适的方式将发送第二反馈信息的节点的状态更新为可以使用。

还应理解的是,每个节点可以使用不同的线程,也可用相同的线程来检测自身的硬件资源使用率、检测交易执行的状态或者检测与区块链相关的故障。

上述区块链的节点对自身的状态进行检测是从区块链的业务场景的角度来考虑节点是否可用,从而能针对业务场景动态地利用节点的可用性,达到最大限度地并且合理地利用参数的目的。

图5是根据本发明的另一个实施例的节点侧和区块链链接入单元侧配合完成处理区块链的节点的状态的方法流程图500,具体步骤如下:

步骤s501:区块链接入单元向区块链中的至少一个节点发起检测该至少一个节点状态的请求。

步骤s502:该至少一个节点接收到请求后分别检测自身的状态。

步骤s503:如果节点的运行状态为宕机状态,则执行步骤s507,否则执行步骤s504。步骤s504:如果区块链的节点的网络通信处于正常状态,则执行步骤s505,否则执行步骤s507。

步骤s505:如果节点的硬件资源使用率(包括但不限于:cpu使用率、内存使用率、网络带宽使用率、磁盘使用率)中的至少一项超过相应阈值,则执行步骤s507,否则执行步骤s506。应理解,可以根据需要对硬件资源中的每一项设定阈值,即设定cpu使用率阈值、内存使用率阈值、网络带宽使用率阈值、磁盘使用率阈值。在一个实施例中,cpu使用率阈值为70%、内存使用率为90%、网络带宽负载为80%、磁盘使用率阈值为80%。

步骤s506:如果在预定时间内交易执行异常的次数(即在预定时间内有几笔交易执行不正常)大于等于第五阈值,则执行步骤s507,否则执行步骤s509。在一个实施例中,第五阈值在5秒内出现5次。应理解,这里的预定时间、交易执行异常的次数和第五阈值均可以调整。

步骤s507:节点向区块链接入单元发送用于表示节点处于不正常状态的第一反馈信息。

步骤s508:区块链接入单元将与节点相关联的信息从交易执行列表中移除,应理解的是,这里的交易执行列表位于区块链接入单元中并且用于列出哪些节点为可以使用的节点。

步骤s509:节点向区块链接入单元返回节点可以使用的信息。

另外,尽管本实施例中,按照节点的运行状态、节点的网络通信状态、节点的硬件资源使用率、交易执行异常的次数的顺序进行节点的状态是否正常的判断,但是应理解的是判断节点的状态是否正常的顺序不局限于列举的方式,这四个判断的顺序可以根据需要进行调整。

应理解的是,当节点的运行状态恢复正常并且节点的网络通信恢复为正常状态并且节点的硬件资源使用率恢复均每一项均小于相应阈值以及在预定时间内的历史交易执行异常的次数小于第五阈值时,即节点恢复为正常状态时,节点会向区块链接入单元发送用于表示节点恢复为正常状态的第二反馈信息;并且区块链接入单元接收到第二反馈信息时将与节点相关联的信息添加到交易执行列表中。

还应理解的是,将与节点关联的信息从交易执行列表中移除是实现将节点的状态更新为无法使用的一种方式,还可以通过其它合适的方式来实现将节点的状态更新为无法使用。同样,将与节点关联的信息添加到交易执行列表中是实现将节点的状态更新为可以使用的一种方式,还可以通过其它合适的方式来实现将节点的状态更新为可以使用。

上述区块链接入单元也能够对节点进行检测以获取节点的状态,从而达到对节点的可用性进行双重检测的目的。

图6示出了根据本发明的实施例的获取区块链的节点的状态的装置600的示意图。装置600可以包括:存储器601和耦合到存储器601的处理器602。存储器601用于存储指令,处理器602被配置为基于存储器601存储的指令来实现针对图2、图3、图4和图5所描述的方法的步骤中的任何步骤中的一个或多个。

如图6所示,装置600还可以包括通信接口603,用于与其它装置进行信息交互。此外,装置600还可以包括总线606,存储器601、处理器602和通信接口603通过总线604来彼此进行通信。

存储器601可以包括易失性存储器,也可以包括非易失性存储器。处理器602可以是中央处理器(cpu)、微控制器、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)或其它可编程逻辑器件、或是被配置为实现本发明的实施例的一个或多个集成电路。

替代地,上述的获取区块链的节点的状态的方法能够通过计算机程序产品,即有形的计算机可读存储介质来体现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行装置使用的指令的有形装置。计算机可读存储介质例如可以是但不限于电存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码装置、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

需要注意的是,以上列举的仅为本发明的具体实施例,显然本发明不限于以上实施例,随之有着许多的类似变化。本领域的技术人员如果从本发明公开的内容直接导出或联想到的所有变形,均应属于本发明的保护范围。

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