CN115729679A - 任务处理方法及装置、计算机可读存储介质、电子设备 - Google Patents
任务处理方法及装置、计算机可读存储介质、电子设备 Download PDFInfo
- Publication number
- CN115729679A CN115729679A CN202211542494.7A CN202211542494A CN115729679A CN 115729679 A CN115729679 A CN 115729679A CN 202211542494 A CN202211542494 A CN 202211542494A CN 115729679 A CN115729679 A CN 115729679A
- Authority
- CN
- China
- Prior art keywords
- task
- container
- task execution
- code
- executing
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本公开是关于一种任务处理方法及装置、计算机可读存储介质、电子设备,涉及计算机技术领域,该方法包括:通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。本公开提高了任务处理效率。
Description
技术领域
本公开实施例涉及计算机技术领域,具体而言,涉及一种任务处理方法、任务处理装置、计算机可读存储介质以及电子设备。
背景技术
现有的任务处理方法中,可以通过平台级别的定时任务调度方案来实现任务处理。但是,该方法依赖额外组件,进而使得任务处理效率较低。
需要说明的是,在上述背景技术部分发明的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种任务处理方法、任务处理装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的任务处理效率较低的问题。
根据本公开的一个方面,提供一种任务处理方法,包括:
通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
根据本公开的一个方面,提供一种任务处理装置,包括:
容器生成脚本确定模块,用于通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
容器生成脚本执行模块,用于通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
任务执行工具调用模块,用于通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
容器任务镜像执行模块,用于通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的任务处理方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的任务处理方法。
本公开实施例提供的一种任务处理方法,一方面,由于可以根据任务执行代码所具有的当前代码类别,确定执行任务执行代码所需要的容器生成脚本;再通过代码管理工具执行容器生成脚本得到与任务执行代码对应的容器任务镜像,并将容器任务镜像提交至容器编排引擎;进而通过容器编排引擎根据任务执行代码所具有的任务类别,调用对容器任务镜像进行调度执行所需要的任务执行工具;最后通过任务执行工具发布容器任务镜像并执行容器任务镜像,得到与任务执行代码对应的任务执行结果,无需依赖额外组件即可实现对应的任务执行,解决了现有技术中由于需要依赖额外组件,进而使得任务处理效率较低的问题,提高了任务执行效率;另一方面,由于可以基于任务类别调用对应的任务执行工具进行实现任务执行过程,进而可以实现在负载环境下保证任务执行的一致性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出根据本公开示例实施例的一种任务处理方法的流程图。
图2示意性示出根据本公开示例实施例的一种任务处理平台的结构框图。
图3示意性示出根据本公开示例实施例的一种根据任务执行代码所具有的当前代码类别,确定执行任务执行代码所需要的容器生成脚本的方法流程图。
图4示意性示出根据本公开示例实施例的一种发布容器任务镜像并执行容器任务镜像,得到与任务执行代码对应的任务执行结果的方法流程图。
图5示意性示出根据本公开示例实施例的一种可视化页面的界面显示图。
图6示意性示出根据本公开示例实施例的另一种可视化页面的界面显示图。
图7示意性示出根据本公开示例实施例的一种CronJob以及Job的实现原理的示例图。
图8示意性示出根据本公开示例实施例的一种由多容器组成的容器组Pod的示例图。
图9示意性示出根据本公开示例实施例的一种任务处理装置的框图。
图10示意性示出根据本公开示例实施例的一种用于实现上述任务处理方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
随着互联网软件需求的快速迭代,应用服务中的定时任务数量日益增加,必须进行有效的管理;在实际的应用过程中,使用分布式任务调度系统来管理分布式服务中的定时任务已经是行业内的通用做法。但是,常见的定时任务调度系统在代码管理、调度管理、运维监控方面仍存在问题;例如,在代码管理方面,常见的定时任务调度系统仅仅是将代码进行保存,并没有使用版本控制工具以及代码变更的信息追溯能力,无法快速的查看任务代码;又例如,在调度管理方面,常见的任务调度系统需要提前准备计算资源并保有一定的冗余,且存在资源利用率低以及极易造成大量的资源浪费;再例如,在监控运维方面,常见的定时任务调度系统需要单独实现一套监控系统,在环境隔离方面依赖人工接入,存在成本高的问题;同时,由于可能的宕机问题导致任务切换或者任务执行失败,可用性不足。
在一些执行任务处理的方法中,可以通过如下几种方式来实现:一种是,单机定时任务调度方案,使用linux系统中的crontab配置一个简单的定时任务;另一种是,各类语言框架中的定时任务调度方案;例如,使用java语言中的Quartz设置定时任务,python语言中的APScheduler设置定时任务等等;再一种是,平台级别的定时任务调度方案,例如Elastic-job、xxl-job等。
但是,上述方法存在如下缺陷:首先,对于单机定时任务调度方案来说,其存在的缺陷可以包括但不限于:一方面,可用性低,节点宕机会直接导致任务失败;另一方面,有性能瓶颈,单节点机器的性能存在上限;再一方面,协同能力差,没有完善的可视化管理和运维工具,完全靠人工交流,存在业务隐患;其次,对于各类语言框架中的定时任务调度方案来说,其虽然相对单机crontab可用性有了提高,但是任务不能动态变更,缺少了重要的灵活性;同时,不同语言有不同的使用方式,接入成本高,且同样缺少完善的可视化管理和运维工具;进一步的,对于平台级别的定时任务调度方案,例如Elastic-job、xxl-job等来说,这类定时任务调度方案相对更加成熟,在可用性、故障转移、可视化方面都有了支持;但是,其还是存在如下缺陷:一方面,依赖额外组件,需要额外的数据库或者注册中心来配合保证任务没有被重复执行;另一方面,语言耦合严重,更多的支持java语言;运行环境的可配置等灵活性也欠缺;再一方面,资源利用率不高,需要固定资源,并不能实现资源的重复利用。
基于此,本示例实施方式中首先提供了一种任务处理方法,该方法可以运行于服务器、服务器集群或云服务器等;当然,本领域技术人员也可以根据需求在其他平台运行本公开的方法,本示例性实施例中对此不做特殊限定。具体的,参考图1所示,该任务处理方法可以包括以下步骤:
步骤S110.通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
步骤S120.通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
步骤S130.通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
步骤S140.通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
上述任务处理方法中,一方面,由于可以根据任务执行代码所具有的当前代码类别,确定执行任务执行代码所需要的容器生成脚本;再通过代码管理工具执行容器生成脚本得到与任务执行代码对应的容器任务镜像,并将容器任务镜像提交至容器编排引擎;进而通过容器编排引擎根据任务执行代码所具有的任务类别,调用对容器任务镜像进行调度执行所需要的任务执行工具;最后通过任务执行工具发布容器任务镜像并执行容器任务镜像,得到与任务执行代码对应的任务执行结果,无需依赖额外组件即可实现对应的任务执行,解决了现有技术中由于需要依赖额外组件,进而使得任务处理效率较低的问题,提高了任务执行效率;另一方面,由于可以基于任务类别调用对应的任务执行工具进行实现任务执行过程,进而可以实现在负载环境下保证任务执行的一致性。
以下,将结合附图对本公开示例实施例所记载的任务处理方法进行详细的解释以及说明。
首先,对本公开示例实施例所记载的名词进行解释。
CI:Continuous Integration,持续集成。其中,持续集成的含义为:软件开发人员持续频繁的将代码集成到代码管理工具上;在实际应用的过程中,开发人员提交了新代码之后,立刻自动的进行构建,执行单元测试,开发人员只需要提交代码,就可以得到这次集成的结果,根据结果,可以确定新代码和原有代码能否正确地集成在一起;同时,持续集成的优点为:快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易,在节省人力成本的基础上可以加快软件的开发速度,并实现实时交付。
CD:Continuous Delivery,持续交付。其中,持续交付指的是在持续集成的基础之上,将代码自动部署到预生产环境(Staging);同时,Staging环境可以理解为线上环境的镜像(最大限度来模拟线上的环境),测试人员、PM在预生产环境(Staging)上对最终要部署的项目做最后一轮验证;进一步的,如果预生产环境验证通过,则可以通过手动的方式部署到线上(生产)环境。
其次,对本公开示例实施例的发明目的进行解释以及说明。具体的,本公开示例实施例所记载的任务处理方法,可以基于最新的容器化和Kubernetes服务编排技术,从效率和成本方面,使用一体化设计的思想。在实际应用过程中,首先,在代码管理方面,利用已经技术成熟的版本控制工具(Git),直接管理任务代码,提供可视化界面,进而可以实现快速查看代码变动历史、查看正在运行的代码和最新提交的代码,方便快速定位及追溯问题;其次,在任务编排、调度管理方面,按照不同的任务分配,编写Dockerfile,将任务代码及环境依赖信息打包为整体的任务镜像,提供了更广泛的自由度;进一步的,利用云平台的CronJob调度器进行任务分发,可以在负载环境下保证任务运行的一致性,同时可以随用随申请,用后归还资源,大大提高资源的利用率;最后,在运维监控方面,基于容器环境隔离性,可以保证实现任务间的隔离性,利用云平台的监控可视化,可以方便的监控所有任务的运行情况,无需额外的开发和运维成本。
同时,在本公开示例实施例所记载的任务处理方法中,通过加入Git代码版本管理工具,使得平台实现从代码到定时任务运行的全生命周期管理;通过统一可定制的Dockerfile,自动化完成任务镜像的打包CI(Continuous Integration,持续集成)/CD(Continuous Delivery,持续交付),支持各类任务和运行环境要求,同时实现了隔离性和安全性;同时,使用云原生Kubernetes容器编排中的Cronjob调度器进行任务分发和监控,在保证任务执行的高可用之外,没有额外引入第三方组件;同时,任务执行所需的资源随用随取,用完即还,大大降低了硬件成本;进一步的,本平台基于容器部署,方便快捷,大大降低了管理成本。
进一步的,对本公开示例实施例所记载的任务处理平台进行解释以及说明。具体的,参考图2所示,该任务处理平台中可以包括代理管理工具210、容器编排引擎220、数据库230以及可视化页面(web)240;其中,代码管理工具可以与容器编排引擎通信连接,容器编排引擎可以与数据库连接,可视化页面可以分别与代码管理工具以及容器编排引擎通信连接;同时,此处所记载的代码管理工具可以是Gitlab,容器编排引擎可以是Kubernetes(也可以简称为K8s),容器编码引擎中可以包括单任务执行工具Job-Manager221,以及循环任务执行工具CronJob-Mnanger222。
此处需要进一步补充说明的是,可视化管理页面(也可以被称为可视化后台)包括代码查看、镜像打包和任务执行三个部分;其中,代码查看部分基于远程操作Git log命令可以查看各类提交信息、对比各个版本代码的变更情况等等;镜像打包利用已经准备好的Dockerfile将代码通过CI流程打包为任务镜像;同时,任务执行界面可以选择不同服务的不同任务镜像,将任务提交给Kubernetes完成任务分发和执行,并记录任务的完成情况。
以下,将结合图2对图1中所示出的任务处理方法进行进一步的解释以及说明。具体的:
在步骤S110中,通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本。
在本示例实施例中,首先,通过代码管理工具接收软件开发人员通过前端提交的任务执行代码;其中,在接收任务执行代码的过程中,可以通过Gitlab中的Git Hook来接收该任务执行代码;其中,该任务执行代码可以是开人员使用任一编程语言来编写的定时任务代码或者单次任务代码,本示例对此不做特殊限制;其次,在接收到任务执行代码以后,即可根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本。具体的,参考图3所示,可以包括如下步骤:
步骤S310,获取所述任务执行代码所具有的当前代码名称,并根据所述当前代码名称中包括的当前名称类别,确定所述任务执行代码所具有的当前代码类别。
具体的,在确定当前代码类别的过程中,首先,Git Hook在获取到任务执行代码以后,即可获取该任务执行代码的当前代码名称;其中,该当前代码名称可以包括前面的名称部分+后缀部分;然后,根据该任务执行代码的后缀部分确定该任务执行代码的当前名称类别(也即具体所采用的编程语言),进而基于该当前名称类别确定该任务执行代码所具有的当前代码类别。
步骤S320,在预设的数据库中匹配与所述当前代码类别对应的目标代码类别。
具体的,在实际应用的过程中,如果数据库中存在与该当前代码类别对应的目标代码类别,则无需重新构建与该任务执行代码对应的容器生成脚本(也即Dockerfile);如果不存在,则需要重新构建容器生成脚本。
步骤S330,在确定所述预设的数据中存在与所述当前代码类别对应的目标代码类别时,从所述预设的数据库中获取与所述目标代码类别对应的容器生成脚本;其中,所述容器生成脚本为Dockerfile。
具体的,如果存在,则可以直接从数据库中获取与该当前代码类别对应的容器生成脚本Dockerfile。此处需要补充说明的是,此处所记载的Dockerfile,是一种可以用于构建docker镜像的文件,Dockerfile里包含了构建镜像所需的指令,且Dockerfile有其特定的语法规则;因此,为了可以执行与任务执行代码对应的任务,需要获取或者构建与该任务执行代码对应的容器生成脚本,进而在对应的容器中执行对应的任务;其中,此处所记载的任务可以包括测试任务,或者测试用例生成任务等等,本示例对此不做特殊限制。
步骤S340,在确定所述预设的数据中不存在与所述当前代码类别对应的目标代码类别时,创建执行所述待处理的任务代码所需要的容器生成脚本。
具体的,创建执行所述待处理的任务代码所需要的容器生成脚本,可以通过如下方式实现:首先,根据所述任务执行代码在预设的数据库中查询创建所述容器生成脚本所需要的目标配置信息;其次,根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像;然后,根据所述目标配置信息以及所述可执行镜像生成所述容器生成脚本。其中,根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像,可以通过如下方式实现:根据所述当前代码类别判断所述任务执行代码是否需要进行编译;在确定所述任务执行代码需要进行编译时,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像;在确定所述任务执行代码不需要进行编译时,获取与所述任务执行代码关联的第二可执行镜像。
在一种示例实施例中,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像,可以通过如下方式实现:首先,根据所述任务执行代码从预设的数据库中下载与所述任务执行代码关联的编译部署环境以及编译所述任务执行代码所需要的软件依赖包;其次,对所述任务执行代码进行脱敏处理,并在所述编译部署环境下执行所述软件依赖包以及脱敏处理后的任务执行代码的编译构建,生成与所述任务执行代码关联的第一可执行镜像。
以下,将对容器生成脚本的具体构建过程进行解释以及说明。具体的,首先,在数据库中查询构建容器生成脚本所需要的目标配置信息;其中,该目标配置信息是预先设置在数据库中的,其中,该目标配置信息可以包括任务执行代码的当前代码类别、任务执行框架类型、环境变量配置以及任务执行数据等等,当然也可以包括其他需要用到的配置信息,本示例对此不做特殊限制。其次,当查询到目标配置信息以后,即可根据当前代码类型确定与任务执行代码对应的可执行镜像。具体的,可以通过如下方式实现:首先,根据所述当前代码类型判断所述任务执行代码是否需要进行编译;其次,在确定所述任务执行代码需要进行编译时,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像;或者,在确定所述任务执行代码不需要进行编译时,获取与所述任务执行代码对应的任务执行框架类型对应的第二可执行镜像。
进一步的,在容器生成脚本以及可执行镜像的具体生成过程中,首先,根据当前代码类别(也可以是任务执行框架类型,本示例对此不做特殊限制)判断任务执行代码是否需要进行编译;其中,若脚本类型为Java语言或者Go语言,则确定需要进行编译;若需要编译,则执行预编译构建步骤得到第一可执行镜像;若无需编译,则可以直接获取与任务执行框架类型对应的第二可执行镜像。进一步的,在第一可执行镜像生成的过程中,可以通过如下方式实现:首先,从数据库中下载部署编译环境的基础镜像以及执行该任务执行代码所需要的依赖软件包;其次,还需要通过Git Hook对该任务执行代码进行脱敏处理,再在部署编译环境下执行依赖软件包以及脱敏处理后的任务执行代码的编译构建,得到第一可执行镜像。其中,此处所记载的脱敏处理可以包括对任务执行代码中所涉及到的敏感信息进行脱敏,该敏感信息可以包括但不限于人名、地名、身份证号码、手机号码、IP地址、MAC地址、具体的文件路径、文件名称、用户名以及用户密码等等,本示例对此不做特殊限制。
至此,可执行镜像的具体生成过程已经全部实现;进一步的,当得到可执行镜像以后,即可根据目标配置信息以及可执行镜像生成所述容器生成脚本。其中,容器生成脚本的具体生成过程可以通过如下方式实现:一方面,若测试脚本文件需要编译,则根据所述第一可执行镜像以及所述目标配置信息生成所述容器生成脚本;另一方面,若测试脚本文件不需要编译,则根据所述第二可执行镜像以及所述目标配置信息生成所述容器生成脚本;其中,所述容器生成脚本中可以包括执行所述任务执行代码所需要的目标配置信息、第一可执行镜像或第二可执行镜像;所述目标配置信息包括执行所述任务执行代码、当前代码类别、任务执行框架类型、环境变量配置以及任务执行数据等等。同时,所生成容器生成脚本例如可以是Dockerfile;并且,该容器生成脚本中定义的信息可以包括:任务执行所需的基础镜像,例如预编译构建生成的执行镜像,或者是已经预先安装了与任务执行框架对应的执行镜像;拷贝的任务执行所需的相关文件,包括:用于执行的任务执行代码以及任务执行数据等等。
在步骤S120中,通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎。
在本示例实施例中,首先,通过代码管理工具执行容器生成脚本进而得到容器任务镜像;其中,容器任务镜像的生成过程具体可以通过如下方式实现:首先,将所述容器生成脚本中包括的可执行镜像、依赖软件包、任务执行数据以及任务执行代码安装至与任务执行代码关联的指定目录;其次,根据目标配置信息生成容器启动指令,并基于容器启动指令以及指定目录下的可执行镜像、依赖软件包、任务执行数据以及任务执行代码,生成容器任务镜像。也即,可以安装可执行镜像(第一可执行镜像或第二可执行镜像)、依赖软件包、任务执行数据以及任务执行代码到指定目录,进而根据容器启动指令以及指定目录下的第一可执行镜像或第二可执行镜像、依赖软件包、任务执行数据以及任务执行代码生成对应的容器任务镜像。
其次,当得到容器任务镜像以后,即可将该容器任务镜像上传至容器编排引擎,其中,该容器编排引擎可以是Kubernetes,该容器编排引擎可以作为任务运行环境,也即在Kubernetes中,可以支持容器镜像的启动。同时,在将容器任务镜像上传至容器编排引擎的过程中,容器编排引擎会根据该容器任务镜像的任务名称片段该容器任务镜像是否为重复任务,若是,则禁止任务提交;若否,则正常提交。
在步骤S130中,通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具。
具体的,可以根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具。具体的,可以通过如下方式实现:首先,获取所述任务执行代码所具有的任务类别;其中,所述任务类别包括单次任务执行和/或定时任务执行;其次,当所述任务执行代码所具有的任务类别为单次任务执行时,确定执行与所述任务执行代码对应的容器任务镜像所需要的任务执行工具为单次任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的单次任务执行工具;当所述任务执行代码所具有的任务类别为定时任务执行时,确定执行与任务执行代码对应的容器任务镜像所需要的任务执行工具为循环任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的循环任务执行工具。也即,对于单次任务执行来说,可以调用K8s中的单次任务执行工具Job来进行任务执行,对于循环任务执行来说,可以调用K8s中的循环任务执行工具CronJob来进行任务执行;其中,与Job的区别为:CronJobCronJob执行器的实际执行时,需要先将任务分解为一个Job,Job最终分解为一个Pod(容器组),由对应的Pod完成任务执行。
在步骤S140中,通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
在本示例实施例中,参考图4所示,通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果,可以包括以下步骤:
步骤S410,通过所述任务执行工具对所述容器任务镜像进行发布,得到任务镜像显示界面,并在可视化页面中对所述任务镜像显示界面进行显示。
具体的,通过任务执行工具对容器任务镜像进行发布所得到的任务镜像显示界面可以参考图5所示;其中,在图5所示出的任务镜像显示界面中,可以包括多个不同的容器任务镜像;同时,对容器任务镜像展示的过程中,可以包括具体的名称信息、文件目录信息、修改时间信息、最后提交信息以及具体可以执行的操作类型等等;其中,操作类型可以包括查看操作已经容器任务镜像执行操作等等;当然,该任务镜像显示界面中还可以包括与容器任务镜像对应的分组信息、服务查找信息以及选择打包的镜像信息等等;同时,如果需要对新的容器任务镜像进行显示,还可以手动的通过新建的方式来实现;其中,具体的显示界面可以参考图6。
步骤S420,响应于作用于所述任务镜像显示界面中对所述容器任务镜像的选择操作,将与所述选择操作对应的容器任务镜像作为待执行任务镜像。
具体的,当需要执行某一个容器任务镜像时,可以触控任务镜像显示界面中的执行可交互控件,进而将与该被选中的交互控件对应的容器任务镜像作为待执行任务镜像。
步骤S430,通过所述任务执行工具执行所述待执行任务镜像得到任务执行容器,并执行所述任务执行容器,得到所述任务执行结果。
在本示例实施例中,首先,通过任务执行工具执行该待执行任务镜像得到任务执行容器。具体的,可以通过如下方式实现:当所述待执行任务镜像为单次任务执行时,通过单次任务执行工具执行所述待执行任务镜像得到任务执行容器;当所述待执行任务镜像为循环任务执行时,通过循环任务执行工具对所述待执行任务镜像进行分解,得到当前需要执行的任务镜像,并执行当前需要执行的任务镜像,得到所述任务执行容器。也即,在具体的应用过程中,如果是单次任务执行,则可以直接基于K8s中的Job任务执行器,为待执行任务镜像分配Pod,进而在该Pod中执行该待执行任务镜像得到对应的任务执行容器;如果是循环任务执行,则基于K8s中的CronJob任务执行器,基于当前时间节点对待执行任务镜像进行分解,得到当前需要执行的任务镜像,进而为该当前需要执行的任务镜像分配Pod,并在该Pod中执行当前需要执行的任务镜像,进而得到对应的任务执行容器。其中,CronJob以及Job的具体实现原理图可以参考图7所示。
在一种示例实施例中,执行所述待执行任务镜像得到任务执行容器,可以通过如下方式包括:在所述容器编码引擎中配置由多个独立子容器组成的容器组;其中,所述容器组中所包括的独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;根据所述当前代码类别从所述容器组中选取执行所述待执行镜像所需要的目标容器,并在所述目标容器中执行所述待执行任务镜像,得到所述任务执行容器;其中,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新;其中,多容器组的具体示例图可以参考图8所示。
进一步的,在得到任务执行容器以后,即可执行所述任务执行容器,得到所述任务执行结果。具体的,可以通过如下方式实现:启动并执行任务执行容器中包括的可执行镜像,得到任务执行结果。同时,在确定所述任务执行容器中包括的可执行镜像执行完毕时,删除该任务执行容器中的可执行镜像。通过该方法,可以实现Pod的重复利用,实现资源随用随取,用完即还的目的,大大降低了硬件成本。
进一步的,在所述可执行镜像执行的过程中,响应于通过预设的状态查询接口发送的对所述可执行镜像的当前执行状态的查看请求,在可视化页面中对所述当前执行状态进行显示。同时,在具体的应用过程中,监控和运维可以复用Kubernetes提供的查询接口,不需要额外开发,配合Grafa指标大屏可以方便查看任务执行进度信息。
至此,本公开示例实施例所记载的任务处理方法已经全部实现。基于前述记载的内容可以得知,本公开示例实施例所记载的任务处理方法,至少存在如下优势:一方面,接入学习和使用成本低,平台包含了可视化界面,操作人员仅需要关注任务代码逻辑即可,平台可以自动完成从代码到镜像的打包过程;另一方面,多语言、复杂环境支持;也即,可以利用容器技术,使用统一可定制的Dockerfile,开发人员可以使用任一开发语言并配置运行环境信息;再一方面,架构简单,部署及维护方便;也即,可以利用云原生平台的CronJob调度器,没有引入额外的复杂组件,架构简单,可以一键部署平台;进一步的,运维快捷;也即,在具体的应用过程中,可以直接接入云平台的监控大盘查看任务执行情况并进行异常处理,不需要额外进行监控开发;更进一步的,硬件成本优化,任务执行时获取资源,执行后自动归还硬件资源,大大提高了资源利用率。
本公开示例实施例还提供了一种任务处理装置。具体的,参考图9所示,该任务处理装置可以包括容器生成脚本确定模块910、容器生成脚本执行模920、任务执行工具调用模块930以及容器任务镜像执行模块940。
其中:
容器生成脚本确定模块910,可以用于通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
容器生成脚本执行模块920,可以用于通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
任务执行工具调用模块930,可以用于通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
容器任务镜像执行模块940,可以用于通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
在本公开的一种示例性实施例中,根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本,包括:获取所述任务执行代码所具有的当前代码名称,并根据所述当前代码名称中包括的当前名称类别,确定所述任务执行代码所具有的当前代码类别;在预设的数据库中匹配与所述当前代码类别对应的目标代码类别;在确定所述预设的数据中存在与所述当前代码类别对应的目标代码类别时,从所述预设的数据库中获取与所述目标代码类别对应的容器生成脚本;其中,所述容器生成脚本为Dockerfile;在确定所述预设的数据中不存在与所述当前代码类别对应的目标代码类别时,创建执行所述待处理的任务代码所需要的容器生成脚本。
在本公开的一种示例性实施例中,创建执行所述待处理的任务代码所需要的容器生成脚本,包括:根据所述任务执行代码在预设的数据库中查询创建所述容器生成脚本所需要的目标配置信息;根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像;根据所述目标配置信息以及所述可执行镜像生成所述容器生成脚本。
在本公开的一种示例性实施例中,根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像,包括:根据所述当前代码类别判断所述任务执行代码是否需要进行编译;在确定所述任务执行代码需要进行编译时,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像;在确定所述任务执行代码不需要进行编译时,获取与所述任务执行代码关联的第二可执行镜像。
在本公开的一种示例性实施例中,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像,包括:根据所述任务执行代码从预设的数据库中下载与所述任务执行代码关联的编译部署环境以及编译所述任务执行代码所需要的软件依赖包;对所述任务执行代码进行脱敏处理,并在所述编译部署环境下执行所述软件依赖包以及脱敏处理后的任务执行代码的编译构建,生成与所述任务执行代码关联的第一可执行镜像。
在本公开的一种示例性实施例中,根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具,包括:获取所述任务执行代码所具有的任务类别;其中,所述任务类别包括单次任务执行和/或定时任务执行;当所述任务执行代码所具有的任务类别为单次任务执行时,确定执行与所述任务执行代码对应的容器任务镜像所需要的任务执行工具为单次任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的单次任务执行工具;当所述任务执行代码所具有的任务类别为定时任务执行时,确定执行与任务执行代码对应的容器任务镜像所需要的任务执行工具为循环任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的循环任务执行工具。
在本公开的一种示例性实施例中,通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果,包括:通过所述任务执行工具对所述容器任务镜像进行发布,得到任务镜像显示界面,并在可视化页面中对所述任务镜像显示界面进行显示;响应于作用于所述任务镜像显示界面中对所述容器任务镜像的选择操作,将与所述选择操作对应的容器任务镜像作为待执行任务镜像;通过所述任务执行工具执行所述待执行任务镜像得到任务执行容器,并执行所述任务执行容器,得到所述任务执行结果。
在本公开的一种示例性实施例中,通过所述任务执行工具执行所述待执行任务镜像得到任务执行容器,包括:当所述待执行任务镜像为单次任务执行时,通过单次任务执行工具执行所述待执行任务镜像得到任务执行容器;当所述待执行任务镜像为循环任务执行时,通过循环任务执行工具对所述待执行任务镜像进行分解,得到当前需要执行的任务镜像,并执行当前需要执行的任务镜像,得到所述任务执行容器。
在本公开的一种示例性实施例中,执行所述待执行任务镜像得到任务执行容器,包括:在所述容器编码引擎中配置由多个独立子容器组成的容器组;其中,所述容器组中所包括的独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;根据所述当前代码类别从所述容器组中选取执行所述待执行镜像所需要的目标容器,并在所述目标容器中执行所述待执行任务镜像,得到所述任务执行容器。
在本公开的一种示例性实施例中,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
在本公开的一种示例性实施例中,执行所述任务执行容器,得到所述任务执行结果,包括:启动并执行任务执行容器中包括的可执行镜像,得到任务执行结果。
在本公开的一种示例性实施例中,所述任务处理装置还包括:
可执行镜像删除模块,可以用于在确定所述任务执行容器中包括的可执行镜像执行完毕时,删除该任务执行容器中的可执行镜像。
在本公开的一种示例性实施例中,所述任务处理装置还包括:
当前执行状态显示模块,可以用于在所述可执行镜像执行的过程中,响应于通过预设的状态查询接口发送的对所述可执行镜像的当前执行状态的查看请求,在可视化页面中对所述当前执行状态进行显示。
上述任务处理装置中各模块的具体细节已经在对应的任务处理方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图10来描述根据本公开的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030以及显示单元1040。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1010可以执行如图1中所示的步骤S110:通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;步骤S120:通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;步骤S130:通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;步骤S140:通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)10201和/或高速缓存存储单元10202,还可以进一步包括只读存储单元(ROM)10203。
存储单元1020还可以包括具有一组(至少一个)程序模块10205的程序/实用工具10204,这样的程序模块10205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1000也可以与一个或多个外部设备1100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1050进行。并且,电子设备1000还可以通过网络适配器10100与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器10100通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (16)
1.一种任务处理方法,其特征在于,包括:
通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
2.根据权利要求1所述的任务处理方法,其特征在于,根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本,包括:
获取所述任务执行代码所具有的当前代码名称,并根据所述当前代码名称中包括的当前名称类别,确定所述任务执行代码所具有的当前代码类别;
在预设的数据库中匹配与所述当前代码类别对应的目标代码类别;
在确定所述预设的数据中存在与所述当前代码类别对应的目标代码类别时,从所述预设的数据库中获取与所述目标代码类别对应的容器生成脚本;其中,所述容器生成脚本为Dockerfile;
在确定所述预设的数据中不存在与所述当前代码类别对应的目标代码类别时,创建执行所述待处理的任务代码所需要的容器生成脚本。
3.根据权利要求2所述的任务处理方法,其特征在于,创建执行所述待处理的任务代码所需要的容器生成脚本,包括:
根据所述任务执行代码在预设的数据库中查询创建所述容器生成脚本所需要的目标配置信息;
根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像;
根据所述目标配置信息以及所述可执行镜像生成所述容器生成脚本。
4.根据权利要求3所述的任务处理方法,其特征在于,根据所述当前代码类别确定与所述任务执行代码对应的可执行镜像,包括:
根据所述当前代码类别判断所述任务执行代码是否需要进行编译;
在确定所述任务执行代码需要进行编译时,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像;
在确定所述任务执行代码不需要进行编译时,获取与所述任务执行代码关联的第二可执行镜像。
5.根据权利要求4所述的任务处理方法,其特征在于,对所述任务执行代码进行预编译构建,得到与所述任务执行代码关联的第一可执行镜像,包括:
根据所述任务执行代码从预设的数据库中下载与所述任务执行代码关联的编译部署环境以及编译所述任务执行代码所需要的软件依赖包;
对所述任务执行代码进行脱敏处理,并在所述编译部署环境下执行所述软件依赖包以及脱敏处理后的任务执行代码的编译构建,生成与所述任务执行代码关联的第一可执行镜像。
6.根据权利要求1所述的任务处理方法,其特征在于,根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具,包括:
获取所述任务执行代码所具有的任务类别;其中,所述任务类别包括单次任务执行和/或定时任务执行;
当所述任务执行代码所具有的任务类别为单次任务执行时,确定执行与所述任务执行代码对应的容器任务镜像所需要的任务执行工具为单次任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的单次任务执行工具;
当所述任务执行代码所具有的任务类别为定时任务执行时,确定执行与任务执行代码对应的容器任务镜像所需要的任务执行工具为循环任务执行工具,并调用对所述容器任务镜像进行调度执行所需要的循环任务执行工具。
7.根据权利要求1所述的任务处理方法,其特征在于,通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果,包括:
通过所述任务执行工具对所述容器任务镜像进行发布,得到任务镜像显示界面,并在可视化页面中对所述任务镜像显示界面进行显示;
响应于作用于所述任务镜像显示界面中对所述容器任务镜像的选择操作,将与所述选择操作对应的容器任务镜像作为待执行任务镜像;
通过所述任务执行工具执行所述待执行任务镜像得到任务执行容器,并执行所述任务执行容器,得到所述任务执行结果。
8.根据权利要求7所述的任务处理方法,其特征在于,通过所述任务执行工具执行所述待执行任务镜像得到任务执行容器,包括:
当所述待执行任务镜像为单次任务执行时,通过单次任务执行工具执行所述待执行任务镜像得到任务执行容器;
当所述待执行任务镜像为循环任务执行时,通过循环任务执行工具对所述待执行任务镜像进行分解,得到当前需要执行的任务镜像,并执行当前需要执行的任务镜像,得到所述任务执行容器。
9.根据权利要求7所述的任务处理方法,其特征在于,执行所述待执行任务镜像得到任务执行容器,包括:
在所述容器编码引擎中配置由多个独立子容器组成的容器组;其中,所述容器组中所包括的独立子容器包括接口测试辅助容器、用户界面测试辅助容器、上传/下载容器、脚本执行容器中的多个;
根据所述当前代码类别从所述容器组中选取执行所述待执行镜像所需要的目标容器,并在所述目标容器中执行所述待执行任务镜像,得到所述任务执行容器。
10.根据权利要求9所述的任务处理方法,其特征在于,所述接口测试辅助容器用于执行接口类型的测试脚本对象的容器镜像;所述用户界面辅助容器用于执行交互界面类型的测试脚本对象的容器镜像;所述上传/下载容器用于对与测试脚本对象关联的测试脚本文件进行动态下载,或者对封装后的测试执行报告进行实时上传;所述脚本执行容器用于响应于对所述测试脚本文件的更新操作,对测试脚本文件进行更新。
11.根据权利要求7所述的任务处理方法,其特征在于,执行所述任务执行容器,得到所述任务执行结果,包括:
启动并执行任务执行容器中包括的可执行镜像,得到任务执行结果。
12.根据权利要求11所述的任务处理方法,其特征在于,所述任务处理方法还包括:
在确定所述任务执行容器中包括的可执行镜像执行完毕时,删除该任务执行容器中的可执行镜像。
13.根据权利要求11所述的任务处理方法,其特征在于,所述任务处理方法还包括:
在所述可执行镜像执行的过程中,响应于通过预设的状态查询接口发送的对所述可执行镜像的当前执行状态的查看请求,在可视化页面中对所述当前执行状态进行显示。
14.一种任务处理装置,其特征在于,包括:
容器生成脚本确定模块,用于通过代码管理工具接收任务执行代码,并根据所述任务执行代码所具有的当前代码类别,确定执行所述任务执行代码所需要的容器生成脚本;
容器生成脚本执行模块,用于通过所述代码管理工具执行所述容器生成脚本得到与所述任务执行代码对应的容器任务镜像,并将所述容器任务镜像提交至容器编排引擎;
任务执行工具调用模块,用于通过所述容器编排引擎根据所述任务执行代码所具有的任务类别,调用对所述容器任务镜像进行调度执行所需要的任务执行工具;
容器任务镜像执行模块,用于通过所述任务执行工具发布所述容器任务镜像并执行所述容器任务镜像,得到与所述任务执行代码对应的任务执行结果。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-13任一项所述的任务处理方法。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-13任一项所述的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211542494.7A CN115729679A (zh) | 2022-12-02 | 2022-12-02 | 任务处理方法及装置、计算机可读存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211542494.7A CN115729679A (zh) | 2022-12-02 | 2022-12-02 | 任务处理方法及装置、计算机可读存储介质、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729679A true CN115729679A (zh) | 2023-03-03 |
Family
ID=85299952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211542494.7A Pending CN115729679A (zh) | 2022-12-02 | 2022-12-02 | 任务处理方法及装置、计算机可读存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729679A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707609A (zh) * | 2024-02-06 | 2024-03-15 | 云账户技术(天津)有限公司 | 一种基于容器编排管理工具管理脚本任务的方法及装置 |
-
2022
- 2022-12-02 CN CN202211542494.7A patent/CN115729679A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707609A (zh) * | 2024-02-06 | 2024-03-15 | 云账户技术(天津)有限公司 | 一种基于容器编排管理工具管理脚本任务的方法及装置 |
CN117707609B (zh) * | 2024-02-06 | 2024-04-30 | 云账户技术(天津)有限公司 | 一种基于容器编排管理工具管理脚本任务的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3842948A2 (en) | Method and apparatus for testing edge computing, device, and readable storage medium | |
CN109634728B (zh) | 作业调度方法、装置、终端设备及可读存储介质 | |
US20150100829A1 (en) | Method and system for selecting and executing test scripts | |
US20150100832A1 (en) | Method and system for selecting and executing test scripts | |
US10191733B2 (en) | Software change process orchestration in a runtime environment | |
US20150100830A1 (en) | Method and system for selecting and executing test scripts | |
CN111399897A (zh) | 基于kubernetes的应用发布方法以及系统 | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
CN102411503A (zh) | 空运行设计时环境 | |
CN106557878B (zh) | 开发项目管理方法及装置 | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
CN114297056A (zh) | 一种自动化测试方法及系统 | |
CN111695827A (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
US20160179570A1 (en) | Parallel Computing Without Requiring Antecedent Code Deployment | |
CN112187933A (zh) | 一种多架构云平台中服务的监控方法和系统 | |
KR20220074367A (ko) | 서버리스 개발 지원 플랫폼 및 방법 | |
CN115729679A (zh) | 任务处理方法及装置、计算机可读存储介质、电子设备 | |
US20210216434A1 (en) | Creation of minimal working examples and environments for troubleshooting code issues | |
CN112416747A (zh) | 一种测试用例执行方法、装置、设备及介质 | |
CN115840617A (zh) | 一种调试方法、系统及相关装置 | |
CN111324332A (zh) | 大数据任务的处理方法及系统、电子设备、存储介质 | |
CN114741294A (zh) | 一种页面的调试方法、装置、设备及存储介质 | |
KR20230050602A (ko) | 시스템 온 칩 설계 검증을 위한 테스트 자동화 시스템 및 방법 | |
CN113392002A (zh) | 一种测试系统构建方法、装置、设备及存储介质 | |
CN114968751A (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 |