首页 / 专利库 / 电脑编程 / 执行环境 / 一种调度任务执行方法、装置、电子设备及存储介质

一种调度任务执行方法、装置、电子设备及存储介质

阅读:941发布:2020-05-08

专利汇可以提供一种调度任务执行方法、装置、电子设备及存储介质专利检索,专利查询,专利分析的服务。并且本 申请 提供一种调度任务执行方法、装置、 电子 设备及存储介质,该调度任务执行方法包括:获得至少一个调度任务;使用多个容器实例执行至少一个调度任务,多个容器实例中的每个容器实例执行不多于一个调度任务,容器实例是对应的调度任务的隔离 执行环境 的实例。在上述的实现过程中,通过 服务器 执行的多个容器实例来分别执行多个调度任务,其中,多个调度任务之间不相互影响,即调度任务在容器实例中执行时支持隔离,改善了多个任务在执行时难以避免多个调度任务之间的相互影响的问题。,下面是一种调度任务执行方法、装置、电子设备及存储介质专利的具体信息内容。

1.一种调度任务执行方法,其特征在于,包括:
获得至少一个调度任务;
使用多个容器实例执行所述至少一个调度任务,所述多个容器实例中的每个容器实例执行不多于一个调度任务。
2.根据权利要求1所述的方法,其特征在于,在所述使用多个容器实例执行所述至少一个调度任务之后,还包括:
获得所述至少一个调度任务中的每个调度任务对应的执行结果。
3.根据权利要求2所述的方法,其特征在于,所述获得至少一个调度任务,包括:
接收调度服务器发送的所述至少一个调度任务;
在所述获得所述至少一个调度任务中的每个调度任务对应的执行结果之后,还包括:
将所述至少一个调度任务中的每个调度任务对应的执行结果发送给所述调度服务器。
4.根据权利要求2所述的方法,其特征在于,在所述获得所述至少一个调度任务中的每个调度任务对应的执行结果之后,还包括:
向搜索服务器发送所述执行结果。
5.根据权利要求1所述的方法,其特征在于,所述使用多个容器实例执行所述至少一个调度任务,包括:
使用所述容器实例获取所述调度任务所需的任务资源;
根据所述任务资源在所述容器实例中执行所述调度任务。
6.根据权利要求5所述的方法,其特征在于,所述根据所述任务资源在所述容器实例中执行所述调度任务,包括:
将所述任务资源加载至所述容器实例的文件系统中;
通过所述容器实例从所述文件系统中获取所述任务资源,并执行所述调度任务。
7.根据权利要求1-6任一所述的方法,其特征在于,还包括:
获得所述至少一个调度任务被执行时的执行日志;
向日志服务器发送所述执行日志。
8.一种调度任务执行装置,其特征在于,包括:
任务获得模,用于获得至少一个调度任务;
任务执行模块,用于使用多个容器实例执行所述至少一个调度任务,所述多个容器实例中的每个容器实例执行不多于一个调度任务。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器执行时执行如权利要求1至7任一所述的方法。

说明书全文

一种调度任务执行方法、装置、电子设备及存储介质

技术领域

[0001] 本申请涉及计算机和任务调度的技术领域,具体而言,涉及一种调度任务执行方法、装置、电子设备及存储介质。

背景技术

[0002] 调度任务,是指根据触发条件触发调度系统执行的任务,这里的触发条件例如:事件驱动、消息驱动和时钟驱动等;事件驱动可以是外部通知的事件,例如是外部的硬件插入或移除触发执行调度任务等,消息驱动可以是内部软件或者应用程序接口的消息触发执行调度任务,时钟驱动可以是操作系统的内部时钟触发执行调度任务,也可以是应用程序接收外部的时钟触发执行调度任务等等。
[0003] 目前调度任务的执行是按照调度任务的触发先后和调度任务的优先级在一个电子设备上执行的,一个电子设备上每执行一个调度任务便需要一个新建用户来执行相应的调度任务,具体例如:一个调度任务需要使用执行用户A来执行,那么该调度任务便拥有用户A的权限,但该电子设备上只有用户B和用户C,这就需要创建一个用户A来执行该调度任务。
[0004] 在具体的实践过程中发现,当电子设备上执行多个调度任务时,多个用户对应的多个调度任务之间会相互影响,具体例如:用户A对应的调度任务修改了用户B对应的调度任务所创建的文件,或者用户A占用了用户C对应的调度任务所使用的服务程序资源等,也就是说,多个任务在执行时难以避免多个调度任务之间的相互影响的。发明内容
[0005] 本申请实施例的目的在于提供一种调度任务执行方法、装置、电子设备及存储介质,用于改善多个任务在执行时难以避免多个调度任务之间的相互影响的问题。
[0006] 本申请实施例提供了一种调度任务执行方法,包括:获得至少一个调度任务;使用多个容器实例执行所述至少一个调度任务,所述多个容器实例中的每个容器实例执行不多于一个调度任务。在上述的实现过程中,通过服务器执行的多个容器实例来分别执行多个调度任务,其中,多个调度任务之间不相互影响,即调度任务在容器实例中执行时支持隔离,改善了多个任务在执行时难以避免多个调度任务之间的相互影响的问题。
[0007] 可选地,在本申请实施例中,在所述使用多个容器实例执行所述至少一个调度任务之后,还包括:获得所述至少一个调度任务中的每个调度任务对应的执行结果。在上述的实现过程中,通过服务器执行的多个容器实例来分别执行多个调度任务,获得执行结果,由于执行的多个调度任务之间不能相互影响,因此增加获得正确执行结果的概率。
[0008] 可选地,在本申请实施例中,所述获得至少一个调度任务,包括:接收调度服务器发送的所述至少一个调度任务;在所述获得所述至少一个调度任务中的每个调度任务对应的执行结果之后,还包括:将所述至少一个调度任务中的每个调度任务对应的执行结果发送给所述调度服务器。在上述的实现过程中,通过调度服务器分配调度任务,并使用调度服务器收集该调度任务执行的执行结果,提高了调度任务的执行效率。
[0009] 可选地,在本申请实施例中,在所述获得所述至少一个调度任务中的每个调度任务对应的执行结果之后,还包括:向搜索服务器发送所述执行结果。在上述的实现过程中,通过电子设备向搜索服务器发送执行结果,以使用户可以通过搜索服务器查询执行结果,使得执行结果的查询任务分担给搜索服务器,减轻了执行该方法的电子设备的计算压
[0010] 可选地,在本申请实施例中,所述使用多个容器实例执行所述至少一个调度任务,包括:使用所述容器实例获取所述调度任务所需的任务资源;根据所述任务资源在所述容器实例中执行所述调度任务。在上述的实现过程中,通过使用容器实例获取任务资源,并根据任务资源来执行调度任务,从而提高了任务资源在调度任务执行时的分享效率。
[0011] 可选地,在本申请实施例中,所述根据所述任务资源在所述容器实例中执行所述调度任务,包括:将所述任务资源加载至所述容器实例的文件系统中;通过所述容器实例从所述文件系统中获取所述任务资源,并执行所述调度任务。在上述的实现过程中,通过使用容器实例获取任务资源,将任务资源加载至容器实例的文件系统中,并根据文件系统中的任务资源来执行调度任务,从而提高了任务资源在调度任务执行时的分享效率。
[0012] 可选地,在本申请实施例中,还包括:获得所述至少一个调度任务被执行时的执行日志;向日志服务器发送所述执行日志。在上述的实现过程中,通过电子设备向日志服务器发送执行日志,以使用户可以通过日志服务器查询执行日志,使得执行日志的查询任务分担给日志服务器,减轻了执行该方法的电子设备的计算压力。
[0013] 本申请实施例还提供了一种调度任务执行装置,包括:任务获得模块,用于获得至少一个调度任务;任务执行模块,用于使用多个容器实例执行所述至少一个调度任务,所述多个容器实例中的每个容器实例执行不多于一个调度任务。在上述的实现过程中,通过服务器执行的多个容器实例来分别执行多个调度任务,其中,多个调度任务之间不相互影响,即调度任务在容器实例中执行时支持隔离,改善了多个任务在执行时难以避免多个调度任务之间的相互影响的问题。
[0014] 可选地,在本申请实施例中,还包括:结果获得模块,用于获得所述至少一个调度任务中的每个调度任务对应的执行结果。
[0015] 可选地,在本申请实施例中,所述任务获得模块,包括:第一接收模块,用于接收调度服务器发送的所述至少一个调度任务;所述调度任务执行装置,还包括:第一发送模块,用于将所述至少一个调度任务中的每个调度任务对应的执行结果发送给所述调度服务器。
[0016] 可选地,在本申请实施例中,还包括:第二发送模块,用于向搜索服务器发送所述执行结果。
[0017] 可选地,在本申请实施例中,所述任务执行模块,包括:资源获取模块,用于使用所述容器实例获取所述调度任务所需的任务资源;第一执行模块,用于根据所述任务资源在所述容器实例中执行所述调度任务。
[0018] 可选地,在本申请实施例中,所述第一执行模块,包括:资源加载模块,用于将所述任务资源加载至所述容器实例的文件系统中;第二执行模块,用于通过所述容器实例从所述文件系统中获取所述任务资源,并执行所述调度任务。
[0019] 可选地,在本申请实施例中,还包括:日志获得模块,用于获得所述至少一个调度任务被执行时的执行日志;日志发送模块,用于向日志服务器发送所述执行日志。
[0020] 本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如上所述的方法。
[0021] 本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器执行时执行如上所述的方法。附图说明
[0022] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0023] 图1示出的本申请实施例提供的电子设备上执行的调度任务执行方法的流程示意图;
[0024] 图2示出的本申请实施例提供的电子设备上执行调度任务方法的流程示意图;
[0025] 图3示出的本申请实施例提供的调度任务执行装置结构示意图;
[0026] 图4示出的本申请实施例提供的电子设备的结构示意图。

具体实施方式

[0027] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
[0028] 在介绍本申请实施例提供的调度任务执行方法之前,先介绍本申请实施例所涉及的一些概念,本申请实施例所涉及的一些概念如下:
[0029] 容器,是指对电子设备进行虚拟化,为进程任务提供隔离执行环境或者隔离运行环境;容器引擎是指为了获得容器实例所依赖的组件或者可执行程序;这里的容器引擎例如:Docker;这里的Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,运行的任务或者应用之间相互隔离,这里的Docker可以提供独立的进程空间、命名域空间、用户空间、网络空间等。
[0030] 用户隔离,是指当电子设备上执行多个调度任务时,避免多个用户对应的多个调度任务之间会相互影响的情况,具体例如:用户A对应的调度任务修改了用户B对应的调度任务所创建的文件,或者用户A占用了用户C对应的调度任务所使用的服务程序资源等;若做到真正的用户隔离,那么用户A就无法修改用户B对应的调度任务所创建的文件,用户A就无法占用用户C对应的调度任务所使用的服务程序资源。
[0031] 数据库(DataBase,DB),是指存储电子数据或者电子文件的集合,简而言之可视为电子化的文件柜,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库包括:内存数据库、关系型数据库和非关系型数据库:
[0032] 内存数据库是指基于随机存储记忆体(Random Access Memory,RAM)查找的数据集合,特点为读写速度快,因此也被称为缓存数据库,常见的内存数据库例如:Memcached和Redis等。
[0033] 关系型数据库是指采用关系模型来组织数据的数据库,关系型数据库以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,常见的关系型数据库例如:Mysql、PostgreSQL、Oracle和SQLSever等。
[0034] 非关系型数据库,又被称为NoSQL(Not Only SQL),意为不仅仅是结构化查询语言(Structured QueryLanguage,SQL),非关系型数据库根据结构化方法以及应用场合的不同,主要分为:面向列式存储、面向文档存储和键值对存储的三种非关系型数据库,常见的非关系型数据库包括:Neo4j图数据库、Hadoop子系统HBase、MongoDB和CouchDB等。
[0035] 服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。当然在具体的实施过程中,上述的服务器可以具体选择大型机或者小型机,这里的小型机是指采用精简指令集计算(Reduced Instruction  Set Computing,RISC)、单字长定点指令平均执行速度(Million Instructions Per Second,MIPS)等专用处理器,主要支持UNIX操作系统的封闭且专用的提供计算服务的设备;这里的大型机,又名大型主机,是指使用专用的处理器指令集、操作系统和应用软件来提供计算服务的设备。
[0036] 需要说明的是,本申请实施例提供的调度任务执行方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者上述的服务器,设备终端例如:智能手机、个人电脑(personal computer,PC)、平板电脑个人数字助理(personal digital assistant,PDA)、移动上网设备(mobile Internet device,MID)、网络交换机或网络路由器等。
[0037] 在介绍本申请实施例提供的调度任务执行方法之前,先介绍该调度任务执行方法适用的应用场景,这里的应用场景包括但不限于:使用该调度任务执行方法来实现用户隔离、资源隔离和搭建多运行时环境等。这里的资源隔离是指任务运行在执行机器,与该机器上的其它程序共享运行环境,具体例如:若资源无法隔离,那么理论上可以终止(kill)其它人的任务或者进程,或者删除其它人的文件。这里的资源隔离,是指一个任务运行时,并未限制任务执行时所占用的最大资源,具体例如:限制某一任务执行时只能使用1GB内存。这里的多运行时环境例如:一个Python任务,使用的版本为Python3.7,而另一个任务使用Python2.7,甚至精确到必须为Python2.7.5版本才能够运行,那么在同一台机器很难处理多种依赖环境的关系。
[0038] 请参见图1示出的本申请实施例提供的电子设备上执行的调度任务执行方法的流程示意图;该调度任务执行方法可以应用于上述的电子设备,该调度任务执行方法可以包括如下步骤:
[0039] 步骤S110:电子设备获得至少一个调度任务。
[0040] 上述的电子设备获得至少一个调度任务的实施方式例如:电子设备接收其它设备发送的至少一个调度任务,这里的其它设备可以是调度任务分发的硬件设备,也可以是调度任务分发的服务软件等。获得至少一个调度任务的实施方式又例如:从文件系统、数据库或存储介质中获取预先存储的调度任务等,这里的数据库例如:Mysql、Oracle和SQLSever等。
[0041] 步骤S120:电子设备使用多个容器实例执行至少一个调度任务,多个容器实例中的每个容器实例执行不多于一个调度任务。
[0042] 容器实例,是指使用容器引擎实时运行的隔离执行环境或者隔离运行环境的应用,这里的容器引擎例如:Docker等。在使用容器实例之前,需要使用容器引擎启动实例化一个容器实例,具体例如:使用Docker根据ubuntu操作系统的镜像启动实例化一个容器实例的命令例如:docker run-it ubuntu/bin/bash。
[0043] 这里的多个容器实例中的每个容器实例执行不多于一个调度任务包括以下两种情况:
[0044] 第一种情况,容器实例的数量和调度任务的数量相等,那么电子设备可以通过一个容器实例执行一个调度任务,例如:有2个容器和2个调度任务,其中,2个容器包括:第一容器和第二容器,2个调度任务包括:第一任务和第二任务,那么可以使用第一容器执行第一任务,使用第二容器执行第二任务;可以理解地是,也可以使用第一容器执行第二任务,使用第二容器执行第一任务。
[0045] 第二种情况,容器实例的数量大于调度任务的数量,那么电子设备可以通过容器实例执行不多于一个调度任务,例如:有3个容器和2个调度任务,其中,3个容器包括:第一容器、第二容器和第三容器,2个调度任务包括:第一任务和第二任务,那么可以使用第一容器执行第一任务,使用第二容器执行第二任务,第三容器空闲备用,若第一容器或者第二容器执行任务失败时,使用第三容器来执行失败时对应的任务;可以理解地是,根据排序组合原理,上述的情况也可以使用第一容器执行第二任务,使用第二容器执行第一任务等共六种情况。
[0046] 其中,使用多个容器实例执行至少一个调度任务的实施方式可以包括如下步骤:
[0047] 步骤S121:电子设备使用容器实例获取调度任务所需的任务资源。
[0048] 任务资源,是指在执行调度任务时所需要的资源,具体例如:在执行加法的任务,三加二等于五,若三和二这两个参数就是任务资源,这两个参数可以预先存放在内存中,或以文件形式存放在硬盘,或存放在可移动存储介质中等。
[0049] 电子设备使用容器实例获取调度任务所需的任务资源的实施方式例如:任务资源为一个真实文件,真实文件所在的路径被称为文件路径,真实文件所在目录的路径被称为文件夹路径,那么将电子设备的文件系统中的文件路径或文件夹路径挂载在容器实例的文件系统中的预设路径,以使容器实例可以通过该容器实例的文件系统中的预设路径获取任务资源,这里的文件系统中的预设路径可以称之为挂载点,使容器实例可以通过挂载点访问任务资源;这里的预设路径可以根据实际情况进行设置,具体例如:若电子设备的操作系统为linux系统,任务资源的路径为/home/tmp1,那么可以将路径/home/tmp1挂载至容器实例的文件系统/tmp或者/media中。
[0050] 步骤S122:电子设备根据任务资源在容器实例中执行调度任务。
[0051] 电子设备根据任务资源在容器实例中执行调度任务的实施方式例如:将任务资源加载至容器实例的文件系统中;通过容器实例从文件系统中获取任务资源,并执行调度任务;具体例如:任务资源的文件名称为source.txt,任务资源的路径为/home/tmp1,将路径/home/tmp1挂载至容器实例的文件系统/tmp,那么通过调度任务在容器实例中访问/tmp/source.txt,即可获得任务资源。若调度任务为求source.txt文件中的所有数字之和的任务,即调度任务为执行加法任务;通过调度任务在容器实例中访问/tmp/source.txt,获得任务资源为三和二,那么执行该调度任务:三加二等于五,这里的五就是加法任务的执行结果。在上述的实现过程中,通过使用容器实例获取任务资源,将任务资源加载至容器实例的文件系统中,并根据文件系统中的任务资源来执行调度任务,从而提高了任务资源在调度任务执行时的分享效率。
[0052] 在上述的实现过程中,通过服务器执行的多个容器实例来分别执行多个调度任务,其中,多个调度任务之间不相互影响,即调度任务在容器实例中执行时支持隔离,改善了多个任务在执行时难以避免多个调度任务之间的相互影响的问题。
[0053] 可选地,在使用多个容器实例执行至少一个调度任务之后,还可以获得执行的结果,那么在步骤S120之后,该调度任务执行方法还可以包括如下步骤:
[0054] 步骤S130:电子设备获得至少一个调度任务中的每个调度任务对应的执行结果。
[0055] 执行结果,是指执行调度任务后,获得的执行该任务的结果,具体例如:三加二为调度任务,执行三加二的调度任务获得五,这里的五就是加法任务的执行结果。
[0056] 电子设备获得至少一个调度任务中的每个调度任务对应的执行结果的实施方式例如:执行两个加法任务;其中,两个加法任务包括:第一加法任务和第二加法任务,执行第一加法任务获得的结果为五,执行第二加法任务获得的结果为六;那么获得第一加法任务和第二加法任务的执行结果分别为五和六。在上述的实现过程中,通过服务器执行的多个容器实例来分别执行多个调度任务,获得执行结果,由于执行的多个调度任务之间不能相互影响,因此增加获得正确执行结果的概率。
[0057] 可选地,在本申请实施例中,在获得至少一个调度任务中的每个调度任务对应的执行结果之后,还可以将执行结果发送给搜索服务器,让搜索服务器提供执行结构的搜索服务,即在步骤S130之后,该调度任务执行方法还可以包括如下步骤:
[0058] 步骤S140:电子设备向搜索服务器发送执行结果。
[0059] 搜索服务器,是指提供搜索服务的服务器,这里的搜索服务器可以是上述的电子设备中的搜索应用程序,搜索服务器也可以是不同与上述的电子设备的服务器设备。这里的搜索服务器使用的搜索应用程序包括但不限于ElasticSearch,这里的ElasticSearch是指分布式、高扩展、高实时的搜索与数据分析引擎,也是一个分布式多用户能力的全文搜索引擎,ElasticSearch能很方便的使大量数据具有搜索、分析和探索的能力,充分利用ElasticSearch的平伸缩性,能使数据在生产环境变得更有价值。
[0060] 电子设备向搜索服务器发送执行结果的实施方式例如:若搜索服务器是上述的电子设备中的搜索应用程序ElasticSearch,电子设备可以通过调用ElasticSearch存储接口来存储执行结果,也可以直接执行程序将执行结果存储至ElasticSearch的数据库中。若搜索服务器也可以是不同与上述的电子设备的服务器设备,那么电子设备可以主动地向搜索服务器推送执行结果,即不需要搜索服务器发送数据请求,电子设备可以定时地向搜索服务器发送执行结果;当然,也可以是搜索服务器先向电子设备发送数据请求,然后电子设备再向搜索服务器发送执行结果。
[0061] 在上述的实现过程中,通过电子设备向搜索服务器发送执行结果,以使用户可以通过搜索服务器查询执行结果,使得执行结果的查询任务分担给搜索服务器,减轻了执行该方法的电子设备的计算压力。
[0062] 可选地,在本申请实施例中,还可以获得调度任务在被执行时的执行日志,对执行日志处理的过程可以包括如下步骤:
[0063] 步骤S150:电子设备获得至少一个调度任务被执行时的执行日志。
[0064] 执行日志,是指调度任务被执行时的在文件系统或者数据库中记录的日志,执行日志具体例如:docker运行日志和调度执行的任务日志等。执行日志的获得方式例如:使用fluentd或Syslog等方式将电子设备和/或容器实例产生的日志汇总。
[0065] 电子设备获得至少一个调度任务被执行时的执行日志的实施方式例如:调度任务在被执行时,容器实例将日志存储至/tmp/log.txt中,由于电子设备的文件系统中的路径/home/tmp1已经挂载至容器实例的文件系统/tmp,那么电子设备访问/home/tmp1/log.txt,即可获得该执行日志。
[0066] 步骤S160:电子设备向日志服务器发送执行日志。
[0067] 日志服务器,是指提供日志服务的服务器,这里的日志服务器可以是上述的电子设备中的日志应用程序,日志服务器也可以是不同与上述的电子设备的服务器设备,这里的日志应用程序例如:logstash、fluentd和LoggerServer等;这里的LoggerServer主要是负责获取任务执行时的日志信息。
[0068] 上述的电子设备向日志服务器发送执行日志的实施方式与步骤S140的实施原理和实施方式是相似或类似的,区别仅在于这里是电子设备向日志服务器发送执行日志,而步骤S140中是电子设备向搜索服务器发送执行结果,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S140的描述。
[0069] 当然,在具体的实施过程中,日志服务器也可以主动收集电子设备上的日志,具体例如:使用日志服务器负责docker运行日志、Master日志、Worker日志、LoggerServer日志、调度执行的任务日志等的收集,并将收集获得的日志存储在ElasticSearch中,以便用户查看并搜索这些日志信息。
[0070] 在上述的实现过程中,通过电子设备向日志服务器发送执行日志,以使用户可以通过日志服务器查询执行日志,使得执行日志的查询任务分担给日志服务器,减轻了执行该方法的电子设备的计算压力。
[0071] 请参见图2示出的本申请实施例提供的电子设备上执行调度任务方法的流程示意图;可选地,上述的调度任务还可以由调度服务器来分配调度,那么该调度任务可以包括如下步骤:
[0072] 步骤S210:调度服务器向电子设备发送至少一个调度任务。
[0073] 调度服务器,是指分发调度任务的服务器,在具体的实施过程中,可以使用容器调度系统来分发调度任务,这里的容器调度系统具体例如:Swarm、EasyScheduler和Kubernetes等。这里的Swarm是Docker产品的官方公司推出的容器集群平台,用于容器编排,具体例如:动态的缩容或扩容、容器化应用的管理等等。这里的EasyScheduler可以支持结构化查询语言(Structured Query Language,SQL),这里的结构化查询语言包括:SparkSQL、Mysql、PostgreSQL等定时调度。这里的Kubernetes是一个开源的,且用于管理平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。
[0074] 调度服务器向电子设备发送至少一个调度任务的实施方式例如:调度服务器使用超文本传输协议(Hyper Text Transfer Protocol,HTTP)发送至少一个调度任务,这里的超文本传输协议是一个简单的请求响应协议,HTTP协议通常运行在传输控制协议(Transmission Control Protocol,TCP)之上,HTTP协议指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
[0075] 步骤S220:电子设备接收调度服务器发送的至少一个调度任务。
[0076] 可以理解的是,在具体的实施过程中,还可以使用多个上述的调度服务器,多个调度服务器共同或者由其中一个提供调度任务的分发服务,若多个调度服务器中的一个调度服务器提供调度任务的分发服务,那么可以将多个调度服务器中剩下的调度服务器作为备用分发服务的服务器。为实现上述备份分发服务的服务器,在实践中具体可以使用服务发现应用,这里的服务发现应用可以存储注册、存储和感知服务信息,可以用于服务发现,服务发现可以理解为动态地感知服务是否上线或者可用,或者动态地感知服务是否下线或者不可以使用等,并提供分布式协同服务和分布式,这里的服务发现应用具体例如:Zookeeper、Etcd和Consul等。
[0077] 上述的Zookeeper可以存储注册、存储和感知服务信息,Zookeeper包括上述的服务发现功能,具体例如:若将上述执行调度任务的电子设备标识为worker;将上述提供调度任务的分发服务的调度服务器标识为Master,那么可有多个Master可以提供调度任务的分发服务,但是可以使用Zookeeper让其中一个Master不提供调度任务的分发服务,多个Master中的其它Master提供调度任务的分发服务,这些不提供调度任务的分发服务的其它Master可以被标识为Slave;这里的Master主要负责任务分发并监督Slave的健康状态,可以动态地将任务均衡到Slave上,以致Slave节点不至于“忙死”或“闲死”的状态;这里的Worker主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Worker。
[0078] 当然,在具体的实践中,调度服务器也可以使用Quartz来提供调度任务的分发服务,这里的Quartz是一个完全由java语言编写的开源作业调度框架,具体例如:调度服务器使用Quartz定时地向电子设备发送至少一个调度任务。
[0079] 电子设备接收调度服务器发送的至少一个调度任务的实施方式例如:调度服务器上使用Kubernetes的容器调度系统,调度服务器向电子设备发送至少一个调度任务,电子设备通过浏览器/服务器(Browser/Server,B/S)方式接收调度服务器发送的至少一个调度任务。当然,在具体的实施过程中,电子设备和调度服务器之间的通信除了使用浏览器/服务器方式,也可以采用异步的方式进行通信,具体方式例如:服务器使用前后端分离架构情况,具体地,前端使用控制层和视图层分离的框架,这些框架例如:Knockout、Angular、React或Vue;后端使用控制层和数据访问层分离的框架,这些框架例如:RESTful接口等等。
[0080] 步骤S230:电子设备使用多个容器实例执行至少一个调度任务。
[0081] 其中,多个容器实例中的每个容器实例执行不多于一个调度任务,容器实例是对应的调度任务的隔离执行环境的实例,该步骤的实施原理和实施方式与步骤S120的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S120的描述。
[0082] 步骤S240:电子设备获得至少一个调度任务中的每个调度任务对应的执行结果。
[0083] 其中,该步骤的实施原理和实施方式与步骤S130的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S130的描述。
[0084] 步骤S250:电子设备将至少一个调度任务中的每个调度任务对应的执行结果发送给调度服务器。
[0085] 将至少一个调度任务中的每个调度任务对应的执行结果发送给调度服务器的实时方式例如:将至少一个调度任务中的每个调度任务对应的执行结果实时性地发送给调度服务器,具体地,电子设备可以采用ASP.NET Signal方法与调度服务器进行交互,Signal支持推送功能。
[0086] 步骤S260:调度服务器接收电子设备发送的至少一个调度任务中的每个调度任务对应的执行结果。
[0087] 其中,该步骤的实施原理和实施方式与步骤S210的实施原理和实施方式是相似或类似的,区别仅在于,步骤S210是调度服务器向电子设备发送调度任务,而步骤S260调度服务器接收电子设备发送的调度任务的执行结果,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S210的描述。
[0088] 在上述的实现过程中,通过调度服务器分配调度任务,并使用调度服务器收集该调度任务执行的执行结果,提高了调度任务的执行效率。
[0089] 请参见图3示出的本申请实施例提供的调度任务执行装置结构示意图;本申请实施例提供了一种调度任务执行装置300,包括:
[0090] 任务获得模块310,用于获得至少一个调度任务。
[0091] 任务执行模块320,用于使用多个容器实例执行至少一个调度任务,多个容器实例中的每个容器实例执行不多于一个调度任务。
[0092] 可选地,在本申请实施例中,还可以包括:
[0093] 结果获得模块,用于获得至少一个调度任务中的每个调度任务对应的执行结果。
[0094] 可选地,在本申请实施例中,任务获得模块,包括:
[0095] 第一接收模块,用于接收调度服务器发送的至少一个调度任务。
[0096] 调度任务执行装置,还包括:
[0097] 第一发送模块,用于将至少一个调度任务中的每个调度任务对应的执行结果发送给调度服务器。
[0098] 可选地,在本申请实施例中,该装置还包括:
[0099] 第二发送模块,用于向搜索服务器发送执行结果。
[0100] 可选地,在本申请实施例中,任务执行模块,包括:
[0101] 资源获取模块,用于使用容器实例获取调度任务所需的任务资源。
[0102] 第一执行模块,用于根据任务资源在容器实例中执行调度任务。
[0103] 可选地,在本申请实施例中,第一执行模块,包括:
[0104] 资源加载模块,用于将任务资源加载至容器实例的文件系统中。
[0105] 第二执行模块,用于通过容器实例从文件系统中获取任务资源,并执行调度任务。
[0106] 可选地,在本申请实施例中,该装置还可以包括:
[0107] 日志获得模块,用于获得至少一个调度任务被执行时的执行日志。
[0108] 日志发送模块,用于向日志服务器发送执行日志。
[0109] 应理解的是,该装置与上述的调度任务执行方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
[0110] 请参见图4示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备400,包括:处理器410和存储器420,存储器420存储有处理器410可执行的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
[0111] 本申请实施例还提供了一种存储介质430,该存储介质430上存储有计算机程序,该计算机程序被处理器410运行时执行如上的调度任务执行方法。
[0112] 其中,存储介质430可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
[0113] 本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0114] 另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0115] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0116] 以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈