区块链网络服务平台、恢复工具及其故障处理方法、存储介质与流程

文档序号:16879996发布日期:2019-02-15 22:02阅读:295来源:国知局
区块链网络服务平台、恢复工具及其故障处理方法、存储介质与流程

本发明涉及通信技术,尤其涉及一种区块链网络服务平台、恢复工具及其故障处理方法、存储介质。



背景技术:

区块链技术及其应用正在颠覆现有的业务模式。各行各业都在积极探索将自身业务在区块链网络中实现,其中包括金融机构,政府部门,传统企业,互联网公司等等。但是区块链技术具有很高的技术门槛,区块链网络的架构过于复杂,在实现方式上从底层到上层应用都有很大差别。

企业级的区块链网络服务平台,即区块链即服务(baas)平台提供了向不同行业用户快速部署区块链网络、并在区块链网络中部署支撑业务的应用的快速解决方案。

发明人在实施本发明的过程中发现,现有技术提供的区块链网络服务平台,在资源层使用容器集群技术(例如kubernetes)提供容器化资源管理调度机制,简化区块链网络的部署管理,提高区块链服务的可用性,但是,对于故障恢复完全依赖于容器集群自身的故障处理机制,难以实现从故障中快速恢复,进而影响区块链网络的稳定性。



技术实现要素:

本发明实施例提供一种区块链网络服务平台、恢复工具及其故障处理方法、存储介质,能够使区块链网络从故障中快速恢复。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供一种区块链网络服务平台的故障处理方法,所述方法包括:

接收区块链网络的故障事件,所述区块链网络运行于容器集群,所述容器集群使用数据存储集群的共享存储卷;

响应于所述故障事件,在所述区块链网络服务平台的恢复工具的进程中执行以下操作:

恢复所述容器集群中对应所述区块链网络的容器元数据,恢复所述容器集群中对应所述区块链网络的共享存储卷元数据,恢复所述区块链网络中的元数据;

初始化所述区块链网络。

第二方面,本发明实施例提供一种区块链网络服务平台,所述区块链网络服务平台包括:

容器集群,用于运行区块链网络;

恢复工具,用于接收所述区块链网络的故障事件,响应于所述故障事件,在所述恢复工具的进程中执行以下操作:

恢复所述容器集群中对应所述区块链网络的容器元数据,恢复所述容器集群中对应所述区块链网络的共享存储卷元数据,恢复所述区块链网络中的元数据;

初始化所述区块链网络。

第三方面,本发明实施例提供一种区块链网络服务平台,所述区块链网络服务平台包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令,实现本发明实施例提供的区块链网络服务平台的故障处理方法。

第四方面,本发明实施例提供一种区块链网络服务平台的恢复工具,所述恢复工具包括:

事件监听单元,用于接收区块链网络的故障事件,所述区块链网络运行于容器集群,所述容器集群使用数据存储集群的共享存储卷;

恢复单元,用于响应于所述故障事件,在所述区块链网络服务平台的恢复工具的进程中执行以下操作:

恢复所述容器集群中对应所述区块链网络的容器元数据,恢复所述容器集群中对应所述区块链网络的共享存储卷元数据,恢复所述区块链网络中的元数据;

初始化单元,用于初始化所述区块链网络。

第五方面,本发明实施例提供一种区块链网络服务平台的恢复工具,所述恢复工具包括:

事件监听单元,用于接收区块链网络的故障事件,所述区块链网络运行于容器集群,所述容器集群使用数据存储集群的共享存储卷;

恢复单元,用于响应于所述故障事件,在所述区块链网络服务平台的恢复工具的进程中执行以下操作:

恢复所述容器集群中对应所述区块链网络的容器元数据,恢复所述容器集群中对应所述区块链网络的共享存储卷元数据,恢复所述区块链网络中的元数据;

初始化单元,用于初始化所述区块链网络。

第六方面,本发明实施例提供一种区块链网络服务平台的恢复工具,所述恢复工具包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令,实现本发明实施例提供的区块链网络服务平台的故障处理方法。

第七方面,本发明实施例提供一种存储介质,存储有可执行指令,当所述可执行指令被执行时,实现本发明实施例提供的区块链网络服务平台的故障处理方法。

应用本发明实施例实现以下有益效果:

通过在容器集群的外部设置了故障的恢复工具,通过恢复工具将恢复所需的元数据备份到数据库中,实现了故障处理机制从容器集群中解耦,故障恢复不再受到容器集群的约束,从而简化故障恢复的流程,提升了从故障恢复的效率。

附图说明

图1本发明实施例提供的区块链网络服务平台的功能架构示意图;

图2是本发明实施例提供的资源层通过部署有容器化管理系统而被构建为容器集群的结构示意图;

图3是本发明实施例提供的开发者通过终端接入区块链网络服务平台的示意图;

图4a至图4q是本发明实施例提供的区块链网络服务平台的各种功能管理页面的显示示意图;

图5是本发明实施例提供的区块链网络服务平台的功能结构示意图;

图6是本发明实施例提供的区块链网络服务平台故障处理的流程示意图;

图7是本发明实施例提供的区块链网络服务平台的故障处理的流程示意图;

图8是本发明实施例提供的恢复工具的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)交易(transaction),等同于计算机术语“事物”,包括三种不同的交易类型:部署(deploy),调用(invoke)和查询(query)。部署交易用于向区块链网络的节点安装指定的链码,调用和查询类型的交易用于调用部署号的链码,以实现对账本中的目标账户的相关数据的操作,包括增、删、查、改的操作修改账户中的键值(key-value)对形式的数据,或者在账本中增加新的账户,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。

2)区块(block),记录一段时间内交易所更新的账本数据的数据结构,被标记上时间戳和之前一个区块的独特标记(例如数字指纹),区块经过区块链网络中节点的共识验证后,会被追加到区块链的末尾成为新区块。

3)区块链(blockchain),区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的不可篡改和不可伪造。

4)区块链网络,通过共识的方式将新区块纳入区块链的一系列的、无中心的节点的集合。

5)账本(ledger),区块链网络中以账户为维度所记录的数据的总和,包括账本数据、账本状态、账本状态证明和区块索引等元素。

6)账本数据,实际区块数据存储,即区块链中记录的一系列有序的、不可篡改的交易的记录,可以表现为文件系统的文件的形式,交易中调用的智能合约被执行时,实现对账户/账户中数据的更新。

7)账本状态,也称为状态数据,即账本数据的状态,可以表现为数据库中的键值对的形式,其中实时账本状态用于表示共识的交易所更新的键值对的最新记录,历史账本状态用于表示键值对的历史记录。

8)共识(consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对交易结果达成一致,实现共识的机制包括工作量证明(pow)、权益证明(pos,proofofstake)、股份授权证明(dpos,delegatedproof-of-stake)、消逝时间量证明(poet,proofofelapsedtime)等。

9)智能合约(smartcontracts),也称为链码(chaincode),部署在区块链网络中的根据条件而触发执行的程序,链码运行在一个安全的容器中,来初始化和管理账本数据和账本状态。

10)容器编排,容器的调度和集群的技术,提供用于基于容器应用可扩展性的基本机制,使用容器提供服务并编排决定容器之间如何进行交互。

下面说明实现本发明实施例的区块链网络服务平台的示例性的功能架构,参见图1,图1本发明实施例提供的区块链网络服务平台的功能架构示意图,包括资源层110、区块层120、服务层130、接口层140和应用层150,下面分别进行说明。

资源层110封装机器上的计算资源、存储资源和网络资源等各种形式的资源,用于开发者根据业务需求而部署的区块链网络,资源的类型可以包括各种机器,例如物理主机、数据存储集群等物理机,或者包括公有云/私有云等虚拟机,又或者包括以上的两种。

计算资源包括各种形式的处理器,例如中央处理器(cpu)、应用专用集成电路(asic,applicationspecificintegratedcircuit)、专用集成电路和现场可编程门阵列(fpga,field-programmablegatearray)的各种形式的处理器。

存储资源包括各种易失性存储器和非易失性存储器等各种类型的存储介质。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。

网络资源包括用于实现有线/无线网络通信的各种芯片,如有线通信处理器、无线通信处理器等。

资源层110的通过部署有容器集群的管理系统(例如,kubernetes)而被构建为由一系列的运行有容器的节点构成的集群,屏蔽资源层110中底层资源的差异而对外提供统一的接口,从而无须进行各种复杂的调用;区块链网络的应用(包括实现区块链网络的各种代码)在容器中以隔离的方式运行,容器中封装了应用运行的依赖关系从而能够容易地被调度(例如,当节点发生故障时,或者当需要将应用迁移到新的机器上运行时)到集群的任一节点上运行。

参见图2,是本发明实施例提供的资源层通过部署有容器化管理系统而被构建为容器集群200的结构示意图,向资源层提供资源的机器中通过部署容器化管理系统的相应组件而形成管理节点(masterserver)210和服务节点220(node)两类节点,管理节点用于管理容器在服务节点中的调度和运行,服务节点主要用于运行各种容器,提供区块链网络中的各种应用的隔离运行环境,例如,用于运行链码的链码容器,用于运行节点(即区块链网络中各种类型的节点的代码)代码的节点容器等,下面分别进行说明。

管理节点210负责管理集群,以服务(service)的形式对外提供集群的资源数据访问入口,管理节点包括几个示例性的组件。

1)状态组件(etcd),用于保存整个集群的状态。

2)应用程序接口服务(apiserver)组件,用于提供了资源操作的唯一入口,并提供认证、授权、访问控制、api注册和发现等机制。

3)调度(scheduler)组件,用于负责资源的调度,按照预定的调度策略将容器调度到合适的服务节点上运行。服务节点所运行的容器中共享机器(也就是部署服务节点组件的机器)中同一组资源的容器组(pod)为调用的最小单位,对于区块链网络的应用来说,可以通过一个或多个的容器组来实现,容器组中的容器共享的资源包括:应用程序命名空间、网络命名空间、主机名和存储卷(volume)。

在容器集群中以卷的形式管理资源层110的存储资源,例如数据存储集群提供的存储资源,还提供了共享存储卷的机制,当数据存储集群以共享文件系统的方式实现时,例如网络文件系统(nfs,networkfilesystem)、集群文件系统(glusterfs)、ceph文件系统(cephfs),调度组件就能够对存储卷上所挂载的容器组轻易地调度(挂载)到其他机器(服务节点)的存储卷中。

4)控制管理(controllermanager)组件,用于负责监控/维护容器集群的状态,通过应用程序接口服务组件提供的接口,实时监控整个集群的每个资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会修复到期望状态。

5)副本控制器(rc,replicationcontroller)组件,控制一定时间内总有一定数量的pod副本的运行;例如正在运行的pod副本超出设定值,则关闭部分pod副本;如果pod副本少于设定值则创建新的pod副本。

6)部署控制器(deploymentcontroller)组件,用于管理维护容器集群找中的资源对象-部署(deployment)对象,关联部署对象和副本控制器,在部署对象中为容器组和副本控制器提供声明式更新,用于声明容器组和副本控制器的目标状态,从而当部署对象更新时,控制实现副本控制器和容器组的更新。

服务节点220包括以下示例性的组件。

1)容器引擎(记为docker),用于来负责所有具体的镜像下载和容器运行。

2)守护进程组件(记为kubelet),用于负责维护容器的生命周期(创建、启动和停止),同时也负责存储卷和容器网络接口(cni)的管理。

以存储卷的管理为例,守护进程组件通过服务节点220中部署的共享文件系统的组件,例如网络文件系统(nfs,networkfilesystem)、集群文件系统(glusterfs)、ceph文件系统(cephfs),将一个容器组中的各个容器挂载到相同的存储卷上,使各个容器使用相同的存储卷存储在运行过程中所生产的数据,存储卷中的数据可以被同一个容器组的任一容器访问。

3)负载均衡组件(记为proxy),负责为service提供cluster内部的服务发现和负载均衡。

基于图2示出的容器集群,部署一个区块链网络的应用的镜像到容器组(在下面的示例中称为目标pod,)并运行在服务节点220(在下面的示例中称为目标node)的示例性过程如下所述。

首先,容器集群200的管理工具(kubectl)提交一个创建副本控制器(rc,replicationcontroller)的请求,其中包括目标pod的定义;目标pod需要运行的副本数量;要监控的目标pod标签(lable)等信息。

接下来,请求通过apiserver被写入etcd中,此时controllermanager通过apiserver的监听资源变化的接口监听到这个rc事件,发现当前集群中还没有它所对应的pod实例,于是根据rc里的pod模板定义生成一个pod对象,通过apiserver写入etcd。

紧接着,rc事件被scheduler发现,它立即执行一个调度流程:为这个新pod选定一个落户的服务节点,然后通过apiserver将这一结果写入到etcd中,随后,目标node上运行的kubelet进程通过apiserver监测到这个新pod,并按照它的定义,启动新pod,直到pod的生命结束。

随后,kubectl提交一个新的映射到目标pod的service的创建请求,controllermanager会通过label查询到相关联的pod实例,然后生成service的端点(endpoints)信息(包括地址和端口),并通过apiserver写入到etcd中;容器集群中所有node上运行的proxy进程通过apiserver查询、并监听service对象与其对应的endpoints信息,建立一个软件方式的负载均衡器来实现service访问到后端pod的流量转发功能。

继续说明实现如图1所示的实现本发明实施例的区块链网络服务平台的其他功能结构。

区块层120封装了实现区块链网络的不同解决方案,例如超级账本(fabric)、stellar、ethereum、自研的jdchain等;这些解决方案规范了实现区块链网络的架构以及实现共识的机制,在区块链网络服务平台100中可以提供为应用商店中的应用的方式,以支持开发者根据需求快速部署。

服务层130封装了区块链网络服务平台的各种服务,特色服务包括快速部署区块链网络、账户认证、企业及部署、统一鉴权、微服务和开发接口;合约管理包括上传校验、合约部署、合约升级、合约列表、合约库和合约模板;监控运维包括节点管理、服务升级、交易管理、区块浏览、账户审计和账户管理。

接口层提供了140向开发者提供了接入区块链网络服务平台100以进行区块链网络的部署和管理的方式,包括开发者浏览器的网络(web)方位方式、在客户端中内置软件开发套件(sdk,softwaredevelopmentkit)/应用程序接口(api,applicationprograminterface)的方式。

应用层150封装了支撑不同业务(包括溯源、公益、存证、电子发票、动产评估、交易计算和数字版权等)的应用,在应用商店中提供模块化、可复用的应用,支持开发者根据需求选择并部署于区块链网络中,以记录不同业务过程中所生产的各种数据。

实现本发明实施例的区块链网络服务平台通过各种方式与开发者连接,并提供各种图形化的方式以进行区块链网络的部署和管理,下面进行说明。

参见图3,图3是本发明实施例提供的开发者通过终端300通过网络400接入区块链网络服务平台100的示意图,开发者终端300的sdk/web320接口连接区块链网络服务平台100中的接口层140相应的sde/web接口,支持在开发者的终端300本地以远程的方式部署支撑特定业务的区块链网络,在终端300的图形界面310中显示区块链网络服务平台100的各种功能的管理页面,包括容器集群的创建和新的容器集群的接入、存储资源的管理、一键部署区块链网络、链码管理(运行状态查看)、应用商店管理等。

参见图4a至图4q,是本发明实施例提供的区块链网络服务平台的各种功能管理页面的显示示意图,将结合图4a至图4q示例性说明如图3中开发者终端300的图形界面310中显示的功能管理页面。

图4a示出了区块链网络服务平台100的状态查看页面,在状态查看页面中区块链网络的运行状态,例如cpu使用、内存使用、资源(节点)使用的情况。

图4b示出了区块链网络服务平台100的一键部署的控制台页面,支持开发者设置区块链网络的基本信息(包括区块域名、版本号)和组织(包括组织名、节点数量、用户数量等),采用默认值来设置高级选项,包括排序节点类型、通道名称和链码名称等。

图4c示出了的区块链网络服务平台100的资源层110的资源管理的控制台页面,其中显示了开发者通过区块链网络服务平台100可部署的集群的相关信息,包括是否连接的状态,cpu/内存使用情况等。

在图4d中支持添加用于支撑区块链网络的容器集群,录入集群名称;在创建集群的功能选项被触发后将进入创建页面。

在图4e中示出了区块链网络服务平台100的查询集群的控制台页面,当查询集群的功能按钮被触发后,将进入集群列表页面,支持进行添加集群、查询集群、删除集群、编辑集群的操作。

在图4f中示出了区块链网络服务平台100的存储管理的控制台页面,当存储管理的功能按钮被触发时,将进入存储管理列表页,显示集群中已创建的存储项目,其中包含存储查询及删除功能。

在图4g中示出了区块链网络服务平台100的存储详情的控制台页面,在图4h中显示存储的详情,并支持对存储进行动态存储空间扩容。

在图4i中示出了区块链网络服务平台100的添加存储的控制台页面,支持对添加的存储名称和节点进行设置,根据设置将节点添加到容器集群中,并在图4j中显示添加存储后的详情信息,包括容器集群的节点的列表。

在图4k中示出了区块链网络服务平台100的超级账本的控制台页面,显示了部署区块链网络所使用的超级账本的名称、网络版本、状态和创建时间的信息。

在图4l中示出了区块链网络服务平台100的超级账本的一键部署的控制台页面,提供了针对超级账本部署的基本信息的配置项目,以及采用默认值的高级配置项,例如排序节点类型、通道、默认链码和初始化参数等。

在图4m/n中示出了区块链网络服务平台100的链码的上传/安装的控制台页面,在上传的控制台页面中提供了链码名和版本号的设置项目;在安装的控制台页面中提供了链码版本、初始化参数、组织和节点的配置项目。

在图4o中示出了区块链网络服务平台100的网络详情的控制台页面,支持查看不同通道的组织成员、区块高度、交易数量和合约数量等信息,还可以显示所查看通道的组织名称、通道内节点名称、通道内链码名称等信息。

在图4p中示出了区块链网络服务平台100的链码查询的控制台页面,支持使用网络名称、链码名称、链码参数、账本名称和链码函数等方式配合查询链码,查询的维度包括状态、消息和数据。

在图4q中示出了区块链网络服务平台100的应用商店的控制台页面,支持开发者选择需要部署的应用,一旦有应用被确定部署到区块链网络,将通过复用应用的镜像的方式完成到资源层100的容器集群的快速部署。

发明人在实施本发明的过程中发现,为了提高区块链网络的可用性和可扩展性,降低区块链网络运维管理的工作成本,如图1示出的区块链网络服务平台100所示,可以对区块链网络服务平台100的资源层110进行虚拟化管理调度,采用容器集群技术实现提供容器化资源管理调度机制,简化区块链网络的部署管理,提高区块链服务的可用性,通过挂载使用共享文件系统技术的数据存储集群,解决数据存储资源的可用性和动态扩容性问题,通过使用数据存储集群的管理工具(例如heketi)虚拟存储抽象层,以此解决容器集群与数据存储集群的集成问题。

然而,当容器集群出现故障时,由于容器集群是依赖于状态组件所存储的状态数据进行故障恢复的故障处理机制,例如,参见图1和图2,容器集群200的故障恢复依赖于管理节点210中的控制管理组件进行修改以使容器集群200中到达期望状态,因此,当区块链网络服务平台100部署的区块链网络出现故障,又或者如图2所示的容器集群故障(例如,管理节点故障),将导致区块链网络恢复效率不高甚至难以恢复,具体表现在以下几个方面:

1)依赖于从集群内部维护的状态进行恢复的机制,导致恢复过程复杂;

2)在故障处理机制中,将所有外部配置数据和内部状态数据都维护在容器集群的状态组件中,导致状态组件压力较高,即使状态数据没有丢失,恢复的效率也较低;

3)状态组件维护的状态数据使用键值对方式的非结构化存储技术,支持的数据检索方式单一,对于恢复过程中所需的各种类型的元数据备份的复杂检索执行效率不高,进而影响了从故障恢复的效率。

针对上述问题,在一些实施例中,对如图1示出的区块链网络服务平台的结构进行改进,在容器集群的外部设置了故障的恢复工具,以替代在容器集群内部通过控制管理组件实现的故障处理机制;通过恢复工具将恢复所需的元数据备份到数据库中,通过将故障处理机制从容器集群内部解耦,实现为独立于容器集群的恢复工具,使得故障恢复不再受到容器集群的约束,从而简化了故障恢复的流程,提升了从故障恢复的效率;在另一些实施例中,还可以将元数据的备份在结构化的数据库存储,从而能够支持对元数据的多维度的复杂查询,提升获取元数据备份的效率,进而提升从故障中恢复的效率。

下面结合附图进行说明实现本发明实施例的区块链网络服务平台的故障处理方案,首先说明从容器集群外部实现故障处理的区块链网络服务平台的结构。参见图5,图5是本发明实施例提供的区块链网络服务平台500的功能结构示意图,包括数据存储集群510、容器集群530和区块链网络540和恢复工具550。

需要指出,虽然,为了便于描述,在图5中示出的区块链网络服务平台500被标记为区块链网络服务平台500,但是,除了图5示出的网络服务平台500故障处理可以不依赖于容器集群530内部的故障处理机制,不代表与图1示出的区块链网络服务平台100在功能结构存在其他方面的差异,例如,数据库存储集群510和容器集群530是如图1所示的区块链网络服务平台100的资源层110的一个示例,区块链网络540是如图1所示的区块链120的示例;因此,可以理解地,在图1示出的区块链网络服务平台100已经示出、但是在图5中没有示出的结构(例如服务层130、接口层140和应用层150)。仍然可以不冲突地部署在图5示出的区块链网络服务平台500中。

此外,可以理解地,上文中关于图1中所示的区块链网络服务平台100的功能的说明仍然适用于图5示出区块链网络服务平台500。

在一些实施例中,区块链网络服务平台500还可以包括数据库600,当然,数据库600也可以不采用部署在区块链网络服务平台500内部的方式,例如采用部署为独立于区块链网络服务平台500的第三方的数据库的方式。

数据存储集群510包括一系列的数据存储节点511(图5中仅示出了数据存储节点511-1至数据存储节点511-4),数据存储集群510的存储资源以卷的形式的存储数据,向容器集群530的容器组提供挂载的共享存储卷,容器组中的容器挂载到相同的卷中以共享数据。

容器集群530,用于以容器的方式运行区块链网络540,容器集群530结构包括管理节点531和服务节点532、以及所运行的组件可以根据如图3示出的容器集群200的结构而理解,容器集群530中包括由服务节点532运行的节点容器,用于运行实现区块链网络540中各种类型的节点的功能,容器集群530中还包括由服务节点532运行的链码容器,用于运行链码以处理区块链网络540中所发生交易。

恢复工具550,用于接收区块链网络540的故障事件,并进行响应。恢复工具550的响应可以是根据故障时间自动执行的,也可以是通过如图1所示的服务层130的开放接口传递故障事件,从而在接口层140向开发者的终端300的图形界面310发出提示,并根据开发者在终端的图形界面310触发的修复指令而进行响应。

恢复工具550响应于故障事件,在恢复工具550的进程中执行以下操作:恢复容器集群530中对应区块链网络540的容器元数据,进而将容器恢复到故障前的运行状态;恢复容器集群530中对应区块链网络540的共享存储卷元数据进而恢复共享存储卷;恢复区块链网络540中的元数据;初始化区块链网络540。

在一些实施例中,恢复工具550,还用于初始化容器集群530的应用程序接口服务;从数据库600中查询容器集群530中对应区块链网络540的容器元数据备份;调用应用程序接口服务,以基于容器元数据备份恢复容器集群530中对应区块链网络540的容器元数据。

其中,容器集群530中对应区块链网络540的容器,包括容器集群530中用于运行区块链网络540的相关功能(包括节点功能、链码)的容器,例如节点容器、链码容器以及其他类型的容器。

在一些实施例中,恢复工具550,还用于响应于已经恢复容器集群530中对应区块链网络540的容器元数据,调用容器集群530的应用程序接口服务,以部署容器集群530的管理工具520,管理工具520(例如heketi)用于提供容器集群530的表述性状态转移(restful)管理界面,并向容器集群530提供可供调用的接口,以供容器集群530管理数据存储集群510中卷的生命周期。

恢复工具550通过调用管理工具520,在管理工具520的进程中执行以下操作:从数据库600中查询容器集群530中对应区块链网络540的存储卷元数据备份,基于存储卷元数据备份恢复容器集群530中对应区块链网络540的共享存储卷元数据。

其中,共享存储卷元数据包括了容器集群530针对区块链网络540调度的共享卷(也就是容器组即容器组中的容器所共享的卷)与数据存储节点511的映射关系,根据共享存储卷元数据容器集群530能够恢复区块链网络540的容器。

在一些实施例中,恢复工具550,还用于响应于已经恢复容器集群530中对应区块链网络540的共享存储卷元数据,执行以下操作:从数据库600中查询区块链网络540的元数据备份,基于存储卷元数据备份,恢复区块链网络540的元数据。

在一些实施例中,恢复工具550,还用于当区块链网络540处于正常运行状态时,在恢复工具550的进程中执行以下操作:采用键值对数据的方式,将容器集群530中对应区块链网络540的容器元数据、容器集群530中对应区块链网络540的共享存储卷元数据、以及区块链网络540中的元数据,存储到结构化的数据库600中以形成相应的元数据备份。

由上可见,在以上的恢复过程中,按照容器元数据、共享存储卷元数据、区块链网络元数据这一从底层到上层的恢复顺序,避免了同步恢复或采用其他顺序恢复而无法满足依赖关系、进而导致恢复失败的情况,保证了区块链网络恢复的稳定性。

在一些实施例中,恢复工具550,还用于调用区块链网络服务平台中数据存储集群510的管理工具520,在调用的管理工具520的进程中执行以下操作:通过容器集群530的应用程序接口服务调用容器集群530的管理工具520,在管理工具520的进程中,将容器集群530中对应区块链网络540的共享存储卷元数据存储到结构化的数据库600中,形成存储卷元数据备份。

在一些实施例中,结构化的数据库600可以部署于区块链网络服务平台500内部以在区块链网络服务平台500提供一站式的恢复服务,或者,根据开发者的保护数据安全的需求,数据库600可以是独立于区块链网络服务平台500而部署,例如集成在开发者的业务系统中。

在一个区块链网络恢复的示例中,一旦区块链网络540的数据存入了数据存储集群510中,恢复工具550将以上所述的元数据备份到数据库中;同时检测区块链网络的数据是否异常,一旦异常则触发动作,开始恢复策略,包括:恢复底层容器的集群,恢复相关容器状态,修复挂载数据卷,重启区块链网络,恢复区块链网络状态。实际应用中,比如发生区块链网络节点服务异常,无法正常提供服务的故障事件时,一旦被恢复工具550捕获,将按照上述的恢复过程将区块链网络540快速恢复到正常运行状态。

继续基于图5的区块链网络服务平台500说明故障处理的方案,参见图6,图6是本发明实施例提供的区块链网络服务平台500故障处理的流程示意图,结合步骤进行说明。

步骤101,当区块链网络540处于正常运行状态时,在恢复工具550的进程中执行备份操作。

例如,包括:将容器集群530中对应区块链网络540的容器元数据、容器集群530中对应区块链网络540的共享存储卷元数据、以及区块链网络540中的元数据,存储到结构化的数据库600中以形成相应的元数据备份。

步骤102,在恢复工具550的进程中接收区块链网络540的故障事件。

区块链网络540运行于容器集群530,容器集群530使用数据存储集群的共享存储卷。

步骤103,在恢复工具550的进程中响应于故障事件,执行恢复操作。

恢复操作包括:恢复容器集群530中对应区块链网络540的容器元数据,恢复容器集群530中对应区块链网络540的共享存储卷元数据,恢复区块链网络540中的元数据。

在一些实施例中,恢复工具550恢复容器集群530中对应区块链网络540的容器元数据的方式包括:初始化容器集群530的应用程序接口服务;从数据库600中查询容器集群530中对应区块链网络540的容器元数据备份;调用应用程序接口服务,以基于容器元数据备份恢复容器集群530中对应区块链网络540的容器元数据。

在一些实施例中,恢复工具550恢复恢复容器集群530中对应区块链网络540的共享存储卷元数据的方式包括:响应于已经恢复容器集群530中对应区块链网络540的容器元数据,调用容器集群530的应用程序接口服务,以部署容器集群530的管理工具520;在管理工具520的进程中执行以下操作:从数据库600中查询容器集群530中对应区块链网络540的存储卷元数据备份,基于存储卷元数据备份恢复容器集群530中对应区块链网络540的共享存储卷元数据。

在一些实施例中,恢复工具550恢复区块链网络540中的元数据的方式包括:响应于已经恢复容器集群530中对应区块链网络540的共享存储卷元数据,执行以下操作:从数据库600中查询区块链网络540的元数据备份,基于元数据备份,恢复区块链网络540的元数据。

在一些实施例中,恢复工具550容器集群530中对应区块链网络540的共享存储卷元数据,存储到结构化的数据库600中以形成相应的元数据备份的方式包括:调用区块链网络服务平台500中数据存储集群的管理工具520,在调用的管理工具520的进程中执行以下操作:通过容器集群530的应用程序接口服务调用容器集群530的管理工具520,以在管理工具520中进程中,将容器集群530中对应区块链网络540的共享存储卷元数据存储到结构化的数据库600,形成存储卷元数据备份。

在一些实施例中,结构化的数据库600是部署于区块链网络服务平台500内部,或者,独立于区块链网络服务平台500而部署。

结合一个具体的示例说明如图6示出的区块链网络服务平台500的故障处理过程。参见图7,图7是本发明实施例提供的区块链网络服务平台500的故障处理的流程示意图,结合图7示出的步骤进行说明区块链网络服务平台500的故障处理方案。

步骤201,恢复工具550接收到区块链网络540的故障事件时,通过调用容器集群530的应用程序接口服务(apiserver)组件初始化容器集群530。

步骤202至步骤203,恢复工具550从非结构化的数据库600查询容器集群530中针对区块链网络540所启动的容器的相关元数据的备份。

步骤204,恢复工具550通过调用应用程序接口服务组件执行以下操作:利用容器元数据备份容器集群530的容器元数据,进而将容器恢复到故障前的运行状态。

步骤205,恢复工具550通过调用应用程序接口服务组件执行以下操作:当容器集群530的容器元数据恢复后,调用应用程序接口服务组件部署数据存储集群510的管理工具(下文中为描述方便简称为管理工具)520执行步骤206和步骤207。

步骤206至步骤207,管理工具520从非结构化的数据库600中查询共享存储卷元数据备份,并返回应用程序接口服务组件。

步骤208,应用程序接口服务组件基于共享存储卷元数据备份恢复容器集群530中的共享存储卷元数据,进而恢复共享存储卷。

步骤209至步骤210,应用程序接口服务组件从管理工具520接口接收到恢复共享存储卷元数据恢复完成,向恢复工具反馈恢复容器元数据及相关共享存储卷元数据恢复完成。

步骤211至步骤212,恢复工具550从结构化的数据库600查询区块链网络540元数据备份。

步骤213至步骤214,恢复工具550调用应用程序接口服务组件,以基于区块链网络540元数据备份恢复容器集群530中对应区块链网络540的元数据,并启动区块链网络540。

例如,区块链网络540的元数据包括区块链网络540中的节点类型、不同类型节点的数量以及所采用的共识机制等信息。

步骤215,恢复工具550从应用程序接口服务组件接收区块链网络启动的消息,恢复完成。

结合上文可知,实现本发明实施例的区块链网络服务平台在资源层可以提供为存储器和处理器的形式,在存储器中存储有可执行指令,当可执行指令被处理器执行时,运行处理器和存储器的多个物理机构成了数据存储集群、容器集群、管理工具和恢复工具,还可以实现结构化的数据库,进而来实现本发明实施例的区块链网络服务平台中的故障处理方法。

结合上文可知,实现本发明实施例的故障处理方案还可以体现为一种恢复工具,恢复工具可以是默认集成在区块链网络服务平台中的功能,也可以提供为应用商店中的应用,由开发者根据需求选用;恢复工具可以将故障处理的操作交付给容器集群内部的故障处理机制,或者,堵塞容器集群内部的故障处理机制从而切换到恢复工具自身的故障处理机制,以支持基于恢复工具从容器集群中外部进行故障恢复的机制/依赖于容器集群自身的状态组件进行故障恢复的机制之间进行切换。

在一些实施例中,恢复工具550可以体现纯软件模式的形式,或者体现为软硬件结合的形式,以软硬件模块结合为例,参见图8,图8是本发明实施例提供的恢复工具550的结构示意图,包括至少一个处理器551、存储器554、至少一个网络接口552。共识节点110中的各个组件通过总线系统553耦合在一起。可理解,总线系统553用于实现这些组件之间的连接通信。总线系统553除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统553。

存储器554可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。本发明实施例描述的存储器554旨在包括这些和任意其它适合类型的存储器。

处理器554可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器554能够存储可执行指令以支持恢复工具的操作,这些可执行指令的示例可以包括:事件监听单元5541,用于接收区块链网络的故障事件,区块链网络运行于容器集群,容器集群使用数据存储集群的共享存储卷;恢复单元5542,用于响应于故障事件,在区块链网络服务平台的恢复工具的进程中执行以下操作:恢复容器集群中对应区块链网络的容器元数据,恢复容器集群中对应区块链网络的共享存储卷元数据,恢复区块链网络中的元数据;初始化单元5543,用于初始化区块链网络。

结合上文可知,实现本发明实施例的故障处理方案还可以体现为一种存储介质,例如可以是实现本发明实施例的区块链网络服务平台资源层的各种非易失性存储器,包括只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、闪存(flashmemory)等,其中存储有可执行指令,当所述可执行指令被执行时,运行处理器和存储器的多个物理机构成了恢复工具,或者区块链网络服务平台(包括数据存储集群、容器集群、管理工具和恢复工具,还可以包括结构化的数据库),进而来实现本发明实施例的区块链网络服务平台中的故障处理方法。

综上所述,本发明实施例具有以下有益效果:

1)采用基于外部配置内容,而非kubernets内部状态的处理机制,降低区块链容器集群恢复的复杂度;

2)将区块链容器集群故障恢复所需的区块链网络配置数据和区块链数据volume元信息存储与kubernets内部状态数据分离,备份到专门的数据库集群中,减小备份数据库的数据规模和访问负载;

3)区块链容器集群故障恢复备份数据库采用结构化的数据库,提高故障恢复过程中的数据检索效率。

4)基于备份区块链网络配置数据和存储volume元数据的区块链容器集群轻量快速恢复流程。

以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

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