CN112306633B - 一种获取不同虚拟化资源的系统及方法 - Google Patents
一种获取不同虚拟化资源的系统及方法 Download PDFInfo
- Publication number
- CN112306633B CN112306633B CN202011161368.8A CN202011161368A CN112306633B CN 112306633 B CN112306633 B CN 112306633B CN 202011161368 A CN202011161368 A CN 202011161368A CN 112306633 B CN112306633 B CN 112306633B
- Authority
- CN
- China
- Prior art keywords
- task
- interpreter
- virtualized
- module
- sending
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种获取不同虚拟化资源的系统及方法,属于虚拟化部署技术领域。本发明根据编译原理,通过向设计好的解释器传入预定义格式的语句,解释器通过解析传入的语句后,会调用不同虚拟化资源的API接口来发送资源请求,设计解释器在调用API接口后定时轮询任务执行状态,并更新任务状态,通过返回的该任务的id,可查询到资源获取的任务进度以及状态。在解释器中定义插件来实现定制化虚拟化资源操作,通过对虚拟化产品提供的简单操作API进行封装,实现复杂功能的实现和复用,并在任务进行的过程中,通过在解释器定义回收策略,来实现任务失败时的产生垃圾资源的回收,实现对虚拟化资源的有效利用。
Description
技术领域
本发明涉及虚拟化部署技术领域,尤其涉及一种获取不同虚拟化资源的系统及方法。
背景技术
虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒。未来,所有的资源都透明地运行在各种各样的物理平台上,资源的管理都将按逻辑方式进行,完全实现资源的自动化分配,而虚拟化技术就是实现它的理想工具。虚拟化技术是云计算的重要技术。
云计算现在已成为最热点的一个名词,云计算通过提供灵活、自助服务式的IT基础架构,促使信息处理方式发生了革命性的转变。在这场变革中,虚拟化技术发挥了决定性作用。它通过在操作系统和硬件之间引入一个虚拟管理层,来消除长期存在的软件与物理主机之间的紧耦合特性,使得应用的部署更为轻松便捷,也使得应用的迁移非常方便。
在虚拟化部署产品的设计前期,我们通常都会为产品选择一套云方案,一旦云方案确定后,我们基于确定的云方案进行开发。但是对于不同的客户,可能需要不同的云方案,或者当虚拟化部署产品中涉及到了对云计算中的虚拟化资源类型的修改,就需要花费大量的人力去做相应的不同云方案的版本开发。比如,原有虚拟化部署产品是基于VMware云计算方案的,但随着容器化的Serverless的盛行,客户需要修改现有虚拟化部署产品为容器方案,此时就需要花费大量人力开发一套容器方案。那么,如何在虚拟化部署产品中,对于使用不同类型的虚拟化方案时,可以通过简单的程序配置修改,对底层不同类型的虚拟化资源进行调用,实现多套云方案的适配,是目前急需解决的一个问题。
中国专利申请文献CN107908426A中,公开了一种跨平台应用程序的设计方法。该方法包括:监听应用程序在当前底层容器中对预设应用程序编程接口API系列中的预设API的调用;在监听到应用程序在当前底层容器中调用预设API系列中的至少一个预设API时,确定所述至少一个预设API并获取所述当前底层容器的环境标识;根据所述环境标识,将所述至少一个预设API转换为所述当前底层容器中对应的至少一个API,以在所述当前底层容器中加载所述应用程序。根据所述环境标识以及预先定义的预设API在对应环境标识的底层容器中的实现方式,将所述预设API转换为所述当前底层容器中的API。该方法通过在在不同的容器环境中提前内置好可探测当前容器环境的API,以及多个平台的其他API,应用程序在容器中会调用探测当前容器环境的api来获取当前的环境标识,通过这个环境标识在多个平台的其他API中找出属于该环境的API进行调用,相当于容器环境与API绑定。该方法可以使同一套应用程序能在不同的应用平台上运行并适应的解决方案。
现有技术至少存在以下不足:
1.现有虚拟化部署产品更换云方案或修改产品中使用到的虚拟化资源类型时,不能直接进行适配,需要重新开发,不方便。
2.虚拟化产品提供的资源操作类型不够丰富,不能满足定制化需求。
3.虚拟化产品部分不稳定,在并发任务过多时,容易出现程序崩溃。
发明内容
为解决现有技术中存在的技术问题,本发明提供了一种获取不同虚拟化资源的系统及方法。本发明根据编译原理,设计一种可以通过向设计好的解释器传入预定义格式的语句,解释器通过解析传入的语句后,会调用不同虚拟化资源的API接口或SDK接口来发送资源请求,设计解释器在调用API接口或SDK接口后定时轮询任务执行状态,并更新任务状态,通过解释器返回的该任务对应的消息队列编号,轻松地查询到资源获取的任务进度以及状态。通过在解释器中定义插件来实现定制化虚拟化资源操作,通过对虚拟化产品提供的简单操作API进行封装,实现复杂功能的实现和复用,并在任务进行的过程中,通过在解释器定义回收策略,来实现任务失败时的产生垃圾资源的回收,实现对虚拟化资源的有效利用。
在虚拟化部署产品需要使用不同类型的虚拟化方案时,可以通过简单的程序配置修改,来调用底层不同的虚拟化资源,实现多套云方案的适配;通过设计解释器中的规则,开发插件,实现特定的虚拟化资源操作,同时由任务监控模块获取资源操作进行的进度和状态。通过设计解释器中的规则,在虚拟化资源操作失败后,对该过程产生的虚拟化资源进行自动回收。
本发明提供了一种获取不同虚拟化资源的系统,包括虚拟机管理器,还包括解释器和功能模块;
所述解释器包括表达式接收器、多个完成不同任务的基本任务解释器、复杂任务解释器和任务发送模块;
所述功能模块由用户调用,为用户提供相应的功能,并通过用户调用向解释器发送虚拟化资源请求;
所述解释器执行如下操作:
由表达式接收器接收所述功能模块发送的虚拟化资源请求语句,所述虚拟化资源请求语句具有预定义的格式;
根据接收到的虚拟化资源请求语句进行任务拆解;
发送任务到该任务对应的虚拟机管理器的消息队列;
配置解释器参数,用于限制虚拟化资源的操作频率和任务数量;
所述虚拟机管理器在接收到任务后,返回该任务的id,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
优选地,所述获取不同虚拟化资源的系统还包括任务监控模块和垃圾回收模块;
所述任务监控模块执行如下操作:
通过轮询任务的id,监控任务的执行情况,当有任务执行失败时,通知垃圾回收模块进行回收;
根据监控到的任务执行情况,实时更新任务进度及状态;
所述垃圾回收模块执行如下操作:
根据所述任务监控模块输入的失败任务的id,进行失败任务的回收。
优选地,预定义的语句包括如下信息:需要的虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数。
优选地,所述表达式接收器执行如下操作:
接收所述所述功能模块发送的预定义的语句;
根据预定义的语句的格式,提取信息;
获取该虚拟化资源对象的任务列表,进行任务拆解;
根据任务的类型,判断是单一任务还是多项任务:
如果是单一任务,将任务发送给该任务对应的基本任务解释器;
如果是多项任务,将任务发送给所述复杂任务解释器。
优选地:
所述基本任务解释器将收到的任务发送到所述任务发送模块,并记录调用日志;
所述复杂任务解释器执行如下操作:
收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
将分解后的单一任务发送给该任务对应的基本任务解释器。
优选地,所述任务发送模块执行如下操作:
接收任务;
根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;
在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列。
本发明提供了一种用于上述获取不同虚拟化资源的系统的获取不同虚拟化资源的方法,包括如下步骤:
S100:用户通过调用所述功能模块请求虚拟化资源,并向表达式接收器发送虚拟化资源请求;
S200:表达式接收器接收所述功能模块发送的虚拟化资源请求,根据预定义的语句格式提取信息,所述预定义的语句包括如下信息:虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数;
S300:表达式接收器获取该虚拟化资源对象的任务列表后,进行任务拆解;
S400:表达式接收器根据任务类型,判断是单一任务还是多项任务,如果是单一任务,将任务发送给该任务对应的基本任务解释器;如果是多项任务,将任务发送给复杂任务解释器;S500:复杂任务接收器接收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
S600:将每个单一任务发送给该任务对应的基本任务解释器,并由基本任务解释器发送给任务发送模块;
S700:任务发送模块接收到任务后,根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;根据任务类型获取任务对应的虚拟机管理器的消息队列编号;
S800:任务发送模块在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列;
S900:虚拟机管理器接收到任务后,返回该任务的id给任务发送模块,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
优选地:
在步骤S900之后,还包括:
S901:任务发送模块将该任务的id注册到任务监控模块;
S902:任务监控模块监控该任务的执行,并进行任务进度和状态的实时更新。
优选地,还包括,当任务监控模块监控到有任务执行失败时,任务监控模块调用垃圾回收模块,垃圾回收模块根据预定义的垃圾资源回收策略,进行垃圾资源回收操作,所述垃圾资源包括虚拟机资源、网络资源和快照资源。
优选地,根据任务类型的不同预定义不同的垃圾资源回收策略。
与现有技术相对比,本发明的有益效果如下:
1.本发明通过解释器解释预定义语句,对封装的任务进行任务拆解,分别调用相应的单一任务,并根据任务发送时机发送任务到虚拟机管理器,实现对不同的虚拟化产品API或SDK的调用,进而实现产品虚拟化方案的切换,可以适配多种虚拟化产品,修改方便。
2.本发明通过策略插件对任务进行封装,为用户提供实现不同功能的任务,使用户更方便调用,无需关注内部实现细节。
3.本发明通过对任务调用的控制,确定任务发送时机实现虚拟化资源获取的稳定性提升系统的健壮性。
4.本发明通过垃圾回收模块,对失败任务产生的垃圾资源进行回收,并针对不同任务类型定义不同的垃圾资源回收策略,提升系统的健壮性。
附图说明
图1是本发明中解释器调用虚拟化资源的原理示意图;
图2是本发明对任务的监控及垃圾回收的原理示意图;
图3是本发明实施例2获取不同虚拟化资源的系统示意图;
图4是本发明的一个实施例的获取不同虚拟化资源的方法示意图;
图5是本发明的又一实施例的获取不同虚拟化资源的系统示意图。
具体实施方式
下面结合附图1-5,对本发明的具体实施方式作详细的说明。
本发明提供了一种获取不同虚拟化资源的系统,包括虚拟机管理器,还包括解释器和功能模块;
所述解释器包括表达式接收器、多个完成不同任务的基本任务解释器、复杂任务解释器和任务发送模块;
所述功能模块由用户调用,为用户提供相应的功能,并通过用户调用向解释器发送虚拟化资源请求;
所述解释器执行如下操作:
由表达式接收器接收所述功能模块发送的虚拟化资源请求语句,所述虚拟化资源请求语句具有预定义的格式;
预定义的格式可以是一个json数据,例如可以定义如下:
根据接收到的虚拟化资源请求语句进行任务拆解;
发送任务到该任务对应的虚拟机管理器的消息队列;
配置解释器参数,用于限制虚拟化资源的操作频率和任务数量;
所述虚拟机管理器在接收到任务后,返回该任务的id,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
作为优选实施方式,所述获取不同虚拟化资源的系统还包括任务监控模块和垃圾回收模块;
所述任务监控模块执行如下操作:
通过轮询任务的id,监控任务的执行情况,当有任务执行失败时,通知垃圾回收模块进行回收;
根据监控到的任务执行情况,实时更新任务进度及状态;在调用API或SDK接口发送给虚拟机管理器任务后,虚拟机管理器会返回一个该任务的id,通过该任务的id,可以查看这个任务的执行进度,根据每个任务的进度,可以换算总进度,写入数据库,供用户读取。进度可以以进度条形式展示出来。
任务的执行状态包括,未开始、进行中、任务完成和任务失败。
所述垃圾回收模块执行如下操作:
根据所述任务监控模块输入的失败任务的id,进行失败任务的回收。
比如,当用户请求创建一个漏洞场景,当解释器拆解任务后,需要先创建虚拟机,在创建完虚拟机后,但还未进行环境配置时,如果此时出现了网络问题或断电问题,任务执行到一半中断了,此时,这台虚拟机就占了虚拟资源,但因为并未完成环境配置,也无法使用,这时就该虚拟机资源就是垃圾资源。
上述示例的具体回收机制的实现是,通过一个线程一直在数据库中查询任务的状态,如果有任务失败,会找出已经创建出来的资源,并调用删除虚拟机的API接口或SDK接口,把这台虚拟机删除。
作为优选实施方式,预定义的语句包括如下信息:需要的虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数。虚拟化资源包括虚拟主机,虚拟网络等。虚拟化资源对象指的是特定的某个虚拟资源,例如某个虚拟主机,某张虚拟网卡。任务类型以及任务参数需要由具体业务需求进行相应的开发。
作为优选实施方式,所述表达式接收器执行如下操作:
接收所述所述功能模块发送的预定义的语句;
根据预定义的语句的格式,提取信息;
获取该虚拟化资源对象的任务列表,进行任务拆解;
任务拆解就是拆解复杂类型的任务为多个单一任务;任何一个基本任务解释器针对一类单一任务,比如,可分为A类基本任务,B类基本任务。如果用户发送的是恢复环境快照,解释器直接调用虚拟机管理器的恢复快照的API接口或SDK接口,如果用户发送的是创建漏洞主机,虚拟机管理器没有这个功能的接口,需要多个任务组合来完成,所以解释器就会先调用虚拟机管理器的创建主机接口,再调用虚拟机管理器的上传文件接口,最后调用执行命令接口通过几个接口调用的组合,来完成这样一个复杂任务。
根据任务的类型,判断是单一任务还是多项任务:
如果是单一任务,将任务发送给该任务对应的基本任务解释器;
如果是多项任务,将任务发送给所述复杂任务解释器。
作为优选实施方式:
所述基本任务解释器将收到的任务发送到所述任务发送模块,并记录调用日志;
所述复杂任务解释器执行如下操作:
收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;预设规则是根据业务需求进行设计的,需要实现的功能开发相应的策略插件。
例如我们规定了创建漏洞场景的任务,然后开发了这个任务需要去调用多个API的策略插件。用户发送这个任务给解释器,解释器根据任务名去匹配相应的插件去执行相关的API或SDK调用。
将分解后的单一任务发送给该任务对应的基本任务解释器。
作为优选实施方式,所述任务发送模块执行如下操作:
接收任务;
根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;解释器默认是读取到一个任务完成状态后,才会进行下一个任务,但可以通过解释器的配置文件进行解释器参数的配置,把解释器修改为异步执行任务,即多个任务同时发送一起执行。
在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列。如果当前正在执行的任务量比较多,那么可以根据正在执行的任务量以及等待执行的任务量,
为任务进行排序,并确定任务发送时机。
本发明提供了一种用于上述获取不同虚拟化资源的系统的获取不同虚拟化资源的方法,包括如下步骤:
S100:用户通过调用所述功能模块请求虚拟化资源,并向表达式接收器发送虚拟化资源请求;
S200:表达式接收器接收所述功能模块发送的虚拟化资源请求,根据预定义的语句格式提取信息,所述预定义的语句包括如下信息:虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数;
S300:表达式接收器获取该虚拟化资源对象的任务列表后,进行任务拆解;
S400:表达式接收器根据任务类型,判断是单一任务还是多项任务,如果是单一任务,将任务发送给该任务对应的基本任务解释器;如果是多项任务,将任务发送给复杂任务解释器;
S500:复杂任务接收器接收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
S600:将每个单一任务发送给该任务对应的基本任务解释器,并由基本任务解释器发送给任务发送模块;
S700:任务发送模块接收到任务后,根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;根据任务类型获取任务对应的虚拟机管理器的消息队列编号;
S800:任务发送模块在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列;
S900:虚拟机管理器接收到任务后,返回该任务的id,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
根据用户的请求调用相应的API接口或SDK接口,例如当用户需要创建一个具有漏洞的场景进行练习时,在接受到这个请求后,本发明的系统会调用API或SDK去先创建一台虚拟机,再调用API或SDK去上传有关漏洞的文件,并配置含有漏洞的环境。
API接口或SDK接口一般分为几大类,操作主机接口,配置主机网络接口,主机快照接口等,可根据业务需求进行拓展。
将任务通过策略插件封装后,用户只知道发送一个创建漏洞场景的任务,由解释器帮用户调用创建虚拟机、上传文件、配置环境等多个API接口或SDK接口,而用户无需知道内部具体实现过程,从而降低了用户创建任务的复杂度。
作为优选实施方式:
在步骤S900后,还包括:
S901:任务发送模块将该任务的id注册到任务监控模块;
S902:任务监控模块监控该任务的执行,并进行任务进度和状态的实时更新。
作为优选实施方式,还包括,当任务监控模块监控到有任务执行失败时,任务监控模块调用垃圾回收模块,垃圾回收模块根据预定义的垃圾资源回收策略,进行垃圾资源回收操作,所述垃圾资源包括虚拟机资源、网络资源和快照资源。
作为优选实施方式,根据任务类型的不同预定义不同的垃圾资源回收策略。
例如:一个创建漏洞场景的任务失败了,我们需要调用删除任务把创建出来的虚拟机删除,一个复杂配置网络的任务中途失败了,我们需要调用网络重置任务把网络恢复到初始状态。
实施例1
参照附图1-5,根据本发明的一个具体实施方案,下面对本发明获取不同虚拟化资源的系统及方法进行详细说明。
本发明提供了一种获取不同虚拟化资源的系统,包括虚拟机管理器,还包括解释器、功能模块,任务监控模块和垃圾回收模块;
所述解释器包括表达式接收器、多个完成不同任务的基本任务解释器、复杂任务解释器和任务发送模块;
所述功能模块由用户调用,为用户提供相应的功能,并通过用户调用向解释器发送虚拟化资源请求;
所述解释器执行如下操作:
由表达式接收器接收所述功能模块发送的虚拟化资源请求语句,所述虚拟化资源请求语句具有预定义的格式;预定义的语句包括如下信息:需要的虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数。
根据接收到的虚拟化资源请求语句进行任务拆解;
发送任务到该任务对应的虚拟机管理器的消息队列;
配置解释器参数,用于限制虚拟化资源的操作频率和任务数量;
所述表达式接收器执行如下具体操作:
接收所述所述功能模块发送的预定义的语句;
根据预定义的语句的格式,提取信息;
获取该虚拟化资源对象的任务列表,进行任务拆解;
根据任务的类型,判断是单一任务还是多项任务:
如果是单一任务,将任务发送给该任务对应的基本任务解释器;
如果是多项任务,将任务发送给所述复杂任务解释器。
所述基本任务解释器将收到的任务发送到所述任务发送模块,并记录调用日志;
所述复杂任务解释器执行如下操作:
收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
将分解后的单一任务发送给该任务对应的基本任务解释器。
所述任务发送模块执行如下操作:
接收任务;
根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;
在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列。
所述虚拟机管理器在接收到任务后,返回该任务的id,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务;
所述任务监控模块执行如下操作:
通过轮询任务的id,监控任务的执行情况,当有任务执行失败时,通知垃圾回收模块进行回收;
根据监控到的任务执行情况,实时更新任务进度及状态;
所述垃圾回收模块执行如下操作:
根据所述任务监控模块输入的失败任务对应的消息队列编号,进行失败任务的回收。
本发明提供了一种用于上述获取不同虚拟化资源的系统的获取不同虚拟化资源的方法,包括如下步骤:
S100:用户通过调用所述功能模块请求虚拟化资源,并向表达式接收器发送虚拟化资源请求;
S200:表达式接收器接收所述功能模块发送的虚拟化资源请求,根据预定义的语句格式提取信息,所述预定义的语句包括如下信息:虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数;
S300:表达式接收器获取该虚拟化资源对象的任务列表后,进行任务拆解;
S400:表达式接收器根据任务类型,判断是单一任务还是多项任务,如果是单一任务,将任务发送给该任务对应的基本任务解释器;如果是多项任务,将任务发送给复杂任务解释器;
S500:复杂任务接收器接收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
S600:将每个单一任务发送给该任务对应的基本任务解释器,并由基本任务解释器发送给任务发送模块;
S700:任务发送模块接收到任务后,根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;根据任务类型获取任务对应的虚拟机管理器的消息队列编号;
S800:任务发送模块在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列;
S900:虚拟机管理器接收到任务后,返回调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
在S900之后,还包括,
S901:任务发送模块将该任务的id注册到任务监控模块;
S902:任务监控模块监控该任务的执行,并进行任务进度和状态的实时更新。
当任务监控模块监控到有任务执行失败时,任务监控模块调用垃圾回收模块;
垃圾回收模块根据预定义的回收策略,对不同的任务进行不同的回收操作。根据任务类型的不同预定义不同的垃圾资源回收策略。当任务监控模块监控到有任务执行失败时,任务监控模块调用垃圾回收模块,垃圾回收模块根据预定义的垃圾资源回收策略,进行垃圾资源回收操作,所述垃圾资源包括虚拟机资源、网络资源和快照资源。
实施例2
参照附图1-5,根据本发明的一个具体实施方案,下面对本发明获取不同虚拟化资源的系统及方法进行详细说明。
本发明提供了一种获取不同虚拟化资源的系统,包括虚拟机管理器(如图3的VMM中,对于不同的方案,VMM为不同的虚拟化产品,如VMware、Docker或容器等等虚拟化产品),还包括解释器(如图3中虚拟化解释器)、和功能模块(如图3中的场景模块和实训模块,这两个模块分别提供不同的功能服务,通过用户调用不同的功能模块,申请虚拟化资源),任务监控模块和垃圾回收模块(如图3中的常驻任务Scheduler,同时实现任务监控模块和垃圾回收模块的功能);
如图3中,实训模块与场景模块会调用到本发明系统中的解释器,下面以场景模块为例进行说明。
场景模块中的创建网络漏洞场景功能(该功能用于创建含有漏洞的主机环境,让用户模拟黑客进行入侵)。用户在前端页面选择完场景后,后端就会生成创建该场景的语句,也就是要执行的任务,解释器在接收到该语句后,提取任务名和任务参数。
用任务名与策略名进行匹配,配对到创建漏洞场景的策略,复杂任务解释器根据策略把该任务拆解为创建虚拟机、上传漏洞文件和执行配置命令三个子任务,分别按配置调用这三个任务对应的基本任务解释器,然后基本任务解释器再调用任务发送模块,发送任务给虚拟机管理器,最终由虚拟机管理器执行任务。
基本任务解释器调用任务发送模块之前会在数据库记录信息,任务发送模块会根据配置文件,决定是同步发送还是异步发送任务,如果是同步发送,则先发送创建主机任务,在发送前,任务发送模块会读取配置文件中该任务同时进行的个数上限,并在数据库中查找该类任务正在进行的个数,如果没超过上限则发送到消息队列中拿到返回的该任务对应的消息队列编号,超过则等待。发送完任务,任务监控模块的监控线程会通过轮询任务id,查询各任务执行状态,并把执行进度和状态实时更新到数据库,其他查询接口可以从数据库中查到该任务的进展,如果任务完成了,则再发送下一个上传文件任务,直到所有任务都完成。
如果其中有任务失败,解释器会调用资源回收模块来对该任务产生的垃圾资源进行回收,先找到任务名对应的回收策略,复杂任务解释器根据策略对创建出来的主机进行删除,并响应给用户。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种获取不同虚拟化资源的系统,包括虚拟机管理器,其特征在于,还包括解释器和功能模块;
所述解释器包括表达式接收器、多个完成不同任务的基本任务解释器、复杂任务解释器和任务发送模块;
所述功能模块由用户调用,为用户提供相应的功能,并通过用户调用向解释器发送虚拟化资源请求;
所述解释器执行如下操作:
接收所述功能模块发送的虚拟化资源请求语句,所述虚拟化资源请求语句具有预定义的格式;
根据接收到的虚拟化资源请求语句进行任务拆解;
确定发送任务时机,并在发送任务时机发送任务到该任务对应的虚拟机管理器的消息队列;
配置解释器参数,用于限制虚拟化资源的操作频率和任务数量;
所述虚拟机管理器在接收到任务后,返回该任务的id,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
2.根据权利要求1所述的获取不同虚拟化资源的系统,其特征在于,还包括任务监控模块和垃圾回收模块;
所述任务监控模块执行如下操作:
通过轮询任务id,监控任务的执行情况,当有任务执行失败时,通知垃圾回收模块进行回收;
根据监控到的任务执行情况,实时更新任务进度及状态;
所述垃圾回收模块执行如下操作:
根据所述任务监控模块输入的失败任务的id,进行失败任务的回收。
3.根据权利要求1所述的获取不同虚拟化资源的系统,其特征在于,预定义的语句包括如下信息:需要的虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数。
4.根据权利要求3所述的获取不同虚拟化资源的系统,其特征在于:所述表达式接收器执行如下操作:
接收所述功能模块发送的预定义的语句;
根据预定义的语句格式,提取信息;
获取该虚拟化资源对象的任务列表,进行任务拆解;
根据任务的类型,判断是单一任务还是多项任务:
如果是单一任务,将任务发送给该任务对应的基本任务解释器;
如果是多项任务,将任务发送给所述复杂任务解释器。
5.根据权利要求4所述的获取不同虚拟化资源的系统,其特征在于:
所述基本任务解释器将收到的任务发送到所述任务发送模块,并记录调用日志;
所述复杂任务解释器执行如下操作:
收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
将分解后的单一任务发送给该任务对应的基本任务解释器。
6.根据权利要求1所述的获取不同虚拟化资源的系统,其特征在于:所述任务发送模块执行如下操作:
接收任务;
根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;
在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列。
7.一种用于权利要求1所述的获取不同虚拟化资源的系统的获取不同虚拟化资源的方法,其特征在于,包括如下步骤:
S100:用户通过调用所述功能模块请求虚拟化资源,并向表达式接收器发送虚拟化资源请求;
S200:表达式接收器接收所述功能模块发送的虚拟化资源请求,根据预定义的语句格式提取信息,所述预定义的语句包括如下信息:虚拟化资源类型、虚拟化资源对象、任务类型以及任务参数;
S300:表达式接收器获取该虚拟化资源对象的任务列表后,进行任务拆解;
S400:表达式接收器根据任务类型,判断是单一任务还是多项任务,如果是单一任务,将任务发送给该任务对应的基本任务解释器;如果是多项任务,将任务发送给复杂任务解释器;
S500:复杂任务解释器接收到任务后,根据预设规则匹配开发的策略插件,将多项任务分解为单一任务;
S600:将每个单一任务发送给该任务对应的基本任务解释器,并由基本任务解释器发送给任务发送模块;
S700:任务发送模块接收到任务后,根据当前任务情况以及配置的解释器参数,获取任务发送给虚拟机管理器的时机;根据任务类型获取任务对应的虚拟机管理器的消息队列编号;
S800:任务发送模块在获取的任务发送时机,将任务发送到该任务对应的虚拟机管理器的消息队列;
S900:虚拟机管理器接收到任务后,返回该任务的id给任务发送模块,调用该任务对应的虚拟化产品API接口或SDK接口,执行任务。
8.根据权利要求7所述的获取不同虚拟化资源的方法,其特征在于:
在步骤S900后,还包括:
S901:任务发送模块将该任务id注册到任务监控模块;
S902:任务监控模块监控该任务的执行,并进行任务进度和状态的实时更新。
9.根据权利要求8所述的获取不同虚拟化资源的方法,其特征在于,还包括,当任务监控模块监控到有任务执行失败时,任务监控模块调用垃圾回收模块,垃圾回收模块根据预定义的垃圾资源回收策略,进行垃圾资源回收操作,所述垃圾资源包括虚拟机资源、网络资源和快照资源。
10.根据权利要求9所述的获取不同虚拟化资源的方法,其特征在于,根据任务类型的不同预定义不同的垃圾资源回收策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011161368.8A CN112306633B (zh) | 2020-10-27 | 2020-10-27 | 一种获取不同虚拟化资源的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011161368.8A CN112306633B (zh) | 2020-10-27 | 2020-10-27 | 一种获取不同虚拟化资源的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306633A CN112306633A (zh) | 2021-02-02 |
CN112306633B true CN112306633B (zh) | 2021-11-02 |
Family
ID=74330472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011161368.8A Active CN112306633B (zh) | 2020-10-27 | 2020-10-27 | 一种获取不同虚拟化资源的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306633B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835958B (zh) * | 2021-09-22 | 2024-02-23 | 深圳乐信软件技术有限公司 | 一种分布式任务执行进度的监控方法、装置、介质及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034527A (zh) * | 2013-01-09 | 2013-04-10 | 上海交通大学 | 混合虚拟化云计算资源优化控制方法与系统 |
CN107742216A (zh) * | 2017-10-24 | 2018-02-27 | 东莞市盟大塑化科技有限公司 | 一种自动确认收付款的资金处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012031112A2 (en) * | 2010-09-03 | 2012-03-08 | Time Warner Cable, Inc. | Methods and systems for managing a virtual data center with embedded roles based access control |
WO2014182900A1 (en) * | 2013-05-08 | 2014-11-13 | Convida Wireless, Llc | Method and apparatus for the virtualization of resources using a virtualization broker and context information |
-
2020
- 2020-10-27 CN CN202011161368.8A patent/CN112306633B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034527A (zh) * | 2013-01-09 | 2013-04-10 | 上海交通大学 | 混合虚拟化云计算资源优化控制方法与系统 |
CN107742216A (zh) * | 2017-10-24 | 2018-02-27 | 东莞市盟大塑化科技有限公司 | 一种自动确认收付款的资金处理方法 |
Non-Patent Citations (2)
Title |
---|
A Tour of Convolutional Networks Guided by Linear Interpreters;Pablo Navarrete Michelini.er.al.;《2019 IEEE/CVF International Conference on Computer Vision (ICCV)》;20191102;全文 * |
边缘计算:现状与展望;施巍松等;《计算机研究与发展》;20191231;第56卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112306633A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535831B (zh) | 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质 | |
US10474438B2 (en) | Intelligent cloud engineering platform | |
CN104471537B (zh) | 中介虚拟机任务管理 | |
US20130152077A1 (en) | Personal and pooled virtual machine update | |
US8893272B2 (en) | Method and device for recombining runtime instruction | |
US11159604B2 (en) | Processing an operation with a plurality of processing steps | |
US5748962A (en) | Common channels for inter-application communications | |
US20070089107A1 (en) | Database communication method | |
CN112306633B (zh) | 一种获取不同虚拟化资源的系统及方法 | |
CN111367804B (zh) | 基于云计算及网络编程实现前端协作调试的方法 | |
CN115859280A (zh) | 内存马的检测方法、装置、设备及存储介质 | |
CN110891083B (zh) | 一种Gaia中支持多作业并行执行的代理方法 | |
CN113778714B (zh) | 一种Linux兼容Android的共享剪切板方法及装置 | |
CN116820527B (zh) | 程序升级方法、装置、计算机设备和存储介质 | |
CN113986466A (zh) | 一种面向云计算的gpu虚拟化系统和方法 | |
CN111708553A (zh) | 一种后台更新桌面镜像的终端及系统 | |
EP4102361A2 (en) | Method and apparatus for managing functions of a query engine | |
CN111596962A (zh) | 一种基于高速协议通道的实时微内核系统及其初始化方法 | |
CN115840617A (zh) | 一种调试方法、系统及相关装置 | |
CN114564249A (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN105117273A (zh) | 一种xen虚拟化平台中获取客户机进程信息的方法及系统 | |
JP2001265726A (ja) | コンピュータ作業負荷の高速リカバリおよび再配置を可能にする自動化アプリケーションおよび手順 | |
CN114598604A (zh) | 虚拟网络功能实例信息的监控方法、监控装置及终端 | |
CN117056029B (zh) | 资源处理方法、系统、装置、存储介质及电子设备 | |
CN118377584B (zh) | 一种基于容器化多插件固件分析任务调度系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |