发明内容
针对现有技术中存在的问题,本发明实施例提供一种混合云资源创建方法及系统。
本发明实施例提供一种混合云资源创建方法,包括:
根据云平台的基本资源类型,创建基本资源类型的定制化模板;
接收云管理平台提交的资源创建请求,解析所述资源创建请求对应的定制化模板,得到所述资源创建请求中的资源参数,所述资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;
根据所述资源参数确定待创建资源的个数,并依次将所述待创建资源拆分为基本类型的资源单位,并通过对所述资源单位的任务编排,形成前后依赖的任务,所述任务负责一个基本类型的资源创建;
向预置的线程池中提交及执行所述任务,并在所述任务的任务执行线程中,根据所述任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发所述任务及对应的资源参数;
周期性的通过RESTful API检测云平台对于所述任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
在其中一个实施例中,所述方法还包括:
当所述任务对应的资源创建请求为在多个云平台创建资源时,通过预设的任务调度算法动态调整每个平台的任务数量。
在其中一个实施例中,所述任务调度算法,包括:
步骤1:获取线程池的初始任务参数,所述初始任务参数包括:线程池最佳线程数TC,系统线程池活动的线程数 TR=0,系统线程池队列总大小Q,系统线程池队列空闲大小I=Q;
步骤2:初始化多个云平台的资源创建请求中的最大并发数U={U
1,U
2,..., Un},云平台创建资源的最小并发数L={L
1,L
2,..., L
n},云平台并发创建资源的当允许并发数P={P
1,P
2,...,P
n},且P
k=U
k,其中
,表示所有平台的当前允许并发数P初始化为最大并发数U,云平台正在创建中的资源数量:R [1...n]={0},表示所有平台正在创建中的资源数量为0,其中,n为云平台个数;
步骤3:计算第k,
个云平台当前允许的并发数P
k,若
为真,则进入步骤4,反之进入步骤7;
步骤4,若TC–TR = 0,则进入步骤5,否则进入步骤6;
步骤5,若
为真,则:P
k=P
k-1,进入步骤7;
步骤6,若
为真,则:P
k=P
k+1,进入步骤7;
步骤7,获取第k,
个云平台获取待创建的资源,计算其总数为s
k,获取统线程池队列空闲大小I,计算可提交创建的资源个数为:E =
,取四个数值的最小值,若E > 0,提交E个任务到执行器进行创建。
在其中一个实施例中,所述方法还包括:
轮询待创建资源,识别所述待创建资源进行创建时需要的基本类型的资源单位,并为每个基本类型的资源单位生成对应的任务以及关联性任务,所述关联性任务包含需要关联的两个基本类型的资源单位的信息。
在其中一个实施例中,所述方法还包括:
检测云平台是否满足所述资源参数对应的参数要求;
当所述云平台满足所述资源参数对应的参数要求时,根据所述资源参数确定待创建资源的个数。
在其中一个实施例中,所述方法还包括:
接收云平台为创建资源分配的uuid,结合uuid,通过RESTful API获取任务的创建资源的状态,并当接收到资源创建完成的指令时,标记任务为完成状态,或,在预设时长内未接收到资源创建完成的指令时,标记任务为超时状态。
本发明实施例提供一种混合云资源创建系统,包括:
创建模块,用于根据云平台的基本资源类型,创建基本资源类型的定制化模板;
接收模块,用于接收云管理平台提交的资源创建请求,解析所述资源创建请求对应的定制化模板,得到所述资源创建请求中的资源参数,所述资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;
任务编排模块,用于根据所述资源参数确定待创建资源的个数,并依次将所述待创建资源拆分为基本类型的资源单位,并通过对所述资源单位的任务编排,形成前后依赖的任务,所述任务负责一个基本类型的资源创建;
执行模块,用于向预置的线程池中提交及执行所述任务,并在所述任务的任务执行线程中,根据所述任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发所述任务及对应的资源参数;
更新模块,用于周期性的通过RESTful API检测云平台对于所述任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
在其中一个实施例中,所述系统还包括:
调整模块,用于当所述任务对应的资源创建请求为在多个云平台创建资源时,通过预设的任务调度算法动态调整每个平台的任务数量。
本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述混合云资源创建方法的步骤。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述混合云资源创建方法的步骤。
本发明实施例提供的一种混合云资源创建方法及系统,根据云平台的基本资源类型,创建基本资源类型的定制化模板;接收云管理平台提交的资源创建请求,解析资源创建请求对应的定制化模板,得到资源创建请求中的资源参数,资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;根据资源参数确定待创建资源的个数,并依次将待创建资源拆分为基本类型的资源单位,并通过对资源单位的任务编排,形成前后依赖的任务,任务负责一个基本类型的资源创建;向预置的线程池中提交及执行任务,并在任务的任务执行线程中,根据任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发任务及对应的资源参数;周期性的通过RESTful API检测云平台对于任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。这样能够为云平台提供的异步接口和线程池技术实现了资源创建请求的并行处理,在传统的资源创建方法的时间上,有了量级别的提升;尤其在大规模资源需求的场景下,也能发挥云计算系统的并发处理的优势,提高资源创建效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种混合云资源创建方法的流程示意图,如图1所示,本发明实施例提供了一种混合云资源创建方法,包括:
步骤S101,根据云平台的基本资源类型,创建基本资源类型的定制化模板。
具体地,根据云平台的基本资源类型,对应的创建基本资源类型的定制化模板,即通过梳理云平台各基本类型资源之间的关系,根据不同类型资源,提供不同的资源创建参考模板,如创建虚拟机、创建数据卷分别为两个模板。模板对创建资源所需的基本类型资源的参数都进行声明,包括必选参数和可选参数,实际实践中,模板以Excel形式存放与系统之中,对外开放了模板下载接口,以创建虚拟机为例,创建虚拟机的模板中资源必填参数包括:镜像名称、云平台名称、虚机名称、规格、系统盘外接存储、物理主机名、IP、掩码、网关、vlan号、物理网络。选填参数包括:计算资源可用域、路由、网络可用域等。
步骤S102,接收云管理平台提交的资源创建请求,解析所述资源创建请求对应的定制化模板,得到所述资源创建请求中的资源参数,所述资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到。
具体地, 接收用户通过云管理平台提交的资源创建请求,并解析资源创建请求对应的定制化模板,得到其中的资源参数,通常来说,用户通过页面下载对应的资源模板,填写创建资源需要的信息,然后通过上传方式提交资源的创建请求。模板对每个创建资源的参数进行声明,包括必选参数和可选参数;在一个模板中,用户可以填写一个或多个资源的信息,即代表申请创建一个资源或者批量创建多个资源,资源参数也可以包括资源创建的类型及个数。
步骤S103,根据所述资源参数确定待创建资源的个数,并依次将所述待创建资源拆分为基本类型的资源单位,并通过对所述资源单位的任务编排,形成前后依赖的任务,所述任务负责一个基本类型的资源创建。
具体地,单个云平台 API接口只能支持创建单个基本类型的资源,所以需要将用户请求创建的资源拆分至数个基本类型的资源单位。通过轮询待创建资源列表,识别每个资源需要创建的基本类型的资源列表,为每个基本类型的资源生成一个创建型任务,创建型任务中包含待创建基本类型资源的参数信息,此外,还需生成关联基本类型资源的关联型任务,关联性型任务中包含需要关联的两个基本类型资源的信息。以创建虚拟机为例,涉及的基本类型的资源包括:网络、子网、路由、系统盘、数据卷。则输出的待执行的任务包括:创建网络、创建子网、创建路由、创建系统盘、创建虚拟机、创建数据卷、挂载数据卷,即7个类型的任务。其中:创建网络、创建子网、创建路由、创建系统盘、创建虚拟机、创建数据卷为创建型任务、挂载数据卷为关联型任务。最后输出待执行的任务列表。因为基本类型资源的创建具有前后依赖关系,所以该任务列表执行也具有顺序性。
步骤S104,向预置的线程池中提交及执行所述任务,并在所述任务的任务执行线程中,根据所述任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发所述任务及对应的资源参数。
具体地,需要执行每个资源的创建或者关联任务,即向线程池中提交资源创建任务;不同资源的创建或者资源间的关联使用不同处理线程,他们以任务的类型来区分。但每个任务的执行线程到完成任务状态更新中,都包含封装、提交、输出、更新四个基本步骤,其中:
封装步骤:根据任务中的资源参数信息,封装对应资源创建的Restful请求体
提交步骤:根据任务中的资源类型,将请求参数通过API接口提交至云平台;这里使用了异步的API调用方式。即API接口先对请求做出响应,资源创建可能仍旧在创建之中。
步骤S105,周期性的通过RESTful API检测云平台对于所述任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
具体地周期性的扫描正在执行中的任务,获取到云平台为资源分配的唯一性标识uuid,根据此uuid,通过平台提供的查询资源详情API接口获取资源的状态,根据资源的状态判别资源创建是否完成,比如当接收到资源创建完成的指令时,标记任务为完成状态,或,在预设时长内未接收到资源创建完成的指令时,标记任务为超时状态。即对创建资源的状态进行任务状态更新,还包括输出步骤及更新步骤:
输出模块:提交Restful请求后,输出请求的返回数据,API接口会返回提交创建资源的唯一性标识uuid,也需要记录该资源的uuid。
更新模块:更新模块负责更新任务的状态信息和资源信息。当任务执行完输出模块的进程后,将任务更新为“执行中”状态;在资源创建完成后,根据输出模块记录的uuid更新资源的状态为可用将任务更新为“完成”状态。
本发明实施例提供的一种混合云资源创建方法,根据云平台的基本资源类型,创建基本资源类型的定制化模板;接收云管理平台提交的资源创建请求,解析资源创建请求对应的定制化模板,得到资源创建请求中的资源参数,资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;根据资源参数确定待创建资源的个数,并依次将待创建资源拆分为基本类型的资源单位,并通过对资源单位的任务编排,形成前后依赖的任务,任务负责一个基本类型的资源创建;向预置的线程池中提交及执行任务,并在任务的任务执行线程中,根据任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发任务及对应的资源参数;周期性的通过RESTful API检测云平台对于任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。这样能够为云平台提供的异步接口和线程池技术实现了资源创建请求的并行处理,在传统的资源创建方法的时间上,有了量级别的提升;尤其在大规模资源需求的场景下,也能发挥云计算系统的并发处理的优势,提高资源创建效率。
在上述实施例的基础上,所述混合云资源创建方法,还包括:
当所述任务对应的资源创建请求为在多个云平台创建资源时,通过预设的任务调度算法动态调整每个平台的任务数量。
在本发明实施例中,可能存在任务对应的资源创建请求为在多个云平台创建资源的情况,如果待创建资源超过最佳线程数后,执行器会按照提交的顺序依此地执行任务,从而有可能出现在这种场景:云平台A提交了大量的资源创建申请,导致后提交资源创建申请的云平台B进入长时间排队等待状态。此外,对于单个云平台而言,创建资源的最大并发数通常存在上限,超过该上线会出现严重的性能问题,影响整体创建的效率。所以,为了解决上述两个问题,引入一种自适应的公平调度算法:根据系统正在创建和待创建资源的情况,动态调整每个平台的提交创建申请的并发量。从而达到这一种效果:向云平台提交的资源创建请求数可在一定范围内进行伸缩,在系统空闲时,提高资源创建并发量;在系统繁忙时,减少资源创建并发量;均衡多个云平台下的资源创建,使每个云平台的任务都能被公平的调度到并提交执行,其中,任务调度算法具体包括:
步骤1:获取线程池的初始任务参数,所述初始任务参数包括:线程池最佳线程数TC,系统线程池活动的线程数 TR=0,系统线程池队列总大小Q,系统线程池队列空闲大小I=Q;
步骤2:初始化多个云平台的资源创建请求中的最大并发数U={U
1,U
2,..., Un},云平台创建资源的最小并发数L={L
1,L
2,..., L
n},云平台并发创建资源的当允许并发数P={P
1,P
2,...,P
n},且P
k=U
k,其中
,表示所有平台的当前允许并发数P初始化为最大并发数U,云平台正在创建中的资源数量:R [1...n]={0},表示所有平台正在创建中的资源数量为0,其中,n为云平台个数;
步骤3:计算第k,
个云平台当前允许的并发数P
k,若
为真,则进入步骤4,反之进入步骤7;
步骤4,若TC–TR = 0,则进入步骤5,否则进入步骤6;
步骤5,若
为真,则:P
k=P
k-1,进入步骤7;
步骤6,若
为真,则:P
k=P
k+1,进入步骤7;
步骤7,获取第k,
个云平台获取待创建的资源,计算其总数为s
k,获取统线程池队列空闲大小I,计算可提交创建的资源个数为:E =
,取四个数值的最小值,若E > 0,提交E个任务到执行器进行创建。
本发明实施例在混合云的管理平台中,多个云平台同时资源创建时,采取自适应的调度算法,根据资源创建任务的实时执行情况,动态调整各平台每次可提交资源创建请求的数量,让多个云平台能够并行的创建资源,较少无效的排队等待时间。
在上述实施例的基础上,所述混合云资源创建方法,还包括:
检测云平台是否满足所述资源参数对应的参数要求;
当所述云平台满足所述资源参数对应的参数要求时,根据所述资源参数确定待创建资源的个数。
在本发明实施例中,在接收到用户通过云管理平台上传的资源参数后,根据现有且可用的云平台系统的物理资源信息,检查用户填写的资源参数的有效性。以创建虚拟机为例,用户填写了创建虚拟机必要的主机、镜像、存储等参数信息,需要检查该云平台上是否存在用户指定的主机、镜像、存储,如果该信息都存在,则还需要检查这些主机、镜像、存储资源的可用状态。
本发明实施例在接收到用户通过云管理平台上传的资源参数后,需要对资源参数是否能够创建做有效性的校验,使得后续任务能够被有效完成。
图2为本发明实施例提供的一种混合云资源创建系统,包括:创建模块S201、接收模块S202、任务编排模块S203、执行模块S204、更新模块S205,其中:
创建模块S201,用于根据云平台的基本资源类型,创建基本资源类型的定制化模板。
接收模块S202,用于接收云管理平台提交的资源创建请求,解析所述资源创建请求对应的定制化模板,得到所述资源创建请求中的资源参数,所述资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到。
任务编排模块S203,用于根据所述资源参数确定待创建资源的个数,并依次将所述待创建资源拆分为基本类型的资源单位,并通过对所述资源单位的任务编排,形成前后依赖的任务,所述任务负责一个基本类型的资源创建。
执行模块S204,用于向预置的线程池中提交及执行所述任务,并在所述任务的任务执行线程中,根据所述任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发所述任务及对应的资源参数。
更新模块S205,用于周期性的通过RESTful API检测云平台对于所述任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
在一个实施例中,系统还可以包括:
调整模块,当所述任务对应的资源创建请求为在多个云平台创建资源时,通过预设的任务调度算法动态调整每个平台的任务数量。
关于混合云资源创建系统的具体限定可以参见上文中对于混合云资源创建方法的限定,在此不再赘述。上述混合云资源创建系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)301、存储器(memory)302、通信接口(Communications Interface)303和通信总线304,其中,处理器301,存储器302,通信接口303通过通信总线304完成相互间的通信。处理器301可以调用存储器302中的逻辑指令,以执行如下方法:根据云平台的基本资源类型,创建基本资源类型的定制化模板;接收云管理平台提交的资源创建请求,解析资源创建请求对应的定制化模板,得到资源创建请求中的资源参数,资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;根据资源参数确定待创建资源的个数,并依次将待创建资源拆分为基本类型的资源单位,并通过对资源单位的任务编排,形成前后依赖的任务,任务负责一个基本类型的资源创建;向预置的线程池中提交及执行任务,并在任务的任务执行线程中,根据任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发任务及对应的资源参数;周期性的通过RESTful API检测云平台对于任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
此外,上述的存储器302中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:根据云平台的基本资源类型,创建基本资源类型的定制化模板;接收云管理平台提交的资源创建请求,解析资源创建请求对应的定制化模板,得到资源创建请求中的资源参数,资源创建请求为用户根据资源参数的类型,选择对应的定制化模板填写资源参数并通过云管理平台上传得到;根据资源参数确定待创建资源的个数,并依次将待创建资源拆分为基本类型的资源单位,并通过对资源单位的任务编排,形成前后依赖的任务,任务负责一个基本类型的资源创建;向预置的线程池中提交及执行任务,并在任务的任务执行线程中,根据任务的资源参数,封装对应的RESTful请求体,并通过RESTful API向云平台下发任务及对应的资源参数;周期性的通过RESTful API检测云平台对于任务的创建资源的状态,并在创建资源的状态发生改变时,对创建资源的状态进行任务状态更新。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。