掌桥专利:专业的专利平台
掌桥专利
首页

任务调度方法、装置、计算机设备和存储介质

文献发布时间:2024-04-18 19:52:40


任务调度方法、装置、计算机设备和存储介质

技术领域

本申请涉及电数字数据处理技术领域,特别是涉及一种任务调度方法、装置、计算机设备和存储介质。

背景技术

在实际应用中,业务系统和开发人员对应用程序的开发以及调用的需求日益增多,有多个开发人员会使用各自熟悉的程序语言编写算法逻辑,例如编写SQL提交数据库系统、编写python程序以及编写其他不同种类的程序实现各种算法逻辑,来实现复杂业务场景,这些算法逻辑种类不同,也需要在不同编译环境下分别执行。传统方法下,负责SQL的调度和多种应用程序的调度需要不同的RPC框架,这样会导致存在很大局限性,系统架构复杂且资源冗余度很高,利用率较低。

对于目前相关技术中对于多种编程方式以及多种编程语言需要部署不同的编译器、不同的调度程序或者部署不同的数据库等,从而导致系统结构复杂且利用率低的问题尚未提出有效的解决方案。

发明内容

基于此,有必要针对上述技术问题,提供一种任务调度方法、装置、计算机设备和存储介质。

第一方面,本申请提供了一种任务调度方法。应用于服务端,所述服务端包括至少一个处理器,所述方法包括:

获取待调度任务,以及与待调度任务对应的至少一种应用程序;其中,应用程序包括预设的程序标记,应用程序与程序标记一一对应;根据程序标记从处理器中确定目标处理器,并将应用程序分配至目标处理器进行编译,得到应用程序字节码;将应用程序字节码提交至执行平台中;其中,执行平台用于利用应用程序字节码执行待调度任务。

在其中一个实施例中,执行平台包括:至少一种运行环境以及至少一种虚拟机。

在其中一个实施例中,服务端连接客户端,获取应用程序包括:

获取客户端发送的应用程序序列;其中,应用程序序列是由客户端根据预设的编码指令对应用程序进行编码处理得到的;根据编码指令对应用程序序列进行解码处理,得到应用程序。

在其中一个实施例中,根据程序标记从处理器中确定目标处理器,并将应用程序分配至目标处理器进行编译,得到应用程序字节码包括:

将应用程序分配至目标处理器,若检测到目标处理器运行正常,获取目标处理器生成的应用程序字节码;其中,应用程序字节码是由目标处理器根据预设的编译命令对应用程序进行编译得到的;

若检测到目标处理器运行报错,获取目标处理器生成的提醒信息,将提醒信息发送至预警端口并执行对应的提醒操作。

在其中一个实施例中,服务端通过注册中心与客户端连接,上述方法还包括:

对处理器进行类型检测,得到处理器类型检测结果,并将处理器类型检测结果传输至注册中心中进行注册,其中,注册中心将检测结果传输至客户端中;获取客户端发送的程序标记;其中,程序标记是由客户端根据处理器类型检测结果生成的。

在其中一个实施例中,服务端连接客户端;上述方法还包括:

获取客户端基于预设的线程池管理器并行传输的多个应用程序;基于线程池管理器,根据程序标记将多个应用程序并行分配至目标处理器。

第二方面,本申请还提供了一种任务调度装置。所述装置包括:

获取模块,用于获取用户上传的至少一种应用程序以及传输协议,其中,应用程序包括用户预设的程序标记,应用程序与程序标记一一对应;

计算模块,用于根据传输协议将应用程序传输至服务端,服务端根据程序标记将应用程序分配至对应的处理器进行编译,得到应用程序字节码,其中,服务端包括至少一个处理器;

生成模块,用于将应用程序字节码提交至执行平台中进行执行。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取待调度任务,以及与待调度任务对应的至少一种应用程序;其中,应用程序包括预设的程序标记,应用程序与程序标记一一对应;

根据程序标记从处理器中确定目标处理器,并将应用程序分配至目标处理器进行编译,得到应用程序字节码;

将应用程序字节码提交至执行平台中;其中,执行平台用于利用应用程序字节码执行待调度任务。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取待调度任务,以及与待调度任务对应的至少一种应用程序;其中,应用程序包括预设的程序标记,应用程序与程序标记一一对应;

根据程序标记从处理器中确定目标处理器,并将应用程序分配至目标处理器进行编译,得到应用程序字节码;

将应用程序字节码提交至执行平台中;其中,执行平台用于利用应用程序字节码执行待调度任务。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

获取待调度任务,以及与待调度任务对应的至少一种应用程序;其中,应用程序包括预设的程序标记,应用程序与程序标记一一对应;

根据程序标记从处理器中确定目标处理器,并将应用程序分配至目标处理器进行编译,得到应用程序字节码;

将应用程序字节码提交至执行平台中;其中,执行平台用于利用应用程序字节码执行待调度任务。

上述任务调度方法、装置、计算机设备和存储介质,通过根据预设的程序标记分配待调度任务,将该待调度任务分配至对应的编程环境中后得到应用程序字节码,将应用程序字节码提交至预设的执行平台中,完成了任务的调度。本申请融合了多种常用的编程场景并进行调度与管理,为用户提供了报表的自动计算、导出以及推送功能,解决了传统技术中在任务调度时需要部署多掏调度引擎从而造成的耗费资源且系统不够统一的问题,本申请不仅可以提高系统的兼容性也可以提高资源的利用率。

附图说明

图1为一个实施例中任务调度方法的流程示意图;

图2为一个优选实施例中任务调度方法的结构示意图;

图3为一个实施例中任务调度装置的结构框图;

图4为另一个实施例中任务调度计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种任务调度方法,以该方法应用于图1中的流程图为例进行说明,包括以下步骤:

步骤S110,获取待调度任务,以及与所述待调度任务对应的至少一种应用程序;其中,所述应用程序包括预设的程序标记,所述应用程序与所述程序标记一一对应。

具体地,待调度任务可以为多种应用程序或多种类型的数据资源,其中,该应用程序可以通过常见的编程语言进行编译得到,如通过SQL、Java、Scala、python或golang等编程语言编译得到。获取的应用程序还携带有预设的程序标记,该预设的程序标记可以由用户自主选择,该程序标记用于指示该应用程序所采用的编程语言类型;例如,可以由用户通过客户端显示的下拉选择框选择SQL、Java或Scala等选项,或者也可以由用户直接向客户端输入SQL等值,进而根据用户输入的信息解析生成对应的程序标记。

步骤S120,根据所述程序标记从所述处理器中确定目标处理器,并将所述应用程序分配至所述目标处理器进行编译,得到应用程序字节码。

具体地,本申请应用于服务端,服务端中包括多个处理器,该处理器有多种,包括但不限于常见的SQL、Java、Scala、python和golang等编程语言对应的处理器,服务端与客户端连接,服务端获取从客户端传入的待调度任务以及程序标记,根据该程序标记将程序标记对应的应用程序,从多个处理器中分配至对应的目标处理器,目标处理器对该应用程序进行编译,生成应用程序字节码。

步骤S130,将所述应用程序字节码提交至执行平台中;其中,所述执行平台用于利用所述应用程序字节码执行所述待调度任务。

具体的,服务端与执行平台相连,根据不同的服务类型和业务场景,将不同的应用程序字节码提交至对应的执行平台中完成执行。其中不同的服务类型包括但不限于Java服务。Python服务等,不同的业务场景包括但不限于安全服务人员执行python脚本、算法分析人员提交SQL指令操作数据库、程序开发者调用Java组件等。

通过上述步骤S110至步骤S130,首先获取应用程序以及与应用程序一一对应的程序标记,该应用程序属于待调度任务,根据该程序标记从服务端中的多个处理器中选择对应的目标处理器,该处理器有多种,包括但不限于SQL、Java、Scala、python和golang等程序,需要注意的是,这些处理器都部署在同一个服务端中,在根据程序标记选择好对应的目标处理器后,将对应的应用程序分配至该目标处理器中进行编译,得到应用程序字节码,服务端与执行平台相连,将应用程序字节码提交至执行平台中,执行平台完成该待调度任务,该执行平台中。在传统的相关技术中,需要不同的框架来负责不同种类的编程任务的传输以及执行,在不同编译环境下调度和执行不同种类的编程任务时需要部署多套调度引擎,存在耗费资源且系统框架过于复杂的问题。相比于现有技术,本申请融合了多种不同程序的语言环境,只需要部署一套该调度引擎,即可支持不同相关技术人员通过各自熟悉的语言编写不同的算法逻辑,可以对不同的业务场景提供统一的服务接口,将原本各自独立运行及分配集群资源的多个应用进行整合,共享集群的软硬件资源,提高了利用率,降低了运维成本,解决了传统技术中系统结构复杂且利用率低的问题。

在一个实施例中,上述执行平台包括:至少一种运行环境以及至少一种虚拟机。

具体地,该执行平台包括多种运行环境以及多种虚拟机,将应用程序字节码提交至对应的运行环境或虚拟机中运行。例如,当应用程序字节码为SQL时,将SQL应用程序字节码提交至对应的数据库系统进行执行;当应用程序字节码为Java时,将Java应用程序字节码提交至对应的Java虚拟机中进行执行;当应用程序字节码为golang时,提交至对应的golang运行环境中进行执行;当应用程序为python时,提交到对应的python运行环境中进行执行;当应用程序为Scala时,可以提交到对应的Java虚拟机中进行执行。由此可以看出,本申请中的执行平台可以融合多种运行环境以及虚拟机等,适用于实际应用场景时复杂的情况,并且一部分虚拟机或运行环境可以处理多种应用程序字节码,降低了了执行平台架构的复杂度,减少了相关人员的运维成本,提高了资源的利用率。

在一个实施例中,服务端连接客户端,上述任务调度方法还包括:

获取客户端发送的应用程序序列;其中,应用程序序列是由客户端根据预设的编码指令对应用程序进行编码处理得到的;根据编码指令对应用程序序列进行解码处理,得到应用程序。

具体地,本申请可以获取用户上传的应用程序序列,也可以由用户直接在客户端中集成的多种编译器中完成编写,从而得到上述应用程序,其中,该多种编译器包括但不限于Java编译器、python编译器、SQL编译器、golang编译器和Scala编译器等,多种编译器可以集成在同一客户端中。在客户端获取应用程序后传输至服务端中,其中,客户端与服务端之间的传输方式包括但不限于通过RPC协议(Remote Procedure Call Protocol,意为远程调用协议)完成传输,其中,RPC协议为一种远程过程调用协议,允许不同服务之间像调用本地服务一样调用远程服务。具体地,客户端首先对应用程序进行编码,得到应用程序序列,将应用程序序列传输至服务端,服务端接收后对该应用程序序列进行解码处理,得到上述应用程序。由此可以看出,相比于现有技术,本申请可以方便快捷地获取到多种类的应用程序,并且在传输时,多种类应用程序序列可以并行传输,很大程度上提升了工作效率。

在一个实施例中,上述方法还包括:

将应用程序分配至目标处理器,若检测到目标处理器运行正常,获取目标处理器生成的应用程序字节码;其中,应用程序字节码是由目标处理器根据预设的编译命令对应用程序进行编译得到的;

若检测到目标处理器运行报错,获取目标处理器生成的提醒信息,将提醒信息发送至预警端口并执行对应的提醒操作。

具体地,本申请中的应用程序的分配主要基于程序标记,该程序标记可以由用户提前选择,根据用户选择的程序标记将应用程序序列分配至服务端中对应的处理器中,若用户选择的程序标记错误,则在对应的目标处理器运行时会报错,目标处理器将对应于报错生成的提醒信息发送至预设的预警端口,提醒相应的技术人员进行处理。出于对实际应用时的情况的考虑,设计的预警步骤可以向相关技术人员进行提示,及时调整错误的部分,提高分配待调度资源时的效率。

在一个实施例中,服务端通过注册中心与客户端连接,上述方法还包括:

对所述处理器进行类型检测,得到处理器类型检测结果,并将所述处理器类型检测结果传输至注册中心中进行注册,其中,所述注册中心将所述检测结果传输至所述客户端中;

获取所述客户端发送的所述程序标记;其中,所述程序标记是由所述客户端根据所述处理器类型检测结果生成的。

具体地,服务端中包括服务注册模块,客户端中包括服务发现模块,该服务注册模块和服务发现模块在实际应用时可以与传输协议相对应,即当传输协议为RPC协议时,服务端中的服务注册模块为RPC服务注册模块,客户端中的服务发现模块为RPC服务发现模块。在服务端集成了多种处理器时,将多种处理器通过RPC服务器注册模块提交至注册中心提供访问,例如当服务端中包括Java处理器、python处理器、SQL处理器、golang处理器和Scala处理器等用于处不同类型语言环境的处理器时,RPC服务注册模块对服务端中集成的多种处理器进行类型识别检测,得到用于指示当前的处理器类型为Java处理器、python处理器或SQL处理器等处理器类型检测结果,以便于客户端向用户说明客户端可以输入处理的应用程序有哪些种类,注册中心与客户端相连,客户端通过RPC服务发现模块从注册中心中识别对应的服务,可以向用户显示该客户端和服务端的系统支持的编程环境的类别,其中,注册中心用于接收服务端的RPC服务注册模块上传的处理器类型检测结果,客户端中的RPC服务发现模块根据注册中心中的处理器类型检测结果得到服务端可支持的应用程序类型,从而向用户显示可以执行的待调度任务种类。

在一个实施例中,上述方法还包括:

获取所述客户端基于预设的线程池管理器并行传输的多个所述应用程序;

基于所述线程池管理器,根据所述程序标记将多个所述应用程序并行分配至所述目标处理器。

具体地,在传统技术中,不同的编程语言环境编写算法逻辑时,需要在不同的编译环境下分别执行,并且在提交和调度算法任务的过程中需要部署多套调度引擎。本申请中在服务端中集成了多种处理器,相对应的在客户端集成了多种编辑器。客户端可以基于线程池管理器的调度并行处理多种应用程序,并将上述应用程序对应的应用程序序列并行传输至服务端,服务端接收应用程序序列解码后还原为应用程序,并基于服务端中的线程池管理器将多种应用程序分配至对应的处理器,处理器完成编译后提交至执行中心,服务器中的编译和分配过程也是基于线程池管理器的调度来并行完成的。相比于传统技术中的不同编程语言分开独立执行,本申请融合了多种不同程序的语言环境,只需要部署一套该调度引擎,即可支持不同相关技术人员通过各自熟悉的语言编写不同的算法逻辑,可以对不同的业务场景提供统一的服务接口,将原本各自独立运行及分配集群资源的多个应用进行整合,共享集群的软硬件资源,提高了利用率,降低了运维成本,解决了传统技术中系统结构复杂且利用率低的问题。

本实施例还提供了一种任务调度方法的具体实施例,如图2所示,图2是一个优选实施例中任务调度方法的结构示意图。

首先,客户端通过注册中心与服务段相连,服务端集成了多种处理器,包括但不限于常见的SQL、Java、Scala、python和golang等,服务端通过服务端中包括的服务端注册模块对服务器中的多种处理器进行检测,得到检测结果,该检测结果对应于多个处理器的类型,将检测结果发送至注册中心中,客户端通过客户端中的服务发现模块与注册中心相连,通过服务发现模块从注册中心中识别对应的服务,以此来确定服务端可以处理的编程环境类型。

其次,客户端获取待调度任务,以及与待调度任务对应的多种应用程序,具体地,该应用程序可以由用户将预设的多种应用程序直接上传,也可以由用户用过客户端中集成的多种编辑器进行在线编辑获得,该编译器可以为Java编译器、python编译器、SQL编译器、golang编译器以及Scala编译器等。在获取到多种应用程序后,基于传输协议中的协议编码部分对应用程序进行编码,使应用程序实现序列化,形成应用程序序列,将应用程序序列传输至服务端,服务端将该应用程序序列进行解码,获得对应的应用程序,而后服务端根据程序标记将应用程序分配至对应的目标处理器,该程序标记与应用程序一一对应,程序标记由用户进行选择输入。若程序标记正确,则应用程序的分配正确,则获取目标处理器根据应用程序进行编译生成的应用程序字节码,将该应用程序字节码发送至执行中心中进行执行,若程序标记错误,则应用程序的分配错误,在处理器对应用程序进行编译时会检测出分配错误,则处理器生成提醒信息,将提醒信息发送至预设的预警端口中提醒相应的技术人员来负责处理。

最后,执行中心中包括但不限于多种运行环境以及多种虚拟机,执行中心负责完成执行对应的应用程序字节码,例如,当应用程序字节码为SQL时,将SQL应用程序字节码提交至对应的数据库系统进行执行;当应用程序字节码为Java时,将Java应用程序字节码提交至对应的Java虚拟机中进行执行;当应用程序字节码为golang时,提交至对应的golang运行环境中进行执行;当应用程序为python时,提交到对应的python运行环境中进行执行;当应用程序为Scala时,可以提交到对应的Java虚拟机中进行执行。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的任务调度方法的任务调度装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个任务调度装置实施例中的具体限定可以参见上文中对于任务调度方法的限定,在此不再赘述。

在一个实施例中,如图3所示,提供了一种任务调度装置,包括:获取模块31、计算模块32和生成模块33,其中:

获取模块31,用于获取用户上传的至少一种应用程序以及传输协议,其中,所述应用程序包括用户预设的程序标记,所述应用程序与所述程序标记一一对应;

计算模块32,用于根据所述传输协议将所述应用程序传输至服务端,所述服务端根据所述程序标记将所述应用程序分配至对应的处理器进行编译,得到应用程序字节码,其中,所述服务端包括至少一个所述处理器;

生成模块33,用于将所述应用程序字节码提交至执行平台中进行执行。

具体地,获取模块31与计算模块32相连,获取模块31获取用户上传的待调度任务,在实际情况中,该待调度任务对应着多种应用程序,该应用程序包括但不限于不同服务类型的应用程序和不同业务执行场景的应用程序,进一步地,每一个应用程序都包括程序标记,程序标记可以由用户进行输入。在获取到待调度任务后,获取模块31将待调度任务传输至计算模块32,计算模块32根据预设的传输协议将该待调度任务传输至服务端,该预设的传输协议可以为RPC协议,服务端获取待调度任务中的应用程序后,根据应用程序对应的程序标记将应用程序分配至对应的处理器,该处理器包括但不限于常见的SQL、Java、Scala、python和golang等,目标处理器获取应用程序后对应用程序进行编译,得到对应的应用程序字节码,将应用程序字节码传入生成模块33。生成模块33将该应用程序字节码提交至执行平台中完成执行,例如,当应用程序字节码为SQL时,将SQL应用程序字节码提交至对应的数据库系统进行执行;当应用程序字节码为Java时,将Java应用程序字节码提交至对应的Java虚拟机中进行执行;当应用程序字节码为golang时,提交至对应的golang运行环境中进行执行;当应用程序为python时,提交到对应的python运行环境中进行执行;当应用程序为Scala时,可以提交到对应的Java虚拟机中进行执行。本申请集成了多种服务类型和多种业务执行场景的编辑器、处理器和执行环境,相比于传统技术,本申请只需要布置一套该任务调度装置,并且内部资源共享,不需要分开存储和提前分割,在传输、编译资源时还可以并行进行,大大增加了工作效率,可以通过一个装置并且只使用一份服务器资源满足不同编程场景的需求,充分利用了服务器资源,搭建更加轻量的服务框架,降低运维成本,提高了数据转化的效率。

上述任务调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种任务调度方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 一种任务调度方法、装置、设备和存储介质
  • 一种任务调度方法、装置、电子设备及存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 存储设备的数据删除方法、装置及计算机可读存储介质
  • 一种任务调度方法、任务调度设备和计算机可读存储介质
  • 一种任务调度方法、任务调度设备和计算机可读存储介质
技术分类

06120116331577