区块链中的智能合约管理系统、方法、介质和产品转让专利

申请号 : CN202110694661.9

文献号 : CN113312429B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 肖凯王舒榕郑三宝李洪业

申请人 : 工银科技有限公司中国工商银行股份有限公司

摘要 :

本公开提供了一种区块链中的智能合约管理系统,属于区块链技术领域。所述区块链中的智能合约管理系统包括基于Kubernetes的容器控制器模块,所述基于Kubernetes的容器控制器模块用于使用Kubernetes平台实现智能合约容器的创建、运行、关闭或移除。借助于所述管理系统,能够提升区块链网络中的智能合约容器的运维和管理能力,优化智能合约容器在集群环境下的易用性与可用性。本公开还提供了一种区块链中的智能合约管理方法、介质和产品。

权利要求 :

1.一种区块链中的智能合约管理系统,其特征在于,所述管理系统包括:基于Kubernetes的容器控制器模块,用于使用Kubernetes平台实现智能合约容器的操作方法;

基于Docker的容器控制器模块,用于调用注册的Docker虚拟机来实现智能合约容器的操作方法;

虚拟机控制器模块,用于根据判断条件选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块;

智能合约支持模块,用于处理智能合约相关请求和参数,是智能合约操作的入口;

智能合约运行支持模块,包括Launcher与Container两个模块,Launcher模块用于提供智能合约的注册,是智能合约创建、部署的入口;Container模块则作为容器和/或虚拟机操作的入口,负责与所述虚拟机控制器模块的交互;

句柄管理模块,用于负责各智能合约启动状态与通讯句柄的管理;以及

平台支持模块,是智能合约编写语言平台支持模块,实现智能合约镜像文件的创建和打包,便于所述虚拟机控制器模块的执行,其中,所述根据判断条件选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块,具体包括:当所述虚拟机控制器模块判断已开启Kubernetes智能合约配置时,调用所述基于Kubernetes的容器控制器模块;

当所述虚拟机控制器模块判断未开启Kubernetes智能合约配置时,调用所述基于Docker的容器控制器模块,并且其中,所述虚拟机控制器模块通过设置条件配置参数Kube_Enable来判断是否已开启Kubernetes智能合约配置,进而选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块。

2.根据权利要求1所述的区块链中的智能合约管理系统,其特征在于,所述基于Kubernetes的容器控制器模块,包括Provider模块和基于Kubernetes的虚拟机,其中:所述Provider模块,用于创建基于Kubernetes的虚拟机;

所述基于Kubernetes的虚拟机,用于实现所述智能合约容器的操作方法。

3.根据权利要求1或2所述的区块链中的智能合约管理系统,其特征在于,所述智能合约容器的操作方法包括:智能合约容器的创建、运行、关闭或移除。

4.根据权利要求1或2所述的区块链中的智能合约管理系统,其特征在于,所述基于Kubernetes的容器控制器模块还用于:通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。

5.根据权利要求3所述的区块链中的智能合约管理系统,其特征在于,创建智能合约具体包括:调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。

6.根据权利要求5所述的区块链中的智能合约管理系统,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。

7.根据权利要求6所述的区块链中的智能合约管理系统,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。

8.根据权利要求7所述的区块链中的智能合约管理系统,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。

9.根据权利要求1所述的区块链中的智能合约管理系统,其特征在于,所述基于Docker的容器控制器模块,还用于通过go‑dockerclient包来封装对Docker API的访问,实现对Docker的调用。

10.根据权利要求1所述的区块链中的智能合约管理系统,其特征在于,当判断所述Kube_Enable=true时,确定调用所述基于Kubernetes的容器控制器模块;

当判断所述Kube_Enable=false时,确定调用所述基于Docker的容器控制器模块。

11.一种区块链中的智能合约管理方法,其特征在于,所述管理方法包括如下步骤:基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法;

接收客户端发送的智能合约部署或执行请求;

智能合约支持模块根据请求的类型对请求进行处理,检查句柄管理模块中是否存在智能合约通讯句柄,如果句柄管理模块中不存在智能合约通讯句柄,则进入智能合约运行支持模块进行智能合约的创建与通讯句柄的更新;

智能合约运行支持模块中的Launcher模块检查智能合约的运行状态,如果智能合约运行,则返回智能合约状态来更新智能合约通讯句柄,过程结束;如果智能合约未运行,则进入智能合约运行支持模块中的Container模块启动智能合约;以及智能合约运行支持模块中的Container模块获取智能合约相关配置参数,拼装智能合约启动请求,并调用虚拟机控制器模块,其中,基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法,包括:虚拟机控制器模块判断已开启Kubernetes智能合约配置时,所述基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法,具体包括:所述虚拟机控制器模块判断未开启所述Kubernetes智能合约配置时,基于Docker的容器控制器模块调用注册的Docker虚拟机来实现智能合约容器的操作方法,并通过Platforms模块生成Dockerfile文件,创建智能合约镜像依赖包,并且其中,所述虚拟机控制器模块通过设置条件配置参数Kube_Enable=true或false来判断是否已开启Kubernetes智能合约配置,进而选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块。

12.根据权利要求11所述的区块链中的智能合约管理方法,其特征在于,所述智能合约容器的操作方法包括:智能合约容器的创建、运行、关闭或移除。

13.根据权利要求11或12所述的区块链中的智能合约管理方法,其特征在于,所述使用Kubernetes平台实现智能合约容器的操作方法,具体包括:所述基于Kubernetes的容器控制器模块调用基于Kubernetes的虚拟机创建、运行、关闭或移除智能合约。

14.根据权利要求13所述的区块链中的智能合约管理方法,其特征在于,所述基于Kubernetes的虚拟机是由所述基于Kubernetes的容器控制器模块中的Provider模块创建的。

15.根据权利要求11或12所述的区块链中的智能合约管理方法,其特征在于,所述方法还包括:所述基于Kubernetes的虚拟机通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。

16.根据权利要求13所述的区块链中的智能合约管理方法,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,具体包括:调用所述基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。

17.根据权利要求16所述的区块链中的智能合约管理方法,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。

18.根据权利要求17所述的区块链中的智能合约管理方法,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。

19.根据权利要求18所述的区块链中的智能合约管理方法,其特征在于,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。

20.根据权利要求11所述的区块链中的智能合约管理方法,其特征在于,当判断所述Kube_Enable=true时,确定调用所述基于Kubernetes的容器控制器模块;

当判断所述Kube_Enable=false时,确定调用所述基于Docker的容器控制器模块。

21.一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求11 20中任一项所述的方法。

~

22.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求11 20中任一项所述的方法。

~

23.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求11 20中任一项所述的方法。

~

说明书 :

区块链中的智能合约管理系统、方法、介质和产品

技术领域

[0001] 本公开涉及区块链技术领域。具体地,涉及一种区块链中的智能合约管理系统、方法、介质和产品。

背景技术

[0002] 在对本公开的内容进行说明解释之前,先对本领域的公知术语进行如下说明:
[0003] 容器(Container):容器是一种轻量级的虚拟化技术,相对于传统的虚拟机技术,容器具有轻量、便于移植、高性能、可扩展等优势。
[0004] Docker:Docker是一种创建容器的工具,是一种容器管理的引擎。
[0005] 镜像(Image):Docker的镜像是一个特殊的文件系统,它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为容器运行时准备的一些配置参数(例如环境变量)。
[0006] Kubernetes(K8S):Kubernetes是功能强大的容器调度管理平台,也是目前最好的微服务运行环境之一,它赋予了Docker更多的价值:可调度、可编排、易管理、易扩展;通过Kubernetes管理容器和底层资源能极大的提升集群的资源利用率;在联盟链场景中部署在云上的区块链服务可以使用Kubernetes以容器的方式运行,实现便捷管理。
[0007] Hyperledger Fabric(超级账本):Hyperledger Fabric是目前业内最火的开源区块链项目,也是国内联盟链场景中使用最多的区块链底层之一,它是一个开源的企业级区块链解决方案,具有高度模块化和可配置的架构。
[0008] 在Hyperledger Fabric中,链码(Chaincode)又称为智能合约,Hyperledger Fabric的智能合约支持通用主流语言编写,并以Docker的方式作为虚拟化容器沙箱在宿主机上隔离运行。随着容器技术的普及与分布式集群的大规模应用,Hyperledger Fabric基于Docker部署和运行的方式,不能较好的集成到主流的分布式容器管理平台中。随着业务的扩张和版本的升级,越来越多的智能合约容器在生命周期结束之后无法有效回收并分布在集群不同的服务器中,不仅增加了集群对容器管理难度,同时也造成了资源上的浪费。

发明内容

[0009] 为了解决现有技术中的Fabric智能合约容器无法适配现有Kubernetes集群环境而引起的合约管理困难的问题,本公开提供了一种区块链中的智能合约管理系统、方法、介质和产品,用于提升区块链网络中的智能合约容器的运维和管理能力,优化了智能合约容器在集群环境下的易用性与可用性。
[0010] 根据本公开的第一个方面,提供了一种区块链中的智能合约管理系统,所述管理系统包括基于Kubernetes的容器控制器模块,其中:
[0011] 所述基于Kubernetes的容器控制器模块,用于使用Kubernetes平台实现智能合约容器的操作方法。
[0012] 根据本公开的实施例,所述基于Kubernetes的容器控制器模块,包括Provider模块和基于Kubernetes的虚拟机,其中:
[0013] 所述Provider模块,用于创建基于Kubernetes的虚拟机;
[0014] 所述基于Kubernetes的虚拟机,用于实现所述智能合约容器的操作方法。
[0015] 根据本公开的实施例,所述智能合约容器的操作方法包括:智能合约容器的创建、运行、关闭或移除。
[0016] 根据本公开的实施例,所述基于Kubernetes的容器控制器模块还用于:
[0017] 通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。
[0018] 根据本公开的实施例,所述创建智能合约,具体包括:
[0019] 调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。
[0020] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:
[0021] 生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。
[0022] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:
[0023] 在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。
[0024] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:
[0025] 在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。
[0026] 根据本公开的实施例,所述管理系统还包括基于Docker的容器控制器模块,其中:
[0027] 所述基于Docker的容器控制器模块,用于调用注册的Docker虚拟机来实现智能合约容器的操作方法,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。
[0028] 根据本公开的实施例,所述基于Docker的容器控制器模块,还用于通过go‑dockerclient包来封装对Docker API的访问,实现对Docker的调用。
[0029] 根据本公开的实施例,所述管理系统还包括虚拟机控制器模块,其中:
[0030] 所述虚拟机控制器模块,用于根据判断条件选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块。
[0031] 根据本公开的实施例,所述根据判断条件选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块,具体包括:
[0032] 当所述虚拟机控制器模块判断已开启Kubernetes智能合约配置时,调用所述基于Kubernetes的容器控制器模块;
[0033] 当所述虚拟机控制器模块判断未开启Kubernetes智能合约配置时,调用所述基于Docker的容器控制器模块。
[0034] 根据本公开的实施例,所述虚拟机控制器模块通过设置条件配置参数Kube_Enable来判断是否已开启Kubernetes智能合约配置,进而选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块。
[0035] 根据本公开的实施例,当判断所述Kube_Enable=true时,确定调用所述基于Kubernetes的容器控制器模块;
[0036] 当判断所述Kube_Enable=false时,确定调用所述基于Docker的容器控制器模块。
[0037] 根据本公开的实施例,所述管理系统还包括:智能合约支持模块、智能合约运行支持模块、句柄管理模块、平台支持模块,其中:
[0038] 所述智能合约支持模块,用于处理智能合约相关请求和参数,是智能合约操作的入口;
[0039] 所述智能合约运行支持模块,包括Launcher与Container两个模块,Launcher模块用于提供智能合约的注册,是智能合约创建、部署的入口;Container模块则作为容器和/或虚拟机操作的入口,负责与所述虚拟机控制器模块的交互;
[0040] 所述句柄管理模块,用于负责各智能合约启动状态与通讯句柄的管理;
[0041] 所述平台支持模块,是智能合约编写语言平台支持模块,实现智能合约镜像文件的创建和打包,便于所述虚拟机控制器模块的执行。
[0042] 本公开的第二方面提供了一种区块链中的智能合约管理方法,所述管理方法包括如下步骤:
[0043] 基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法。
[0044] 根据本公开的实施例,所述智能合约容器的操作方法包括:智能合约容器的创建、运行、关闭或移除。
[0045] 根据本公开的实施例,所述使用Kubernetes平台实现智能合约容器的操作方法,具体包括:
[0046] 所述基于Kubernetes的容器控制器模块调用基于Kubernetes的虚拟机创建、运行、关闭或移除智能合约。
[0047] 根据本公开的实施例,所述基于Kubernetes的虚拟机是由所述基于Kubernetes的容器控制器模块中的Provider模块创建的。
[0048] 根据本公开的实施例,所述方法还包括:
[0049] 所述基于Kubernetes的虚拟机通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。
[0050] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,具体包括:
[0051] 调用所述基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。
[0052] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:
[0053] 生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。
[0054] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:
[0055] 在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。
[0056] 根据本公开的实施例,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:
[0057] 在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。
[0058] 根据本公开的实施例,所述方法进一步包括:
[0059] 虚拟机控制器模块判断已开启Kubernetes智能合约配置时,所述基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法。
[0060] 根据本公开的实施例,所述方法进一步包括:
[0061] 所述虚拟机控制器模块判断未开启所述Kubernetes智能合约配置时,基于Docker的容器控制器模块调用注册的Docker虚拟机来实现智能合约容器的操作方法,并通过Platforms模块生成Dockerfile文件,创建智能合约镜像依赖包,其中,所述智能合约容器的操作方法包括创建、运行、关闭或移除智能合约容器。
[0062] 根据本公开的实施例,所述虚拟机控制器模块通过设置条件配置参数Kube_Enable=true或false来判断是否已开启Kubernetes智能合约配置,进而选择调用所述基于Kubernetes的容器控制器模块或所述基于Docker的容器控制器模块。
[0063] 根据本公开的实施例,当判断所述Kube_Enable=true时,确定调用所述基于Kubernetes的容器控制器模块;
[0064] 当判断所述Kube_Enable=false时,确定调用所述基于Docker的容器控制器模块。
[0065] 根据本公开的实施例,所述方法进一步包括:
[0066] 接收客户端发送的智能合约部署或执行请求;
[0067] 智能合约支持模块根据请求的类型对请求进行处理,检查句柄管理模块中是否存在智能合约通讯句柄,如果句柄管理模块中不存在智能合约通讯句柄,则进入智能合约运行支持模块进行智能合约的创建与通讯句柄的更新;
[0068] 智能合约运行支持模块中的Launcher模块检查智能合约的运行状态,如果智能合约运行,则返回智能合约状态来更新智能合约通讯句柄,过程结束;如果智能合约未运行,则进入智能合约运行支持模块中的Container模块启动智能合约;
[0069] 智能合约运行支持模块中的Container模块获取智能合约相关配置参数,拼装智能合约启动请求,并调用虚拟机控制器模块。
[0070] 本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述一种区块链中的智能合约管理方法。
[0071] 本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述一种区块链中的智能合约管理方法。
[0072] 本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述一种区块链中的智能合约管理方法。
[0073] 与现有技术相比,本公开提供的一种区块链中的智能合约管理系统、方法、介质和产品,能够借助于Kubernetes平台,对原有的Fabric智能合约模块进行改造,通过参数配置控制Kubernetes智能合约容器的管理,实现了在Kubernetes平台上的智能合约的管理功能,提升了区块链网络中的智能合约容器的运维和管理能力,优化了智能合约容器在集群环境下的易用性与可用性。

附图说明

[0074] 通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
[0075] 图1示意性示出了适用于本公开实施例的一种区块链网络的系统架构图;
[0076] 图2示意性示出了现有技术中的一种区块链中的智能合约管理系统整体架构框图;
[0077] 图3示意性示出了现有技术中的一种区块链中的智能合约管理系统方法的流程图;
[0078] 图4示意性示出了根据本公开实施例的基于Kubernetes的容器控制器模块的结构框图;
[0079] 图5示意性示出了根据本公开实施例的一种区块链中的智能合约管理系统整体架构框图;
[0080] 图6示意性示出了根据本公开实施例的一种区块链中的智能合约管理系统方法的流程图;
[0081] 图7示意性示出了根据本公开实施例的适于实现一种区块链中的智能合约管理系统方法的电子设备的方框图。

具体实施方式

[0082] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0083] 在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
[0084] 在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0085] 在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
[0086] 本公开的实施例提供了一种区块链中的智能合约管理系统、方法、介质和产品。其中,所述管理系统包括基于Kubernetes的容器控制器模块,所述基于Kubernetes的容器控制器模块,是智能合约部署运行的核心模块,用于使用Kubernetes平台实现智能合约容器的操作方法,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。所述基于Kubernetes的容器控制器模块还用于通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。所述基于Kubernetes的容器控制器模块包括Provider模块和基于Kubernetes的虚拟机(即KubeVM),其中:所述Provider模块,用于创建基于Kubernetes的虚拟机;所述基于Kubernetes的虚拟机,用于创建、运行、关闭或移除智能合约,并通过Kubernetes平台提供的k8s.io/client‑go包来封装对KubernetesAPI的访问,实现对Kubernetes的调用。
[0087] 与现有技术相比,本公开提供的一种区块链中的智能合约管理系统、方法、介质和产品,能够借助于Kubernetes平台,对原有的Fabric智能合约模块进行改造,通过参数配置控制Kubernetes智能合约容器的管理,实现了在Kubernetes平台上的智能合约的管理功能,提升了区块链网络中的智能合约容器的运维和管理能力,优化了智能合约容器在集群环境下的易用性与可用性。
[0088] 图1示意性示出了适用于本公开实施例的现有技术中的一种区块链网络的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
[0089] 如图1所示,所述区块链网络的系统架构101包括区块链节点1011、区块链节点1012、区块链节点1013、区块链节点1014以及区块链网络103。区块链网络103用以在多个区块链节点之间提供通信链路的介质。区块链网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0090] 应该理解,图1中部署的区块链网络的系统架构中节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的区块链节点。
[0091] 以下将基于图1描述的网络架构场景,通过图2‑图7对本公开实施例的一种区块链中的智能合约管理系统、方法、介质和产品进行详细描述。
[0092] 图2示意性示出了现有技术中的一种区块链中的智能合约管理系统200的整体架构,所述整体架构包括以下几个模块:
[0093] 智能合约支持模块201,即ChaincodeSupport模块,用于处理智能合约相关请求和参数,是智能合约操作的入口,提供Launcher、Execute、Invoke等方法;
[0094] 智能合约运行支持模块202,即Runtime模块,主要包括Launcher与Container两个模块,Launcher模块用于提供智能合约的注册,是智能合约创建、部署的入口;Container模块则作为容器和/或虚拟机操作的入口,负责与下层VMController模块的交互;
[0095] 虚拟机控制器模块203,即VMController模块,可根据参数类型创建不同的虚拟机模块,并提供启动、暂停等常用的智能合约操作入口;
[0096] 基于Docker的容器控制器模块204,即DockerController模块,是智能合约部署运行的核心模块,用于调用注册的Docker虚拟机来实现智能合约容器的操作方法,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。所述基于Docker的容器控制器模块通过go‑dockerclient包来封装对Docker API的访问,实现对Docker的调用;
[0097] 句柄管理模块205,即HandlerManager模块,负责各个智能合约启动状态与通讯句柄的管理;
[0098] 平台支持模块206,即Plamforms模块,是智能合约编写语言平台支持模块,实现了智能合约镜像文件的创建和打包,便于容器控制器模块的执行。目前实现了golang、node、java三种常用语言。
[0099] Docker模块207:Docker是一种创建容器的工具,是一种容器管理的引擎。
[0100] 基于图2中的现有技术中的一种区块链中的智能合约管理系统整体架构,图3示意性示出了现有技术中的一种区块链中的智能合约管理方法的整体流程,所述整体流程包括操作S301‑操作S306,具体如下:
[0101] 在操作301,接收客户端发送的智能合约部署或执行请求;
[0102] 在操作302,智能合约支持模块(即ChaincodeSupport模块)根据请求的类型对请求进行处理,检查句柄管理模块(即HandlerManager模块)中是否存在智能合约通讯句柄,如果句柄管理模块中不存在智能合约通讯句柄,则进入智能合约运行支持模块(即Runtime模块)进行智能合约的创建与通讯句柄的更新;
[0103] 在操作303,智能合约运行支持模块(即Runtime模块)中的Launcher模块检查智能合约的运行状态,如果智能合约运行,则返回智能合约的状态来更新智能合约通讯句柄,过程结束;如果智能合约未运行,则进入Runtime模块中的Container模块启动智能合约;
[0104] 在操作304,智能合约运行支持模块(即Runtime模块)中的Container模块获取智能合约相关配置参数,拼装生成智能合约启动请求,并调用虚拟机控制器模块(即VMController模块);
[0105] 在操作305,虚拟机控制器模块(即VMController模块)根据智能合约相关配置参数,调用基于Docker的容器控制器模块(即DockerController模块)中注册的Docker虚拟机(即Docker VM),同时通过Platforms模块生成Dockerfile文件并创建智能合约镜像依赖包;
[0106] 在操作306,基于Docker的容器控制器模块(即DockerController模块)中的Docker虚拟机创建智能合约,为智能合约新增相关证书文件,启动智能合约,完成智能合约启动过程。具体地,在Docker模式下,智能合约的启动流程为:生成镜像文件并创建镜像,创建智能合约,将所述智能合约的证书文件更新至容器中,并运行智能合约容器。
[0107] 从上述现有技术中的智能合约的创建、启动和部署的整体流程可以看出,智能合约的创建、启动和部署以及停止等核心操作都是通过DockerController模块中的Docker虚拟机实现,在VMController中定义了虚拟机VM的接口标准,利用该接口标准可以实现插件化的虚拟机,这就为实现基于别的框架或管理平台的智能合约的创建、启动和部署以及停止等核心操作成为可能。
[0108] 鉴于Kubernetes的强大功能,可以通过新建一套基于Kubernetes的容器控制器模块(即KubeController模块)来提升智能合约容器的管理能力,参见图4,所述基于Kubernetes的容器控制器模块400包括用于管理智能合约的基于Kubernetes的虚拟机(即KubeVM)401和用于创建基于Kubernetes的虚拟机的Provider模块402,来替换现有技术中的DockerController模块及其所包括的Provider模块和Docker虚拟机。
[0109] 图5示意性示出了根据本公开实施例的一种区块链中的智能合约管理系统500,所述管理系统包括基于Kubernetes的容器控制器模块(即KubeController模块)501。
[0110] 所述基于Kubernetes的容器控制器模块501,是智能合约部署运行的核心模块,用于使用Kubernetes平台实现智能合约容器的操作方法,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。所述基于Kubernetes的容器控制器模块还用于通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。
[0111] 所述基于Kubernetes的容器控制器模块501,包括Provider模块5011和基于Kubernetes的虚拟机(即KubeVM)5012,其中:
[0112] 所述Provider模块5011,用于创建基于Kubernetes的虚拟机5012;
[0113] 所述基于Kubernetes的虚拟机5012,用于实现智能合约容器的操作方法,所述智能合约容器的操作方法包括创建、运行、关闭或移除智能合约,并通过Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。
[0114] 所述创建智能合约,具体包括:调用基于Kubernetes的虚拟机5012创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。
[0115] 进一步地,所述Provider模块5011和基于Kubernetes的虚拟机5012预先在虚拟机控制器模块503中注册。
[0116] 由于Docker本身可以作为Kubernetes集群环境的基础设施,所以现有的Docker相关的镜像创建等流程,KubeController可以直接复用,降低了改造难度。
[0117] 但是,在证书嵌入方面,现有技术中原有的Docker模式与Kubernetes模式有所不同,Docker模式下智能合约的启动流程为:生成镜像文件并创建镜像,创建智能合约,将所述智能合约的证书文件更新至容器中,并运行智能合约容器。然而在Kubernetes模式下无法进行容器的更新,因此需要将证书文件一开始就一起打包至镜像中然后直接运行,调整后的在Kubernetes模式下的流程,也即调用基于Kubernetes的虚拟机5012创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。
[0118] 同时由于镜像只在本地创建,集群环境中无法获取其他机器的镜像,所以在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,用于设置智能合约的启动位置。因此,所述调用基于Kubernetes的虚拟机5012创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。
[0119] 另外,在Kubernetes中可以通过namespace的方式将一套区块链网络中的所有节点分为一组集中管理,因此,所述调用基于Kubernetes的虚拟机5012创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。
[0120] 进一步地,所述管理系统还包括:
[0121] 基于Docker的容器控制器模块(即DockerController模块)502,是智能合约部署运行的核心模块,用于调用注册的Docker虚拟机来实现智能合约容器的操作方法,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。所述基于Docker的容器控制器模块还用于通过go‑dockerclient包来封装对Docker API的访问,实现对Docker的调用。
[0122] 所述基于Docker的容器控制器模块502,包括Provider模块5021和Docker虚拟机(即DockerVM)5022,其中:
[0123] 所述Provider模块5021,用于创建Docker虚拟机5022;
[0124] 所述Docker虚拟机5022,用于实现智能合约容器的操作方法,所述智能合约容器的操作方法包括创建、运行、关闭或移除智能合约,并通过go‑dockerclient包来封装对Docker API的访问,实现对Docker的调用。
[0125] 进一步地,所述创建智能合约,具体包括:调用Docker虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。
[0126] 进一步地,所述管理系统还包括:虚拟机控制器模块(即VMController模块)503,用于根据判断条件选择调用所述基于Kubernetes的容器控制器模块501或所述基于Docker的容器控制器模块502。
[0127] 所述根据判断条件选择调用所述基于Kubernetes的容器控制器模块501或所述基于Docker的容器控制器模块502,具体包括:
[0128] 当所述虚拟机控制器模块503判断已开启Kubernetes智能合约配置时,调用所述基于Kubernetes的容器控制器模块501。
[0129] 所述根据判断条件选择调用所述基于Kubernetes的容器控制器模块501或所述基于Docker的容器控制器模块502,进一步包括:
[0130] 当所述虚拟机控制器模块503判断未开启Kubernetes智能合约配置时,调用所述基于Docker的容器控制器模块502,并通过Platforms模块生成Dockerfile文件,创建智能合约镜像依赖包。
[0131] 进一步地,所述根据判断条件选择调用所述基于Kubernetes的容器控制器模块501或所述基于Docker的容器控制器模块502,具体包括:
[0132] 所述虚拟机控制器模块503通过设置条件配置参数Kube_Enable=true或false来判断调用所述基于Kubernetes的容器控制器模块501或所述基于Docker的容器控制器模块502。具体地,当判断所述Kube_Enable=true时,确定调用所述基于Kubernetes的容器控制器模块501来进行Kubernetes智能合约配置;当判断所述Kube_Enable=false时,确定调用所述基于Docker的容器控制器模块502来进行Docker智能合约配置。
[0133] 进一步地,所述管理系统还包括:智能合约支持模块504、智能合约运行支持模块505、句柄管理模块506、平台支持模块507,其中:
[0134] 所述智能合约支持模块504,即ChaincodeSupport模块,用于处理智能合约相关请求和参数,是智能合约操作的入口,提供Launcher、Execute、Invoke等方法;
[0135] 所述智能合约运行支持模块505,即Runtime模块,包括Launcher与Container两个模块,Launcher模块用于提供智能合约的注册,是智能合约创建、部署的入口;Container模块则作为容器和/或虚拟机操作的入口,负责与所述虚拟机控制器模块503的交互;
[0136] 所述句柄管理模块506,即HandlerManager模块,用于负责各智能合约启动状态与通讯句柄的管理;
[0137] 所述平台支持模块507,即Plamforms模块,是智能合约编写语言平台支持模块,实现智能合约镜像文件的创建和打包,便于所述虚拟机控制器模块的执行。目前实现了golang、node、java三种常用语言。
[0138] Docker模块508,Docker是一种创建容器的工具,是一种容器管理的引擎。
[0139] Kubernetes模块509,Kubernetes是功能强大的容器调度管理平台,也是目前最好的微服务运行环境之一,它赋予了Docker更多的价值:可调度、可编排、易管理、易扩展;通过Kubernetes管理容器和底层资源能极大的提升集群的资源利用率;在联盟链场景中部署在云上的区块链服务可以使用Kubernetes以容器的方式运行,实现便捷管理。
[0140] 基于图4、5中的整体架构,图6示意性示出了本公开实施例所提供的一种区块链中的智能合约管理方法,所述方法包括如下操作:
[0141] 在操作606,基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法。其中,所述智能合约容器的操作方法包括智能合约容器的创建、运行、关闭或移除。
[0142] 进一步地,所述使用Kubernetes平台实现智能合约容器的操作方法,具体包括:所述基于Kubernetes的容器控制器模块调用基于Kubernetes的虚拟机创建、运行、关闭或移除智能合约。
[0143] 其中,所述基于Kubernetes的虚拟机是由所述基于Kubernetes的容器控制器模块中的Provider模块创建的。
[0144] 进一步地,所述方法还包括:所述基于Kubernetes的虚拟机通过所述Kubernetes平台提供的k8s.io/client‑go包来封装对Kubernetes API的访问,实现对Kubernetes的调用。
[0145] 进一步地,所述调用基于Kubernetes的虚拟机创建智能合约,具体包括:调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。
[0146] 由于Docker本身可以作为Kubernetes集群环境的基础设施,所以现有的Docker相关的镜像创建等流程,KubeController可以直接复用,降低了改造难度。
[0147] 但是,在证书嵌入方面,现有技术中原有的Docker模式与Kubernetes模式有所不同,Docker模式下智能合约的启动流程为:生成镜像文件并创建镜像,创建智能合约,将所述智能合约的证书文件更新至容器中,并运行智能合约容器。然而在Kubernetes模式下无法进行容器的更新,因此需要将证书文件一开始就一起打包至镜像中然后直接运行,调整后的在Kubernetes模式下的流程,也即调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:生成镜像文件,为所述智能合约新增证书文件,将所述证书文件更新至所述镜像文件,创建镜像,调用基于Kubernetes的虚拟机创建所述智能合约,调用Kubernetes运行智能合约容器。
[0148] 同时由于镜像只在本地创建,集群环境中无法获取其他机器的镜像,所以在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,用于设置智能合约的启动位置;因此,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在节点环境变量中加入启动宿主机的节点名称Kube_Node_Name,来设置所述智能合约的启动位置。
[0149] 另外,在Kubernetes中可以通过namespace的方式将一套区块链网络中的所有节点分为一组集中管理,因此,所述调用基于Kubernetes的虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,还包括:在所述节点环境变量中加入当前所在namespace的名称参数Kube_Namespace,让智能合约容器加入到区块链网络的分组中,便于合约容器的集中统一管理。
[0150] 所述方法进一步包括:
[0151] 操作605,虚拟机控制器模块(即VMController模块)判断已开启Kubernetes智能合约配置时,执行所述操作606,即基于Kubernetes的容器控制器模块使用Kubernetes平台实现智能合约容器的操作方法。
[0152] 在执行所述操作606之前,所述虚拟机控制器模块通过Platforms模块生成Dockerfile文件并创建智能合约镜像依赖包。
[0153] 进一步地,所述操作605还包括:
[0154] 虚拟机控制器模块判断未开启Kubernetes智能合约配置时,执行操作607,并通过Platforms模块生成Dockerfile文件,创建智能合约镜像依赖包。
[0155] 操作607,基于Docker的容器控制器模块调用注册的Docker虚拟机来实现智能合约容器的操作方法。所述智能合约容器的操作方法包括创建、运行、关闭或移除智能合约容器。
[0156] 所述创建智能合约容器,具体包括:调用Docker虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约。进一步地,所述调用Docker虚拟机创建智能合约,为所述智能合约新增相关证书文件,并启动智能合约,具体包括:生成镜像文件并创建镜像,调用Docker虚拟机创建智能合约,将所述智能合约的证书文件更新至容器中,并运行智能合约容器。
[0157] 进一步地,通过设置条件配置参数Kube_Enable=true或者false来判断是否开启Kubernetes智能合约配置。具体地,当判断Kube_Enable=true时,确定开启Kubernetes智能合约配置;当判断Kube_Enable=false时,确定未开启Kubernetes智能合约配置。
[0158] 在所述操作605之前,所述方法进一步包括操作601‑604:
[0159] 在操作601,接收客户端发送的智能合约部署或执行请求;
[0160] 在操作602,智能合约支持模块根据请求的类型对请求进行处理,检查句柄管理模块中是否存在智能合约通讯句柄,如果句柄管理模块中不存在智能合约通讯句柄,则进入Runtime模块进行智能合约的创建与通讯句柄的更新;
[0161] 在操作603,智能合约运行支持模块中的Launcher模块检查智能合约的运行状态,如果智能合约运行,则返回智能合约状态来更新智能合约通讯句柄,过程结束;如果智能合约未运行,则进入智能合约运行支持模块中的Container模块启动智能合约;
[0162] 在操作604,智能合约运行支持模块中的Container模块获取智能合约相关配置参数,拼装智能合约启动请求,并调用虚拟机控制器模块;
[0163] 所述方法进一步包括:
[0164] 在节点启动时将基于Kubernetes的容器控制器模块中的Provider模块和基于Kubernetes的虚拟机一起注册到虚拟机控制器模块中。所述Provider模块,用于为外部模块创建基于Kubernetes的虚拟机。
[0165] 根据本公开的上述各个实施例,所述的各个模块中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,所述的各个模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,所述的各个模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0166] 图7示意性示出了根据本公开实施例的适于实现一种基于区块链的备份记录数据处理方法的电子设备的方框图。
[0167] 如图7所示,根据本公开实施例的电子设备700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0168] 在RAM 703中,存储有电子设备700操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0169] 根据本公开的实施例,电子设备700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。电子设备700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
[0170] 本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0171] 根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。
[0172] 本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的物品推荐方法。
[0173] 在该计算机程序被处理器701执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0174] 在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0175] 在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0176] 根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0177] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0178] 本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0179] 以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。