分布式微服务集群的升级方法及相关系统与流程

文档序号:15517495发布日期:2018-09-25 18:42阅读:459来源:国知局

本申请涉及云计算技术领域,尤其涉及分布式微服务集群技术。



背景技术:

基于容器集群管理系统构建的平台即服务(platform-as-a-service,paas)的应用场景,常见的一种是基于docker运行应用程序(application,app)的分布式微服务集群。基于docker运行app的分布式微服务集群是指:app的多个微服务被部署在多台服务器上,通过多台服务器之间的相互通信和相互调用来执行任务。

在实际的应用过程中,app分布式微服务集群被部署完成后,会需要执行升级操作。并且,一般采用滚动升级方式完成app分布式微服务集群的升级操作,滚动升级方式是指:利用新版本app的存储实例替换已有的当前版本app的存储实例。

但是,在app分布式微服务集群的实际运行过程中,当前版本app的存储实例中的配置项的值会变更。采用滚动升级方式完成app分布式微服务集群的升级操作,当前版本app的存储实例中配置项变更后的值,又会被新版本app的存储实例中的初始值所替换,致使新版本app的微服务运行实例无法读取到被变更过的配置项的值,使得新版本app无法提供正常的服务。



技术实现要素:

本申请提供了一种分布式微服务集群的升级方法及相关系统,以解决在分布式微服务集群的升级操作中,存在的由于当前版本app的存储实例被直接替换为新版本app的存储实例,导致的新版本app的微服务运行实例无法读取到当前版本app的存储实例被变更过的配置项的值,致使无法提供正常服务的问题。

为了实现上述目的,现提出的方案如下:

本申请的第一方面提供了一种分布式微服务集群的升级方法,包括:容器集群管理系统接收升级任务实例化描述对象;所述容器集群管理系统根据所述升级任务实例化描述对象,创建并启动第一版本app的服务实例,并根据升级任务的工作流,为所述第一版本app的服务实例分配资源;所述容器集群管理系统利用为所述第一版本app的服务实例分配的资源,在节点上为所述第一版本app创建容器管理器,并启动所述容器管理器和所述容器管理器中的app的微服务运行实例;所述容器集群管理系统根据第一版本app的合并配置数据,生成第一版本app的存储实例;其中,所述第一版本app的合并配置数据由所述第一版本app的配置数据和第二版本app的配置数据合并得到,所述第二版本app的版本号低于所述第一版本app的版本号;所述第一版本app的存储实例用于存储所述第一版本app的微服务运行实例被执行时所需的配置数据。

从上述过程可以看出:容器集群管理系统在当前存储的第二版本的存储实例替换为第一版本的app的存储实例时,由于所述第一版本app的存储实例根据第一版本app的合并配置数据而生成;并且,所述第一版本app的合并配置数据由所述第一版本app的配置数据和第二版本app的配置数据合并得到。因此,第一版本的app的存储实例中包括第二版本的配置数据,可以避免由于当前版本的app的配置数据被直接替换为新版本app的配置数据,导致的新版本app的微服务运行实例无法读取到升级前被变更过的配置项的值,致使无法提供正常服务的问题。

在一个实现方式中,所述任务实例化描述对象由应用编排系统依据第一版本app的部署蓝图生成;其中,所述第一版本app的部署蓝图中的定义模板中的数据被丢弃;或者,所述第一版本app的部署蓝图中的定义模板包括:所述第一版本app的合并配置数据。

在一个实现方式中,所述第一版本app的合并配置数据的获得方式,包括:所述容器集群管理系统接收所述容器管理器中的app发送的所述第一版本app的合并配置数据;或者,所述容器集群管理系统获取所述升级任务实例化描述对象中的所述第一版本app的合并配置数据。

在一个实现方式中,所述第一版本app的合并配置数据,包括:第一种配置项分别在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;现网运行的第二种配置项的值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

本申请的第二方面提供了一种容器集群管理系统,包括:第一接收单元,用于接收升级任务实例化描述对象;第一创建单元,用于根据所述升级任务实例化描述对象,创建并启动第一版本app的服务实例;分配单元,用于根据升级任务的工作流,为所述第一版本app的服务实例分配资源;第二创建单元,用于利用所述第一版本app的服务实例分配资源,在节点上为所述第一版本app创建容器管理器;启动单元,用于启动所述容器管理器和所述容器管理器中的app的微服务运行实例;生成单元,用于根据第一版本app的合并配置数据,生成第一版本app的存储实例;其中,所述第一版本app的合并配置数据由所述第一版本app的配置数据和第二版本app的配置数据合并得到,所述第二版本app的版本号低于所述第一版本app的版本号;所述第一版本app的存储实例用于存储所述第一版本app的微服务运行实例被执行时所需的配置数据。

在一个实现方式中,所述任务实例化描述对象由应用编排系统依据第一版本app的部署蓝图生成;其中,所述第一版本app的部署蓝图中的定义模板中的数据被丢弃;或者,所述第一版本app的部署蓝图中的定义模板包括:所述第一版本app的合并配置数据。

在一个实现方式中,还包括:第二接收单元,用于接收所述容器管理器中的app发送的所述第一版本app的合并配置数据;或者,获取单元,用于获取所述升级任务实例化描述对象中的所述第一版本app的合并配置数据。

在一个实现方式中,所述第一版本app的合并配置数据,包括:第一种配置项分别在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;现网运行的第二种配置项的值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

本申请的第三方面提供了一种分布式微服务集群的升级方法,包括:应用编排系统识别出第一版本app的部署蓝图中的任务类型为升级任务,丢弃所述第一版本app的部署蓝图中的定义模板中的数据,得到第一版本app的简约部署蓝图;所述应用编排系统依据所述第一版本app的简约部署蓝图,生成升级任务实例化描述对象;其中,所述升级任务实例化描述对象用于提供于容器集群管理系统创建并启动所述第一版本app的服务实例;所述应用编排系统监测到所述第一版本app的服务实例为启动状态,则根据所述升级任务实例化描述对象,生成升级任务的工作流;其中,所述工作流用于驱动所述容器集群管理系统为第一版本app的服务实例分配资源。

从上述过程可以看出:应用编排系统识别出第一版本app的部署蓝图中的任务类型为升级任务,丢弃所述第一版本app的部署蓝图中的定义模板中的数据,可以避免依据第一版本app部署蓝图中的定义模板中的数据,创建得到第一版本app的存储实例,导致替换了第二版本app的存储实例。

本申请的第四方面提供了一种应用编排系统,包括:解析器,用于识别出第一版本app的部署蓝图中的任务类型为升级任务,丢弃所述第一版本app的部署蓝图中的定义模板中的数据,得到第一版本app的简约部署蓝图;依据所述第一版本app的简约部署蓝图,生成升级任务实例化描述对象;其中,所述升级任务实例化描述对象用于提供于容器集群管理系统创建并启动所述第一版本app的服务实例;工作流引擎,用于监测到所述第一版本app的服务实例为启动状态,则根据所述升级任务实例化描述对象,生成升级任务的工作流;其中,所述工作流用于驱动所述容器集群管理系统为第一版本app的服务实例分配资源。

本申请的第五方面提供了一种分布式微服务集群的升级方法,包括:在第一容器管理器中的app的微服务运行实例被首次启动时,节点将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据;其中,所述第一容器管理器由容器集群管理系统在所述节点上为所述第一版本app创建;所述第二版本app的版本号低于所述第一版本app的版本号;所述节点向所述容器集群管理系统发送所述第一版本app的合并配置数据。

从上述过程可以看出:节点在第一容器管理器中的app的微服务运行实例被首次启动时,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据,并将第一版本app的合并配置数据向容器集群管理系统发送,可以为容器集群管理系统生成第一版本app的存储实例提供数据依据,保证容器集群管理系统依据第一版本app的合并配置数据而生成的第一版本app的存储实例,在替换第二版本的存储实例后,由于第一版本app的存储实例中保留了第二版本的配置数据,不会出现第一版本app的微服务运行实例无法读取升级前被变更过的配置项的值,致使无法提供正常服务的问题。

在一个实现方式中,所述将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据,包括:在所述第一版本app的合并配置数据中,分别保存第一种配置项在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;在所述第一版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

在一个实现方式中,还包括:所述节点从所述容器集群管理系统的应用配置中心读取所述第二版本app的配置数据;或者,从特定逻辑卷组中读取所述第二版本的配置数据;其中,所述特定逻辑卷组挂载到所述节点中用于管理所述第二版本app的容器管理器中。

本申请的第六方面提供了一种节点,包括:合并单元,用于在第一容器管理器中的app的微服务运行实例被首次启动时,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据;其中,所述第一容器管理器由容器集群管理系统在所述节点上为所述第一版本app创建;所述第二版本app的版本号低于所述第一版本app;发送单元,用于向所述容器集群管理系统发送所述第一版本app的合并配置数据。

在一个实现方式中,所述合并单元执行将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据时,用于:在所述第一版本app的合并配置数据中,分别保存第一种配置项在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;在所述第一版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

在一个实现方式中,还包括:获取单元,用于从所述容器集群管理系统的应用配置中心读取所述第二版本app的配置数据;或者,用于从特定逻辑卷组中读取所述第二版本的配置数据;其中,所述特定逻辑卷组挂载到所述节点中用于管理所述第二版本app的容器管理器中。

本申请的第七方面还提供了一种分布式微服务集群的升级方法,包括:应用编排系统识别出第一版本app的部署蓝图中的任务类型为升级任务,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据;所述应用编排系统依据所述第一版本app的合并配置数据,生成升级任务实例化描述对象;其中,所述升级任务实例化描述对象用于提供于容器集群管理系统创建并启动所述第一版本app的服务实例;所述第二版本app的版本号低于所述第一版本app的版本号;所述应用编排系统监测到所述第一版本app的服务实例为启动状态,则根据升级任务实例化描述对象,生成升级任务的工作流;其中,所述工作流用于驱动所述容器集群管理系统为所述第一版本app的服务实例分配资源、创建所述第一版本app的存储实例、以及为所述第一版本app创建容器管理器并启动所述容器管理器和所述容器管理器中的app的微服务运行实例。

从上述过程可以看出:应用编排系统识别出第一版本app的部署蓝图中的任务类型为升级任务,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据。因此,第一版本的app的存储实例中包括第二版本的配置数据,可以避免由于当前版本的app的配置数据被直接替换为新版本app的配置数据,导致的新版本app的微服务运行实例无法读取到升级前被变更过的配置项的值,致使无法提供正常服务的问题。

在一个实现方式中,所述应用编排系统依据所述第一版本app的合并配置数据,生成升级任务实例化描述对象,包括:所述应用编排系统依据第一版本app的部署蓝图,生成初始的升级任务实例化描述对象;所述应用编排系统依据所述第一版本app的合并配置数据,处理所述初始的升级任务实例化描述对象,得到所述升级任务实例化描述对象。

在一个实现方式中,所述应用编排系统依据所述第一版本app的合并配置数据,生成升级任务实例化描述对象,包括:所述应用编排系统依据所述第一版本app的部署蓝图和第一版本app的合并配置数据,生成所述升级任务实例化描述对象。

在一个实现方式中,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据,包括:在所述第一版本app的合并配置数据中,分别保存第一种配置项在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;在所述第一版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

在一个实现方式中,还包括:所述应用编排系统从容器集群管理系统的应用配置中心中读取所述第二版本app的配置数据;或者,所述应用编排系统从特定逻辑卷组中读取所述第二版本的配置数据;其中,所述特定逻辑卷组挂载到所述节点中用于管理所述第二版本app的容器管理器中。

本申请的第八方面还提供了一种应用编排系统,包括:生成单元,用于识别出第一版本app的部署蓝图中的任务类型为升级任务,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据;并依据所述第一版本app的合并配置数据,生成升级任务实例化描述对象;其中,所述升级任务实例化描述对象用于提供于容器集群管理系统创建并启动所述第一版本app的服务实例;所述第二版本app的版本号低于所述第一版本app的版本号;工作流引擎,用于监测到所述第一版本app的服务实例为启动状态,则根据升级任务实例化描述对象,生成升级任务的工作流;其中,所述工作流用于驱动所述容器集群管理系统为所述第一版本app的服务实例分配资源、创建所述第一版本app的存储实例、以及为所述第一版本app创建容器管理器并启动所述容器管理器和所述容器管理器中的app的微服务运行实例。

在一个实现方式中,所述生成单元,包括:解析器,用于依据第一版本app的部署蓝图,生成初始的升级任务实例化描述对象;后台服务端,用于在识别出所述第一版本app的部署蓝图中的任务类型为升级任务,将所述第一版本app的配置数据和所述第二版本app的配置数据进行合并,得到所述第一版本app的合并配置数据;并依据所述第一版本app的合并配置数据,处理所述初始的升级任务实例化描述对象,得到所述升级任务实例化描述对象。

在一个实现方式中,所述生成单元,包括:后台服务端,用于在识别出所述第一版本app的部署蓝图中的任务类型为升级任务,将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据;解析器,用于依据所述第一版本app的部署蓝图和第一版本app的合并配置数据,生成所述升级任务实例化描述对象。

在一个实现方式中,所述生成单元执行将第一版本app的配置数据和第二版本app的配置数据进行合并,得到第一版本app的合并配置数据时,用于:在所述第一版本app的合并配置数据中,分别保存第一种配置项在所述第一版本app的配置数据和所述第二版本app的配置数据中的名称和值;其中,所述第一种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,新增加的配置项以及删除的配置项;在所述第一版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,所述第二种配置项包括:所述第一版本app的配置数据相对于所述第二版本app的配置数据,名称相同但值不相同的配置项。

在一个实现方式中,所述生成单元用于从容器集群管理系统的应用配置中心中读取所述第二版本app的配置数据;或者,所述生成单元用于从特定逻辑卷组中读取所述第二版本的配置数据;其中,所述特定逻辑卷组挂载到所述节点中用于管理所述第二版本app的容器管理器中。

本申请的第九方面还提供了一种容器集群管理系统,包括:存储器和处理器,其中:所述存储器用于存储计算机程序代码;所述处理器用于执行所述存储器存储的代码,使得所述容器集群管理系统执行上述任一项所述的方法。

本申请的第十方面还提供了一种应用编排系统,包括:存储器和处理器,其中:所述存储器用于存储计算机程序代码;所述处理器用于执行所述存储器存储的代码,使得所述应用编排系统执行上述任一项所述的方法。

本申请的第十一方面还提供了一种节点,包括:存储器和处理器,其中:所述存储器用于存储计算机程序代码;所述处理器用于执行所述存储器存储的代码,使得所述节点执行上述任一项所述的方法。

本申请的第十二方面提供了一种计算机程序产品,当该计算机产品被执行时,其用于执行上述所介绍的容器集群管理系统所执行的方法。

本申请的第十三方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行上述所介绍的容器集群管理系统所执行的方法。

本申请的第十四方面提供了一种计算机程序产品,当该计算机产品被执行时,其用于执行上述所介绍的应用编排系统所执行的方法。

本申请的第十五方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行上述所介绍的应用编排系统所执行的方法。

本申请的第十六方面提供了一种计算机程序产品,当该计算机产品被执行时,其用于执行上述所介绍的节点所执行的方法。

本申请的第十七方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行上述所介绍的节点所执行的方法。

附图说明

图1为本申请实施例公开的一种分布式微服务集群系统的示意图;

图2为本申请实施例公开的一种分布式微服务集群的升级方法的流程图;

图3为本申请另一实施例公开的一种分布式微服务集群的升级方法的流程图;

图4为本申请实施例公开的一种容器集群管理系统的示意图;

图5为本申请实施例公开的一种应用编排系统的示意图;

图6为本申请实施例公开的一种节点的示意图;

图7为本申请实施例公开的一种应用编排系统的结构示意图;

图8为本申请另一实施例公开的一种容器集群管理系统的示意图;

图9为本申请另一实施例公开的一种应用编排系统的结构示意图;

图10为本申请另一实施例公开的一种节点的结构示意图。

具体实施方式

本申请实施例公开了一种app分布式微服务集群系统,参见图1,包括:平台即服务(platform-as-a-service,paas)层设备和多个节点。

其中,paas层设备包括:应用编排系统101(applicationorchestratorservice,aos)和容器集群管理系统102(例如:kubernetesmaster)。应用编排系统101根据工作内容的区别,可以分为前台界面(例如:aosportalweb)、后台服务端(例如:aosapiserver)、解析器(例如:aosblueprintparser)以及工作流引擎(workflowengine)。容器集群管理系统102包括:服务端(例如:kubeapiserver)和应用配置中心(例如:configmapservice)。每个节点均可以部署多个容器管理器103(pod)。

操作人员在paas层设备上创建app分布式微服务集群的部署任务,由paas层设备中的应用编排系统101和容器集群管理系统102,完成将app的多个微服务运行在多个节点上,形成app分布式微服务集群。并且,app分布式微服务集群部署完成后,若app版本升级,也需要对分布式微服务集群下的app进行升级,以下内容重点对app分布式微服务集群进行升级的方案进行介绍。

本申请实施例公开了一种分布式微服务集群的升级方法,应用于app分布式微服务集群系统,参见图2,包括步骤:

s201、应用编排系统接收用户上传的新版本app的部署蓝图。

用户在应用编排系统的aosportalweb页面上传新版本app的部署蓝图,并通过调用aosapiserver完成新版本app的部署蓝图的上传工作。

新版本app的部署蓝图包括:任务类型、定义模板和部署参数;其中,任务类型用于说明新版本app是何种任务,例如:安装任务、升级任务、扩容任务以及克隆任务等;定义模板用于创建configmapservice中的存储实例;部署参数包括:当前环境信息、当前版本app的版本信息、新版本app的版本信息以及系统配置参数等;其中,新版本app的版本信息中的版本号高于当前版本app的版本信息中的版本号。

可选地,待新版本app的部署蓝图上传完毕,aosapiserver会向aosportalweb页面返回上传成功的结果。用户即可在aosportalweb页面上点击创建升级任务菜单按钮,生成并向aosapiserver发送创建升级任务的请求。

s202、应用编排系统识别出新版本app的部署蓝图中的任务类型为升级任务,丢弃新版本app的部署蓝图中的定义模板中的数据,得到新版本app的简约部署蓝图。

aosapiserver收到创建升级任务的请求之后,调用aos的解析器解析新版本app的部署蓝图。若识别出新版本app的部署蓝图中的任务类型为升级任务,则丢弃定义模板中的数据。具体的,若识别新版本app的部署蓝图中,环境变量的任务类型(tasktype)的字段类型为滚动升级(rollingupdate),则说明新版本app的部署蓝图中的任务类型为升级任务。

并且,若新版本app的部署蓝图中的任务类型为升级任务,丢弃新版本app部署蓝图中的定义模板中的数据,可以避免依据新版本app部署蓝图中的定义模板中的数据,创建得到新版本app的存储实例,导致替换了当前版本app的存储实例。

s203、应用编排系统依据新版本app的简约部署蓝图,生成升级任务实例化描述对象。

其中,解析器生成升级任务实例化描述对象,且生成的升级任务实例化描述对象包含:任务类型和部署参数。

可选地,解析器生成升级任务实例化描述对象之后,还可以向aosapiserver返回升级任务实例化描述对象,由aosapiserver保存升级任务实例化描述对象。

s204、容器集群管理系统根据升级任务实例化描述对象,创建并启动新版本app的服务实例。

应用编排系统的aosapiserver调用容器集群管理系统的kubeapiserver,向其传输升级任务实例化描述对象。容器集群管理系统的kubeapiserver根据升级任务实例化描述对象,创建新版本app的服务实例。并且,新版本app的服务实例成功创建之后,kubeapiserver向aosapiserver返回创建新版本app的服务实例成功的结果。待kubeapiserver向aosapiserver返回创建新版本app的服务实例成功的结果之后,kubeapiserver执行启动新版本app的服务实例的操作。

由于启动新版本app的服务实例比较耗时,因此,aosapiserver还会异步向aosportalweb页面返回新版本app的服务实例正在升级中的状态。

s205、应用编排系统监测到新版本app的服务实例为启动状态,则根据升级任务实例化描述对象,生成升级任务的工作流。

其中,应用编排系统的workflowengine调用kubeapiserver,判断新版本app的服务实例的状态,若发现新版本app的服务实例处于启动中的状态,则根据升级任务实例化描述对象,生成升级任务的工作流。其中,升级任务的工作流是执行升级任务工作的规划,包括升级任务被执行时所包括的流程安排,用于管理容器集群管理系统按照流程安排执行分布式微服务集群下的app的升级动作。

s206、容器集群管理系统根据工作流,为新版本app的服务实例分配资源。

其中,由容器集群管理系统中的kubeapiserver执行工作流,为新版本app的服务实例分配资源。

s207、容器集群管理系统根据工作流,利用新版本app的服务实例分配的资源,在节点上为新版本app创建新的pod,并启动新的pod和新的pod中的app的微服务运行实例。

其中,容器集群管理系统中的kubeapiserver,根据工作流的流程安排,利用新版本app的服务实例分配的资源,在节点上为新版本app创建新的pod。并且,在启动该新的pod之前,还需要初始化pod的配置。

s208、新的pod中的app的微服务运行实例被首次启动,新的pod中的app将新版本app的配置数据和当前版本app配置数据进行合并,得到新版本app的合并配置数据。

app分布式微服务集群被部署时,app的部署蓝图中的定义模板中的数据会写入容器集群管理系统的configmapservice,形成存储实例,该存储实例用于存储当前版本app的微服务运行实例被执行时所需的配置数据。并且,存储实例还会被挂载到用于管理当前版本app的pod中。这样,存储实例才可以被pod的应用程序容器访问到。一般情况下,存储实例会以逻辑卷组(configmapvolume)形式挂载到pod中。因此,在新的pod中的app的微服务运行实例被启动,从容器集群管理系统的configmapservice或者configmapvolume中读取当前版本app的存储实例中的配置数据,即当前版本app的配置数据。

节点上存储有新版本app的配置文件,新版本app的配置文件中保存有新版本app的配置数据。在节点上新的pod中的app需要进行配置数据的合并时,获取节点保存的新版本app的配置文件中的配置数据,作为新版本app的配置数据。

可选地,本申请的另一实施例中,新版本app的配置数据和当前版本app的配置数据进行合并,需要将新版本app的配置文件和当前版本app的存储实例中的名称相同、且值也相同的配置项,分别保存作为新版本app的合并配置数据中的配置项,且包括该配置项的名称和值。并且,针对新版本app的配置数据和当前版本app的配置数据中有区别的配置项,其合并方法,包括:

在新版本app的合并配置数据中,分别保存第一种配置项在新版本app的配置数据和当前版本app的配置数据中的名称和值;其中,第一种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,新增加的配置项以及删除的配置项。

在新版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,第二种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,名称相同但值不相同的配置项。

还需要说明的是,若新版本app的配置数据与当前版本app的配置数据相比较,新版本app的配置数据所包括的仅是名称不同的配置项,应当被认为属于第一种配置项。例如:一个配置项,在当前版本app的配置数据中的名称为key1,在新版本app的配置数据中的名称为key2。在新版本app的合并配置数据中,分别保存该配置项的名称key1和对应的值,以及名称key2和对应的值。

s209、节点将新版本app的合并配置数据写入到容器集群管理系统。

s210、容器集群管理系统根据新版本app的合并配置数据,生成新版本app的存储实例。

具体的,节点中新的pod将新版本app的合并配置数据写入容器集群管理系统的configmapservice,容器集群管理系统的configmapservice得到新版本app的存储实例,再将新版本app的存储实例替换当前版本app的存储实例。并且,待configmapservice得到新版本app的存储实例之后,configmapservice向节点中新的pod返回写入成功的结果。

s211、容器集群管理系统设置新版本app的服务实例为正常运行状态。

s212、容器集群管理系统向应用编排系统返回创建新版本app服务实例资源成功的结果。

其中,kubeapiserver设置新版本app的服务实例为正常运行状态,向workflowengine返回创建新版本app的服务实例资源成功的结果。

s213、容器集群管理系统释放老版本app的服务实例的资源。

循环执行步骤s201~s213、完成app分布式微服务集群中其它app的服务实例的升级。

还需要说明的是,aosportalweb通过aosapiserver周期性地向kubeapiserver查询新版本app的服务实例运行状态。如果新版本app的服务实例完成替换升级,那么kubeapiserver便返回新版本app的服务实例处于正常运行状态,aosportalweb上将新版本app的服务实例从升级中状态改成正常运行状态。

本申请另一实施例还公开了一种分布式微服务集群的升级方法,参见图3,包括步骤s301~步骤s312;其中,步骤s301的内容与对应图2的实施例中的步骤s201相同,步骤s304~步骤s306的内容与对应图2的实施例中的步骤s204~步骤s206相同;步骤s310~s312的内容与对应图2的实施例中的步骤s210~s212相同,此处均不再赘述,仅对本实施例中的步骤s302~步骤s303、以及步骤s307~步骤s309进行说明。

s302、应用编排系统识别出新版本app的部署蓝图中的任务类型为升级任务,将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据。

应用编排系统接收新版本app的部署蓝图,由解析器解析新版本app的部署蓝图,获取任务类型、定义模板和部署参数。其中,定义模板包括:新版本app的配置数据。解析器解析新版本app的部署蓝图之后,应用编排系统的aosapiserver识别新版本app的部署蓝图中的任务类型,在识别出任务类型为升级任务,则调用容器集群管理系统的kubeapiserver。容器集群管理系统的kubeapiserver从容器集群管理系统的configmapservice中获取当前版本app的存储实例,并将其返回给应用编排系统的aosapiserver;由应用编排系统的aosapiserver执行配置数据的合并操作。并且,当前版本app的存储实例中的配置数据即为当前版本app的配置数据。另外,应用编排系统还可以从特定逻辑卷组中读取当前版本的存储实例,即当前版本app的配置数据;其中,特定逻辑卷组挂载到节点中用于管理当前版本app的容器管理器中。

可选地,本申请的另一实施例中,应用编排系统将新版本app的配置数据和当前版本app的配置数据进行合并,需要将新版本app的配置数据和当前版本app的配置数据中相同的配置项的名称和值,分别保存作为新版本app的合并配置数据中的内容。并且,针对新版本app的配置数据和当前版本app的配置数据中不相同的配置项的合并方法,包括:

在新版本app的合并配置数据中,分别保存第一种配置项在新版本app的配置数据和当前版本app的配置数据中的名称和值;其中,第一种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,新增加的配置项以及删除的配置项。

在新版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,第二种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,名称相同但值不相同的配置项。

s303、应用编排系统依据新版本app的合并配置数据,生成升级任务实例化描述对象。

应用编排系统依据新版本app的合并配置数据,生成升级任务实例化描述对象。并且,解析器生成升级任务实例化描述对象之后,还将升级任务实例化描述对象,返回至应用编排系统的aosapiserver。

可选地,本申请的另一实施例中,应用编排系统依据新版本app的合并配置数据,生成升级任务实例化描述对象的一种实施方式,包括:

应用编排系统依据新版本app的部署蓝图,生成初始的升级任务实例化描述对象。

其中,应用编排系统的解析器解析新版本app的部署蓝图之后,依据新版本app的部署蓝图,生成初始的升级任务实例化描述对象;初始的升级任务实例化描述对象包括:新版本app的部署蓝图中定义模板的数据,即新版本app的配置数据。

应用编排系统依据新版本app的合并配置数据,处理初始的升级任务实例化描述对象,得到升级任务实例化描述对象。

其中,应用编排系统的aosapiserver得到新版本app的合并配置数据之后,依据新版本app的合并配置数据,处理初始的升级任务实例化描述对象,得到升级任务实例化描述对象。具体的,应用编排系统的aosapiserver,将初始的升级任务实例化描述对象中的新版本app的部署蓝图中定义模板的数据,替换为新版本app的合并配置数据。因此,升级任务实例化描述对象中包括新版本app的合并配置数据。

可选地,本申请的另一实施例中,应用编排系统依据新版本app的合并配置数据,生成升级任务实例化描述对象的另一种实施方式,包括:

应用编排系统依据新版本app的部署蓝图和新版本app的合并配置数据,生成升级任务实例化描述对象。

其中,应用编排系统的aosapiserver在得到新版本app的合并配置数据之后,将新版本app的合并配置数据向解析器发送,由解析器根据新版本app的部署蓝图和新版本app的合并配置数据,生成升级任务实例化描述对象。

具体的,生成的升级任务实例化描述对象也包括新版本app的合并配置数据。

s307、容器集群管理系统根据工作流,创建新版本app的存储实例。

其中,在步骤s305中,由于升级实例化描述对象包括新版本app的合并配置数据,因此,生成的升级任务的工作流则包括生成新版本app的存储实例的流程要求。因此,在容器集群管理系统接收到工作流之后,容器集群管理系统的kubeapiserver根据工作流的流程要求,创建新版本app的存储实例。并且,容器集群管理系统将自身存储的当前版本app的存储实例,替换为新版本app的存储实例。

s308、容器集群管理系统根据工作流,为新版本app创建新的pod,并启动新的pod和新的pod中的app的微服务运行实例。

其中,容器集群管理系统的kubeapiserver创建新的pod并初始化pod的配置,然后启动pod和pod中的app的微服务运行实例。

s309、新的pod中的app的微服务运行实例被启动,新的pod中的app获取容器集群管理系统中的新版本app的存储实例。

其中,新的pod中的app的微服务运行实例被启动的时候,从configmapservice挂载新的pod的逻辑卷组中读取新版本app的存储实例中的配置数据,具体读取新版本app的配置项和配置项的值。

循环执行步骤s301~s311、完成app分布式微服务集群中其它app的服务实例的升级。

本申请另一实施例还公开了一种容器集群管理系统,参见图4,包括:

第一接收单元401,用于按照对应图2的实施例中步骤s204所公开的实施方式,接收升级任务实例化描述对象。可选地,本申请的另一实施例中,任务实例化描述对象由应用编排系统按照对应图2的实施例中步骤s203所公开的实施方式,以及按照对应图3的实施例中步骤s303所公开的实施方式,依据新版本app的部署蓝图生成;其中,新版本app的部署蓝图中的定义模板中的数据被丢弃;或者,新版本app的部署蓝图中的定义模板包括:新版本app的合并配置数据。

第一创建单元402,用于按照对应图2的实施例中步骤s204所公开的实施方式,以及按照对应图3的实施例中步骤s304所公开的实施方式,根据升级任务实例化描述对象,创建并启动新版本app的服务实例。

分配单元403,用于按照对应图2的实施例中步骤s206所公开的实施方式,以及按照对应图3的实施例中步骤s306所公开的实施方式,根据升级任务的工作流,为新版本app的服务实例分配资源。

第二创建单元404,用于按照对应图2的实施例中步骤s207所公开的实施方式,以及按照对应图3的实施例中步骤s308所公开的实施方式,利用新版本app的服务实例分配资源,在节点上为新版本app创建容器管理器。

启动单元405,用于按照对应图2的实施例中步骤s207所公开的实施方式,以及按照对应图3的实施例中步骤s308所公开的实施方式,启动容器管理器和容器管理器中的app的微服务运行实例。

生成单元406,用于按照对应图2的实施例中步骤s210所公开的实施方式,以及按照对应图3的实施例中步骤s307所公开的实施方式,根据新版本app的合并配置数据,生成新版本app的存储实例;其中,新版本app的合并配置数据由新版本app的配置数据和当前版本app的配置数据合并得到,当前版本app的版本号低于新版本app的版本号;新版本app的存储实例用于存储新版本app的微服务运行实例被执行时所需的配置数据。

可选地,本申请的另一实施例中,新版本app的合并配置数据,包括:

第一种配置项分别在新版本app的配置数据和当前版本app的配置数据中的名称和值;其中,第一种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,新增加的配置项以及删除的配置项。

现网运行的第二种配置项的值;其中,所述第二种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,名称相同但值不相同的配置项。

可选地,本申请的另一实施例中,参见图4,容器集群管理系统还包括:第二接收单元407,用于接收容器管理器中的app发送的新版本app的合并配置数据。或者,容器集群管理系统还包括获取单元408,用于获取升级任务实例化描述对象中的第一版本app的合并配置数据。

还需要说明的是,本申请上述实施例中提及的第一接收单元401、第一创建单元、分配单元403、第二创建单元404、启动单元405、生成单元406、第二接收单元407以及获取单元408均可以理解成容器集群管理系统的kubeapiserver中的功能模块。

本申请另一实施例还公开了一种应用编排系统,参见图5,包括:

解析器501,用于按照对应图2的实施例中步骤s202所公开的实施方式,识别出新版本app的部署蓝图中的任务类型为升级任务,丢弃新版本app的部署蓝图中的定义模板中的数据,得到新版本app的简约部署蓝图;并按照对应图2的实施例中步骤s203所公开的实施方式,依据新版本app的简约部署蓝图,生成升级任务实例化描述对象;其中,升级任务实例化描述对象用于提供于容器集群管理系统创建并启动新版本app的服务实例。

工作流引擎502,用于按照对应图2的实施例中步骤s205所公开的实施方式,监测到新版本app的服务实例为启动状态,则根据升级任务实例化描述对象,生成升级任务的工作流;其中,工作流用于驱动所述容器集群管理系统为新版本app的服务实例分配资源。

本申请另一实施例还公开了一种节点,参见图6,包括:

合并单元601,用于按照对应图2的实施例中步骤s208所公开的实施方式,在第一容器管理器中的app的微服务运行实例被首次启动时,将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据;其中,第一容器管理器由容器集群管理系统在节点上为新版本app创建;当前版本app的版本号低于新版本app的版本号。

可选地,本申请的另一实施例中,合并单元601执行将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据时,用于:

在新版本app的合并配置数据中,分别保存第一种配置项在新版本app的配置数据和当前版本app的配置数据中的名称和值;其中,第一种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,新增加的配置项以及删除的配置项;

在新版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,第二种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,名称相同但值不相同的配置项。

发送单元602,用于按照对应图2的实施例中步骤s209所公开的实施方式,向容器集群管理系统发送新版本app的合并配置数据。

可选地,本申请的另一实施例中,参见图6,节点还包括:

获取单元603,用于按照对应图2的实施例中步骤s208所公开的实施方式,从容器集群管理系统的应用配置中心读取当前版本app的配置数据;或者,从特定逻辑卷组中读取当前版本的配置数据;其中,特定逻辑卷组挂载到所述节点中用于管理当前版本app的容器管理器中。

本申请实施例还公开了一种应用编排系统,参见图7,包括:

生成单元701,用于按照对应图3的实施例中步骤s302所公开的实施方式,识别出新版本app的部署蓝图中的任务类型为升级任务,将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据;并按照对应图3的实施例中步骤s303所公开的实施方式,依据新版本app的合并配置数据,生成升级任务实例化描述对象;其中,升级任务实例化描述对象用于提供于容器集群管理系统创建并启动新版本app的服务实例;当前版本app的版本号低于新版本app的版本号。

可选地,本申请的另一实施例中,生成单元701用于从容器集群管理系统的应用配置中心中读取当前版本app的配置数据;或者,生成单元701用于从特定逻辑卷组中读取当前版本的配置数据;其中,特定逻辑卷组挂载到节点中用于管理当前版本app的容器管理器中。

工作流引擎702,用于监测到新版本app的服务实例为启动状态,则根据升级任务实例化描述对象,生成升级任务的工作流。其中,工作流用于驱动容器集群管理系统为新版本app的服务实例分配资源、创建新版本app的存储实例、以及为新版本app创建容器管理器并启动所述容器管理器和所述容器管理器中的app的微服务运行实例。

可选地,本申请的另一实施例中,生成单元301可按照对应图3的实施例中步骤s303的一种具体实施方式工作,具体包括:解析器,用于依据新版本app的部署蓝图,生成初始的升级任务实例化描述对象;后台服务端,用于在识别出新版本app的部署蓝图中的任务类型为升级任务,将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据;并依据新版本app的合并配置数据,处理初始的升级任务实例化描述对象,得到升级任务实例化描述对象。

可选地,本申请的另一实施例中,生成单元301还可按照对应图3的实施例中步骤s303的另一种具体实施方式工作,具体包括:后台服务端,用于在识别出新版本app的部署蓝图中的任务类型为升级任务,将新版本app的配置数据和当前版本app的配置数据进行合并,得到新版本app的合并配置数据;解析器,用于依据新版本app的部署蓝图和新版本app的合并配置数据,生成升级任务实例化描述对象。

可选地,本申请的另一实施例中,生成单元701按照对应图3的实施例中步骤s302的可选实施方式,执行将新版本app的配置数据和第二版本app的配置数据进行合并,得到新版本app的合并配置数据时,用于:在新版本app的合并配置数据中,分别保存第一种配置项在新版本app的配置数据和当前版本app的配置数据中的名称和值;其中,第一种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,新增加的配置项以及删除的配置项。在新版本app的合并配置数据中,保存第二种配置项的值为现网运行值;其中,第二种配置项包括:新版本app的配置数据相对于当前版本app的配置数据,名称相同但值不相同的配置项。

如图8所示,本申请另一实施例公开了一种容器集群管理系统800,包括:处理器801、存储器802和通信端口803,还包括电源、以及安装在硬件上的操作系统等部分,具体在图8中未一一列举出来,但并不对本申请实施例中的容器集群管理系统800构成限定。在本申请的一些实施例中,处理器801和存储器802可通过总线或其它方式进行连接,具体此处不做限定。其中,图8中以处理器801和存储器802通过总线连接为例进行示例说明。

处理器801用于控制容器集群管理系统800的操作,还可以称为中央处理单元(英文:centralprocessingunit,cpu)。

存储器802,可以包括只读存储器(英语:read-onlymemory,rom)和随机存取存储器(英文:randomaccessmemory,ram),还可以其他存储器或者是存储介质,并向处理器801提供指令和数据。存储器802的一部分还可以包括非易失性随机存取存储器(英文:non-volatilerandomaccessmemory,nvram)。存储器802存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,各种操作指令用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。存储器802还存储有本申请实施例所涉及的数据、程序等。处理器801通过运行存储器802中的程序,以用于完成上述每一个实施例中容器集群管理系统执行的分布式微服务集群的升级方法。

处理器801可以是一种集成电路芯片,具有信号的处理能力。在本申请实施例实现过程中,本申请实施例中容器集群管理系统所执行的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、数字信号处理器(英文:digitalsignalprocessing,dsp)、专用集成电路(英文:application-specificintegratedcircuit,asic)、现场可编程门阵列(英文:field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器802或者处理器801,处理器801读取存储器802或自身中的信息,结合其硬件完成本申请实施例的容器集群管理系统执行的分布式微服务集群的升级方法的步骤。

如图9所示,本申请另一实施例公开了一种应用编排系统900,包括:处理器901、存储器902和通信端口903,还包括电源、以及安装在硬件上的操作系统等部分,具体在图9中未一一列举出来,但并不对本申请实施例中的应用编排系统900构成限定。在本申请的一些实施例中,处理器901和存储器902可通过总线或其它方式进行连接,具体此处不做限定。其中,图9中以处理器901和存储器902通过总线连接为例进行示例说明。

处理器901用于控制应用编排系统900的操作,还可以称为中央处理单元(英文:centralprocessingunit,cpu)。

存储器902,可以包括只读存储器(英语:read-onlymemory,rom)和随机存取存储器(英文:randomaccessmemory,ram),还可以其他存储器或者是存储介质,并向处理器901提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器(英文:non-volatilerandomaccessmemory,nvram)。存储器902存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,各种操作指令用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。存储器902还存储有本申请实施例所涉及的数据、程序等。处理器901通过运行存储器902中的程序,以用于完成上述每一个实施例中应用编排系统执行的方法。

处理器901可以是一种集成电路芯片,具有信号的处理能力。在本申请实施例实现过程中,本申请实施例中应用编排系统所执行的各步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器901可以是通用处理器、数字信号处理器(英文:digitalsignalprocessing,dsp)、专用集成电路(英文:application-specificintegratedcircuit,asic)、现场可编程门阵列(英文:field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器902或者处理器901,处理器901读取存储器902或自身中的信息,结合其硬件完成本申请实施例的应用编排系统的配置方法的步骤。

如图10所示,本申请另一实施例公开了一种节点1000,包括:处理器1001、存储器1002和通信端口1003,还包括电源、以及安装在硬件上的操作系统等部分,具体在图10中未一一列举出来,但并不对本申请实施例中的节点1000构成限定。在本申请的一些实施例中,处理器1001和存储器1002可通过总线或其它方式进行连接,具体此处不做限定。其中,图10中以处理器1001和存储器1002通过总线连接为例进行示例说明。

处理器1001用于控制节点1000的操作,还可以称为中央处理单元(英文:centralprocessingunit,cpu)。

存储器1002,可以包括只读存储器(英语:read-onlymemory,rom)和随机存取存储器(英文:randomaccessmemory,ram),还可以其他存储器或者是存储介质,并向处理器1001提供指令和数据。存储器1002的一部分还可以包括非易失性随机存取存储器(英文:non-volatilerandomaccessmemory,nvram)。存储器1002存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,各种操作指令用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。存储器1002还存储有本申请实施例所涉及的数据、程序等。处理器1001通过运行存储器1002中的程序,以用于完成上述每一个实施例中节点执行的方法。

处理器1001可以是一种集成电路芯片,具有信号的处理能力。在本申请实施例实现过程中,本申请实施例中节点所执行的各步骤可以通过处理器1001中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1001可以是通用处理器、数字信号处理器(英文:digitalsignalprocessing,dsp)、专用集成电路(英文:application-specificintegratedcircuit,asic)、现场可编程门阵列(英文:field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1002或者处理器1001,处理器1001读取存储器1002或自身中的信息,结合其硬件完成本申请实施例的节点执行的方法的步骤。

在本申请上述实施例中,可以全部或者部分地通过软件、硬件或者其组合来实现。当使用软件实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或者多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或者部分地产生按照本申请实施例所述的流程或功能,所述计算机可以是通过计算机、专用计算机、计算机网络或者其他可编辑装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如:所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、双绞线、光纤)或者无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或者多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如:软盘、硬盘、磁带)、光介质(例如:光盘)、或者半导体介质(例如固态硬盘(ssd))等。

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