CN112596885A - 任务调度方法、装置、设备及存储介质 - Google Patents
任务调度方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112596885A CN112596885A CN202011572510.8A CN202011572510A CN112596885A CN 112596885 A CN112596885 A CN 112596885A CN 202011572510 A CN202011572510 A CN 202011572510A CN 112596885 A CN112596885 A CN 112596885A
- Authority
- CN
- China
- Prior art keywords
- task
- executed
- configuration information
- preset
- identifier
- 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
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种任务调度方法、装置、设备及存储介质,涉及任务调度技术领域。该方法包括:若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器;向所述目标执行器发送任务调度请求,所述任务调度请求用于指示所示所述目标执行器从所述消息队列中获取所述待执行任务的任务标识,并根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,根据所述任务配置信息执行所述待执行任务。相对于现有技术,避免了文件系统稳定性不够好,无法做到每台机器信息实时同步的问题。
Description
技术领域
本申请涉及任务调度技术领域,具体而言,涉及一种任务调度方法、装置、设备及存储介质。
背景技术
在大数据系统中,每天都有很多数据处理任务在运行,调度系统可以将任务管理并调度起来,极大地提高大数据系统的效率,Airflow是目前使用最广泛的一种任务调度系统。主要包含了Scheduler(调度器)、Worker(执行器)、WebServer(Web服务),用户通过编写Python文件来配置任务信息,调度器会将任务文件进行解析并通知执行器执行任务。
目前的调度任务部署是通过人工编写Python文件并存放于Airflow安装部署的机器上,Airflow的调度器会定时去解析任务文件,通过Redis等消息队列将任务发送给执行器,执行器从队列中拉取要执行的任务,然后解析对应的任务文件执行任务。
但是这样的部署方式由于配置信息和任务信息都存储在磁盘上,文件系统稳定性不够好,无法做到每台机器信息实时同步,在实际使用过程中容易出现问题。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种任务调度方法、装置、设备及存储介质,以解决现有技术中文件系统稳定性不够好,无法做到每台机器信息实时同步的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请一实施例提供了一种任务调度方法,应用于分布式系统中的调度器,所述分布式系统还包括:多个执行器,所述方法包括:
若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器;
向所述目标执行器发送任务调度请求,所述任务调度请求用于指示所示所述目标执行器从所述消息队列中获取所述待执行任务的任务标识,并根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,根据所述任务配置信息执行所述待执行任务。
可选地,所述若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器之前,所述方法还包括:
解析所述预设数据库中的任务表,得到至少一个待执行任务的消息,其中,所述待执行任务的消息包括:所述待执行任务的任务标识;
将所述待执行任务的任务标识写入所述消息队列中。
可选地,所述解析所述预设数据库中的任务表,得到至少一个待执行任务的消息包括:
根据预设时间间隔解析所述任务表。
可选地,所述待执行任务的消息还包括:所述每个任务的预设运行时间;所述将所述待执行任务的任务标识写入所述消息队列中,包括:
根据所述待执行任务的运行时间,从所述至少一个待执行任务中确定目标任务,并将所述目标任务的任务标识写入所述消息队列中。
可选地,所述分布式系统还包括:网页服务器,所述方法还包括:所述每个任务的消息为所述网页服务器对前端通过预设接口发送的预设格式的数据进行解析并写入到所述预设数据库中的任务信息。
可选地,所述每个任务的消息还包括:所述每个任务的任务配置信息,所述每个任务的任务配置信息为所述前端基于用户的任务配置操作所输入的信息。
可选地,所述任务配置操作包括:增加、删除,或,修改中任一或多种配置操作。
可选地,所述网页服务器和/或所述调度器分别封装成镜像,并分别部署在一个物理机上的不同容器中。
可选地,每个执行器部署在一个物理机或者一个物理机上的容器内。
第二方面,本申请另一实施例提供了一种任务调度方法,应用于分布式系统中多个执行器中的任一执行器,所述分布式系统还包括:调度器,所述方法包括:
若接收到来自所述调度器的任务调度请求,则从预设的消息队列中获取待执行任务的任务标识;
根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息;
根据所述任务配置信息,执行所述待执行任务。
可选地,所述根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,包括:
根据所述任务标识,从所述数据库中的任务表中获取所述待执行任务的任务配置信息,所述任务表包括:至少一个任务的消息,每个任务的消息包括:所述每个任务的任务标识,以及所述每个任务的任务配置信息。
第三方面,本申请另一实施例提供了一种任务调度装置,应用于分布式系统中的调度器,所述分布式系统还包括:多个执行器,所述装置包括:选择模块和执行模块,其中:
所述选择模块,用于若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器;
所述执行模块,用于向所述目标执行器发送任务调度请求,所述任务调度请求用于指示所示所述目标执行器从所述消息队列中获取所述待执行任务的任务标识,并根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,根据所述任务配置信息执行所述待执行任务。
可选地,所述装置还包括解析模块和写入模块,其中:
所述解析模块,用于解析所述预设数据库中的任务表,得到至少一个待执行任务的消息,其中,所述待执行任务的消息包括:所述待执行任务的任务标识;
所述写入模块,用于将所述待执行任务的任务标识写入所述消息队列中。
可选地,所述解析模块,具体用于根据预设时间间隔解析所述任务表。
可选地,所述写入模块,具体用于根据所述待执行任务的运行时间,从所述至少一个待执行任务中确定目标任务,并将所述目标任务的任务标识写入所述消息队列中。
第四方面,本申请另一实施例提供了一种任务调度装置,应用于分布式系统中多个执行器中的任一执行器,所述分布式系统还包括:调度器,所述装置还包括:获取模块和执行模块,其中:
所述获取模块,用于若接收到来自所述调度器的任务调度请求,则从预设的消息队列中获取待执行任务的任务标识;根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息;
所述执行模块,用于根据所述任务配置信息,执行所述待执行任务。
所述获取模块,具体用于根据所述任务标识,从所述数据库中的任务表中获取所述待执行任务的任务配置信息,所述任务表包括:至少一个任务的消息,每个任务的消息包括:所述每个任务的任务标识,以及所述每个任务的任务配置信息。
第五方面,本申请另一实施例提供了一种任务调度设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当任务调度设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上述第一方面或第二方面任一所述方法的步骤。
第六方面,本申请另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述第一方面或第二方面任一所述方法的步骤。
本申请的有益效果是:采用本申请提供的任务调度方法,应用于分布式系统中,使得调度服务实现分布式部署,实现高可用和负载均衡,提高了系统稳定性,并且由于应用于分布式系统中调度器和执行器均是经过重构的,且任务配置信息均存储在预设数据库中,代替文件的存储方式,由目标执行器从消息队列中获取待执行任务的任务标识,并根据任务标识,从预设数据库中获取待执行任务的任务配置信息,随后根据获取的任务配置信息执行待执行任务,这样的任务调度方式,由于所有的任务配置信息均存储在预设数据库中,即使某个执行器出现故障,还可由其他的执行器来执行待执行任务,从而提高了文件系统的稳定性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请一实施例提供的任务调度方法的流程示意图;
图2为本申请另一实施例提供的任务调度方法的流程示意图;
图3为本申请一实施例提供的任务调度系统的结构示意图;
图4为本申请另一实施例提供的任务调度方法的流程示意图;
图5为本申请另一实施例提供的任务调度方法的流程示意图;
图6为本申请一实施例提供的任务调度装置的结构示意图;
图7为本申请另一实施例提供的任务调度装置的结构示意图;
图8为本申请另一实施例提供的任务调度装置的结构示意图;
图9为本申请一实施例提供的任务调度设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
为使得本申请提供的方法便于理解,下述对本申请涉及的一些名词进行解释说明:
Airflow是目前使用最广泛的一种任务调度系统。主要包含了调度器(Scheduler)、执行器(Worker)和Web服务(WebServer),用户通过编写Python文件来配置任务信息,调度器会将任务文件进行解析并通知执行器执行任务。
Docker是一种对进程进行封装的操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,也被称为容器。Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。
如下结合多个具体的应用示例,对本申请实施例所提供的一种任务调度方法进行解释说明。图1为本申请一实施例提供的一种任务调度方法的流程示意图,应用于分布式系统中的调度器,在本申请的一个实施例中,均以分布式系统为Airflow为例进行说明,分布式系统还包括:多个执行器,如图1所示,该方法包括:
S101:若监听到预设的消息队列中具有待执行任务的消息,则从多个执行器中选择目标执行器。
在本申请的一个实施例中,调度器配置在容器中,多个执行器分别部署在多个物理机或多个物理机的容器内,其中,每个物理机或每个物理机的容器内均部署有一个执行器,每个执行器均连接到同样的数据库和消息队列,不同执行器之间相互独立,这样的配置方式将调度器和执行器分开部署,可以防止某个执行器故障,造成待执行任务无法执行的问题,即使某个执行器故障,也不会影响其他执行器,调度器可以在其他正常的执行器中,选择一个目标执行器执行待执行任务,保障了整个调度服务的高可用和负载均衡。
S102:向目标执行器发送任务调度请求。
任务调度请求用于指示所示目标执行器从消息队列中获取待执行任务的任务标识,并根据任务标识,从预设数据库中获取待执行任务的任务配置信息,根据任务配置信息执行待执行任务。
可选地,在本申请的一个实施例中,预设数据库例如可以为MySQL数据库,各执行器连接到同样的数据库和消息队列,从而实现各执行器实时同步任务配置信息,具体预设数据库的选择可以根据用户需要调整,并不以上述实施例给出的为限。
采用本申请提供的任务调度方法,应用于分布式系统中,使得调度服务实现分布式部署,实现高可用和负载均衡,提高了系统稳定性,并且由于应用于分布式系统中调度器和执行器均是经过重构的,且任务配置信息均存储在预设数据库中,代替文件的存储方式,在进行任务调度时,通过调度器对消息队列进行监控并选择目标执行器,由目标执行器从消息队列中获取待执行任务的任务标识,并根据任务标识,从预设数据库中获取待执行任务的任务配置信息,随后根据获取的任务配置信息执行待执行任务,这样的任务调度方式,由于所有的任务配置信息均存储在预设数据库中,即使某个执行器出现故障,还可由调度器指定其他的执行器来执行待执行任务,从而提高了文件系统的稳定性。
示例地,分布式系统还包括:网页服务器;仍以预设数据库例如为MySQL数据库为例进行说明,MySQL数据库中的每个任务的消息为网页服务器对前端通过预设接口发送的预设格式的数据进行解析并写入到预设数据库中的任务信息;每个任务的消息还包括:每个任务的任务配置信息,每个任务的任务配置信息为前端基于用户的任务配置操作所输入的信息;其中,任务配置操作包括:增加、删除,或,修改中任一配置操作。
将待执行任务的任务配置信息存储在数据库中,提高了整个调度系统增加、删除,或,修改的效率;并且通过前端网页服务对任务配置信息进行配置的方式,使得用户对任务配置信息的修改更新变得简单,并且减少了用户部署任务的学习成本,进一步提高了工作效率。
可选地,在本申请的一个实施例中,网页服务器和调度器分别封装成镜像,并分别部署在一个物理机上的不同容器中。
在本申请的另一实施例中,每个执行器部署在一个物理机或者一个物理机上的容器内;例如可以为使用应用容器引擎Docker将执行器封装为镜像,可以在容器中部署。实现一次封装,多次利用。执行器镜像在容器中部署后就可以将调度任务运行在容器中,实现容器资源的利用。
这种将网页服务器、调度器和执行器分别部署容器内的方式,可以同时利用物理机和容器的资源进行任务调度。
举例说明,前端对任务信息进行配置的方式例如可以为:前端提供给用户一个预设的任务配置界面,例如可以提供文档操作javascript库D3画图框架,来使用户通过拖拽节点配置任务图,每一个节点为一个待执行任务;可以预先将不同的任务封装成不同的表单,例如不同的待执行任务均有其对应的任务模板,用户可以通过拖拽的方式将需要的任务模板拖拽至配置界面后,在任务模板中配置该待执行任务对应的任务配置信息,若当前需要配置一个包括多个子任务的待执行任务,则可以在配置界面上通过连线的形式来设置各子任务之间的上下游关系。配置结束后前端将用户填写的任务配置信息转换成一个Json(JavaScript Object Notation,JS对象简谱),并调用后端提供的预设HTTP接口进行保存,后端收到后,将配置好的任务配置信息保存至预设数据库中;后续若需要修改,只需通过调用后端提供的预设HTTP接口来实现任务配置信息的增删改查。Web后端采用Flask框架来实现,提供HTTP接口,后端将通过HTTP接口收到的任务配置信息均存储至MySQL数据库中。
示例地,在本申请提供的实施例中,网页服务器和调度器分别封装成镜像,并分别部署在一个物理机上的不同容器中,每个执行器部署在一个物理机或者一个物理机上的容器内。
可选地,在上述实施例的基础上,本申请实施例还可提供一种任务调度方法,如下结合附图对上述方法中监听预设的消息队列的实现过程进行示例说明。图2为本申请另一实施例提供的一种任务调度方法的流程示意图,如图2所示,S101之前,该方法还包括:
S103:解析预设数据库中的任务表,得到至少一个待执行任务的消息。
其中,待执行任务的消息包括:待执行任务的任务标识,任务标识用于目标执行器在获取待执行任务的消息时,根据各待执行任务的任务标识在预设数据库中的任务表中,确定待执行任务标识信息对应的待执行任务的消息。
可选地,在本申请的一个实施例中,解析预设数据库中的任务表的规则例如可以为:根据预设时间间隔解析任务表,预设时间可以根据用户需要灵活调整,本申请在此不做任何限制;也可以为实时解析任务表,具体解析的规则并不以上述实施例给出的为限。
S104:将待执行任务的任务标识写入消息队列中。
示例地,在本申请的一个实施例中,待执行任务的消息还包括:待执行任务的预设运行时间;即调度器定时对预设数据库中的任务配置信息进行解析,并根据待执行任务的运行时间,从至少一个待执行任务中确定目标任务,并将目标任务的任务标识写入消息队列中。
其中,调度器可以根据各待执行任务的预设运行时间,来判断是否将该待执行任务发送至消息队列中,判断规则例如可以为:确定当前时间是否在各待执行任务的预设运行时间的前10S或前30S,若是,则将对应的待执行任务发送至消息队列中;任务标识(Identity document,id)例如可以为任务编号或任务时间戳等唯一指示任务的任务标识信息,具体判断规则和任务标识包括的内容可以根据用户需要灵活设置,并不以上述实施例给出的为限。
图3为本申请一实施例提供的任务调度系统的结构示意图,如图3所示,本申请提供的任务调度系统包括:调度器、多个执行器、Web服务器、消息队列和MySQL数据库,其中:
多个执行器例如可以包括:执行器-1、执行器-2、执行器-3……执行器-n,多个执行器分别部署在多台物理机或物理机的容器上,各执行器之间相互独立,且可线性扩展。
Web服务、调度器分别封装成镜像,并分别部署在一个物理机上的不同容器中。
Web服务、调度器以及多个执行器连接的是同一个MySQL数据库和消息队列;Web服务、调度器和多个执行器之间通过MySQL数据库和消息队列进行数据传输。
下述对本申请提供的任务调度方法的执行步骤和带来的有益效果进行连贯说明:
本申请的前端可以提供一个预设的任务配置界面,Web后端采用Flask框架来实现,提供HTTP接口。其中预设的任务配置界面例如可以提供文档操作javascript库D3画图框架,将不同的待执行任务封装成不同的表单让用户填写,用户可以通过拖拽的方式来添加待执行任务,通过连线来设置各待执行任务之间的上下游关系。随后前端将用户填写好的各待执行任务的配置信息转换成一个Json,通过调用后端提供的HTTP接口来实现待执行任务的保存,后端将通过HTTP接口收到的待执行的任务配置信息,并存储到MySQL数据库中;后续用户若需要对保存的待执行任务信息进行任务配置操作,可以通过后端提供的HTTP接口来实现。从而实现Web前后端服务,并将待执行任务配置信息保存至MySQL数据库中。
本申请提供的方法中,将所有待执行任务配置信息均存储到MySQL中,重构后的调度器经会定时去解析MySQL中的任务信息表,根据任务信息表中各待执行任务设置的运行时间来判断是否将待执行任务的任务标识ID发送到消息队列中,并对消息队列进行监听,监听到当前存在待执行任务时,则在多个执行器中指定一个目标执行器来执行待执行任务;重构后的执行器在接收到调度器的指示后,实时去消息队列中拉取待执行任务的任务标识ID,再去MySQL中的任务表中找到该ID对应的待执行任务的任务配置信息,并根据获取到的任务配置信息运行待执行任务;从而通过重构Airflow的调度器和执行器,实现调度器和执行器从MySQL中解析待执行任务信息。
本申请提供的方法通过在多台物理机上安装部署调度服务,并且将多台物理机的调度服务连接到同样的MySQL数据库和Redis消息队列,从而实现任务配置信息在多台物理机之间实时同步;其中,Web服务、调度器以及执行器连接的是同一个MySQL数据库。调度器负责定时去解析MySQL中保存的至少一个待执行任务信息,并且将待执行任务的任务标识ID发送到消息队列Redis中,并在监听到消息队列中当前存在待执行任务时,在多个执行器中指定一个目标执行器来执行待执行任务;目标执行器负责去消息队列中获取待执行任务的任务标识ID。由于本申请提供的方法中,由于不同的执行器之间相互独立,即使其中一个执行器出现故障也不会影响其他执行器的正常运行,保障了整个调度服务的高可用和负载均衡,从而实现调度服务的多台物理机分布式部署,实现高可用和负载均衡。
本申请提供的方法还可以使用Docker技术将Web后端服务和调度器分别封装成镜像,并且部署在不同的容器中,实现高可用。同时还使用Docker技术将执行器封装为镜像,可以在容器中部署。实现一次封装,多次利用。执行器镜像在容器中部署后就可以将调度任务运行在容器中,实现容器资源的利用;从而将调度服务执行器封装为镜像,实现容器资源的调用。
采用本申请提供的任务调度方法,应用于分布式系统中,使得调度服务实现分布式部署,实现高可用和负载均衡,提高了系统稳定性;且各待执行任务的配置信息均为用户通过网页填写参数来实现的部署和配置,从而减小了用户部署任务的学习成本,提高了工作效率,并且用户还可以通过调用后端提供的预设HTTP接口来实现待执行任务的增删改查,进一步提高了待执行任务的任务配置的效率;并且由于本申请提供的应用于分布式系统中的调度器和执行器均是经过重构的,且待执行任务配置信息均存储在预设数据库中,代替现有技术中通过文件进行存储方式,在进行任务调度时,通过调度器对消息队列进行监控,判断当前是否有待执行任务,并选择执行该待执行任务的目标执行器,由目标执行器从消息队列中获取待执行任务的任务标识,并根据待执行任务的任务标识,从预设数据库中获取待执行任务的任务配置信息,随后根据获取的任务配置信息执行待执行任务,这样的任务调度方式,由于所有的待执行任务的任务配置信息均存储在预设数据库中,即使某个执行器出现故障,还可由调度器指定其他的执行器来执行待执行任务,从而提高了文件系统的稳定性;此外,本申请提供的方法,还可以将执行器进行线性扩展,并且支持调用容器中的待执行任务,从而方便根据业务场景和待执行任务数量来扩展调度服务执行器,避免了资源不足的情况,充分利用了物理机与容器的资源。
本申请实施例还可提供一种任务调度方法,如下结合附图对上述方法的实现过程进行示例说明。图4为本申请另一实施例提供的一种任务调度方法的流程示意图,应用于分布式系统中多个执行器中的任一执行器,分布式系统还包括:调度器,如图4所示,该方法包括:
S201:若接收到来自调度器的任务调度请求,则从预设的消息队列中获取待执行任务的任务标识。
其中,同一个任务调度器只会调度一个执行器去执行,在调度器根据各待执行任务的任务配置信息中的任务运行时间判断是否将待执行任务的任务标识写入消息队列中,随后对消息队列进行监听,如果有待执行任务要执行,则在多个执行器中确定一个目标执行器,并向该目标执行器发送任务调度请求。
S202:根据任务标识,从预设数据库中获取待执行任务的任务配置信息。
执行器在从消息队列中获取待执行任务的任务标识后,根据任务标识在预设数据库的任务表找到该任务标识对应的待执行任务,并获取该待执行任务的任务配置信息。
S203:根据任务配置信息,执行待执行任务。
在本申请的一个实施例中,目标执行器可以在安装有该执行器的物理机或容器中执行任务。
示例地,在一些可能的实施例中,执行器可以线性扩展,并且支持调用容器中的待执行任务。从而使得可以使得根据业务场景和待执行任务数量来扩展调度服务执行器,避免了资源不足的情况,从而实现了物理机与容器资源的充分利用。
可选地,在上述实施例的基础上,本申请实施例还可提供一种任务调度方法,如下结合附图对上述方法中获取待执行任务的任务配置信息的实现过程进行示例说明。图5为本申请另一实施例提供的一种任务调度方法的流程示意图,如图5所示,S202可包括:
S204:根据任务标识,从数据库中的任务表中获取待执行任务的任务配置信息。
任务表包括:至少一个任务的消息,每个任务的消息包括:每个任务的任务标识,以及每个任务的任务配置信息。
采用本申请提供的任务调度方法,应用于分布式系统中的执行器侧,多执行器的部署使得调度服务实现分布式部署,实现高可用和负载均衡,提高了系统稳定性;由于所有的任务配置信息均存储在预设数据库中,即使某个执行器出现故障,还可由其他的执行器来执行任务,从而提高了文件系统的稳定性;并且由于本申请提供的应用于分布式系统中的调度器和执行器均是经过重构的,且所有待执行任务的任务配置信息均是存储在预设数据库中,代替了现有技术中通过文件进行的存储方式,使得在进行任务调度时,可以通过调度器对消息队列中的待执行任务进行监控,并在确定待执行任务后选择执行该任务的目标执行器,由目标执行器从消息队列中获取待执行任务的任务标识,并根据待执行任务的任务标识,从预设数据库中获取待执行任务的任务配置信息,随后根据获取的任务配置信息执行待执行任务,这样的任务调度方式此外,本申请提供的方法,还可以将执行器线性扩展,并且支持调用容器中的任务,从而方便根据业务场景和任务数量来扩展调度服务执行器,避免了资源不足的情况,充分利用了物理机与容器的资源。
下述结合附图对本申请所提供的任务调度装置进行解释说明,该任务调度装置可执行上述图1-图5任一任务调度方法,其具体实现以及有益效果参照上述,如下不再赘述。
图6为本申请一实施例提供的任务调度装置的结构示意图,应用于分布式系统中的调度器,分布式系统还包括:多个执行器,如图6所示,该装置包括:选择模块301和执行模块302,其中:
选择模块301,用于若监听到预设的消息队列中具有待执行任务的消息,则从多个执行器中选择目标执行器。
执行模块302,用于向目标执行器发送任务调度请求,任务调度请求用于指示所示目标执行器从消息队列中获取待执行任务的任务标识,并根据任务标识,从预设数据库中获取待执行任务的任务配置信息,根据任务配置信息执行待执行任务。
图7为本申请一实施例提供的任务调度装置的结构示意图,如图7所示,该装置还包括:解析模块303和写入模块304,其中:
解析模块303,用于解析预设数据库中的任务表,得到至少一个待执行任务的消息,其中,待执行任务的消息包括:待执行任务的任务标识;
写入模块304,用于将待执行任务的任务标识写入消息队列中。
可选地,解析模块303,具体用于根据预设时间间隔解析任务表。
可选地,写入模块304,具体用于根据待执行任务的运行时间,从至少一个任务中确定目标任务,并将目标任务的任务标识写入消息队列中。
图8为本申请一实施例提供的任务调度装置的结构示意图,应用于分布式系统中多个执行器中的任一执行器,分布式系统还包括:调度器,如图8所示,该装置包括:获取模块401和执行模块402,其中:
获取模块401,用于若接收到来自调度器的任务调度请求,则从预设的消息队列中获取待执行任务的任务标识;根据任务标识,从预设数据库中获取待执行任务的任务配置信息;
执行模块402,用于根据任务配置信息,执行待执行任务。
获取模块401,具体用于根据任务标识,从数据库中的任务表中获取待执行任务的任务配置信息,任务表包括:至少一个任务的消息,每个任务的消息包括:每个任务的任务标识,以及每个任务的任务配置信息。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图9为本申请一实施例提供的任务调度设备的结构示意图,该任务调度设备可以集成于物理机或服务器端。
该任务调度设备包括:处理器501、存储介质502和总线503。
处理器501用于存储程序,处理器501调用存储介质502存储的程序,以执行上述图1-图5对应的方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种程序产品,例如存储介质,该存储介质上存储有计算机程序,包括程序,该程序在被处理器运行时执行上述方法对应的实施例。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random AccessMemory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (14)
1.一种任务调度方法,其特征在于,应用于分布式系统中的调度器,所述分布式系统还包括:多个执行器,所述方法包括:
若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器;
向所述目标执行器发送任务调度请求,所述任务调度请求用于指示所述目标执行器从所述消息队列中获取所述待执行任务的任务标识,并根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,根据所述任务配置信息执行所述待执行任务。
2.如权利要求1所述的方法,其特征在于,所述若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器之前,所述方法还包括:
解析所述预设数据库中的任务表,得到至少一个待执行任务的消息,其中,所述待执行任务的消息包括:所述待执行任务的任务标识;
将所述待执行任务的任务标识写入所述消息队列中。
3.如权利要求2所述的方法,其特征在于,所述解析所述预设数据库中的任务表,得到至少一个待执行任务的信息,包括:
根据预设时间间隔解析所述任务表。
4.如权利要求2所述的方法,其特征在于,所述待执行任务的消息还包括:所述待执行任务的预设运行时间;所述将所述待执行任务的任务标识写入所述消息队列中,包括:
根据所述待执行任务的运行时间,从所述至少一个待执行任务中确定目标任务,并将所述目标任务的任务标识写入所述消息队列中。
5.如权利要求2所述的方法,其特征在于,所述分布式系统还包括:网页服务器,所述方法还包括:所述任务的消息为所述网页服务器对前端通过预设接口发送的预设格式的数据进行解析并写入到所述预设数据库中的任务信息。
6.如权利要求5所述的方法,其特征在于,所述任务的信息还包括:所述任务的任务配置信息,所述任务的任务配置信息为所述前端基于用户的任务配置操作所输入的信息。
7.如权利要求6所述的方法,其特征在于,所述任务配置操作包括:增加、删除或修改中任一或多种配置操作。
8.如权利要求5所述的方法,其特征在于,所述网页服务器和/或所述调度器封装成镜像,并部署在一个物理机上的容器中。
9.如权利要求1-8中任一所述的方法,其特征在于,每个执行器部署在一个物理机或者一个物理机上的容器内。
10.一种任务调度方法,其特征在于,应用于分布式系统中多个执行器中的任一执行器,所述分布式系统还包括:调度器,所述方法包括:
若接收到来自所述调度器的任务调度请求,则从预设的消息队列中获取待执行任务的任务标识;
根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息;
根据所述任务配置信息,执行所述待执行任务。
11.如权利要求10所述的方法,其特征在于,所述根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,包括:
根据所述任务标识,从所述数据库中的任务表中获取所述待执行任务的任务配置信息,所述任务表包括:至少一个任务的消息,每个任务的消息包括:所述每个任务的任务标识,以及所述每个任务的任务配置信息。
12.一种任务调度装置,其特征在于,应用于分布式系统中的调度器,所述分布式系统还包括:多个执行器,所述装置包括:选择模块和执行模块,其中:
所述选择模块,用于若监听到预设的消息队列中具有待执行任务的消息,则从所述多个执行器中选择目标执行器;
所述执行模块,用于向所述目标执行器发送任务调度请求,所述任务调度请求用于指示所示所述目标执行器从所述消息队列中获取所述待执行任务的任务标识,并根据所述任务标识,从预设数据库中获取所述待执行任务的任务配置信息,根据所述任务配置信息执行所述待执行任务。
13.一种任务调度设备,其特征在于,所述设备包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述任务调度设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011572510.8A CN112596885A (zh) | 2020-12-25 | 2020-12-25 | 任务调度方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011572510.8A CN112596885A (zh) | 2020-12-25 | 2020-12-25 | 任务调度方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112596885A true CN112596885A (zh) | 2021-04-02 |
Family
ID=75203000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011572510.8A Pending CN112596885A (zh) | 2020-12-25 | 2020-12-25 | 任务调度方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596885A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN113254184A (zh) * | 2021-06-11 | 2021-08-13 | 中移(杭州)信息技术有限公司 | 任务调度方法、装置、调度系统以及存储介质 |
CN113326117A (zh) * | 2021-07-15 | 2021-08-31 | 中国电子科技集团公司第十五研究所 | 一种任务调度方法、装置及设备 |
CN113472638A (zh) * | 2021-07-05 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 边缘网关控制方法及系统、装置、电子设备、存储介质 |
CN113839783A (zh) * | 2021-09-27 | 2021-12-24 | 中国工商银行股份有限公司 | 一种任务处理方法、装置及设备 |
CN113934731A (zh) * | 2021-11-05 | 2022-01-14 | 盐城金堤科技有限公司 | 任务执行方法、装置、存储介质及电子设备 |
CN113986577A (zh) * | 2021-10-25 | 2022-01-28 | 中国联合网络通信集团有限公司 | 基于定时器的数据处理方法、装置及设备 |
CN114090269A (zh) * | 2022-01-21 | 2022-02-25 | 北京阿丘科技有限公司 | 业务调度均衡方法、装置、设备及存储介质 |
CN115941607A (zh) * | 2022-12-01 | 2023-04-07 | 大箴(杭州)科技有限公司 | 一种信息录入方法及装置、存储介质、计算机设备 |
CN116775255A (zh) * | 2023-08-15 | 2023-09-19 | 长沙伊士格信息科技有限责任公司 | 一种支持广泛集成场景的全域集成系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766196A (zh) * | 2018-12-18 | 2019-05-17 | 深圳云天励飞技术有限公司 | 一种任务调度方法、装置及设备 |
CN110740184A (zh) * | 2019-10-23 | 2020-01-31 | 中国银行股份有限公司 | 基于微服务架构的交易策略测试系统 |
CN111506412A (zh) * | 2020-04-22 | 2020-08-07 | 上海德拓信息技术股份有限公司 | 基于Airflow的分布式异步任务构建、调度系统及方法 |
CN111949386A (zh) * | 2020-07-09 | 2020-11-17 | 北京齐尔布莱特科技有限公司 | 一种任务调度方法、系统、计算装置及可读存储介质 |
-
2020
- 2020-12-25 CN CN202011572510.8A patent/CN112596885A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766196A (zh) * | 2018-12-18 | 2019-05-17 | 深圳云天励飞技术有限公司 | 一种任务调度方法、装置及设备 |
CN110740184A (zh) * | 2019-10-23 | 2020-01-31 | 中国银行股份有限公司 | 基于微服务架构的交易策略测试系统 |
CN111506412A (zh) * | 2020-04-22 | 2020-08-07 | 上海德拓信息技术股份有限公司 | 基于Airflow的分布式异步任务构建、调度系统及方法 |
CN111949386A (zh) * | 2020-07-09 | 2020-11-17 | 北京齐尔布莱特科技有限公司 | 一种任务调度方法、系统、计算装置及可读存储介质 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022227447A1 (zh) * | 2021-04-27 | 2022-11-03 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN113254184A (zh) * | 2021-06-11 | 2021-08-13 | 中移(杭州)信息技术有限公司 | 任务调度方法、装置、调度系统以及存储介质 |
CN113472638A (zh) * | 2021-07-05 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 边缘网关控制方法及系统、装置、电子设备、存储介质 |
CN113472638B (zh) * | 2021-07-05 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 边缘网关控制方法及系统、装置、电子设备、存储介质 |
CN113326117A (zh) * | 2021-07-15 | 2021-08-31 | 中国电子科技集团公司第十五研究所 | 一种任务调度方法、装置及设备 |
CN113839783A (zh) * | 2021-09-27 | 2021-12-24 | 中国工商银行股份有限公司 | 一种任务处理方法、装置及设备 |
CN113986577A (zh) * | 2021-10-25 | 2022-01-28 | 中国联合网络通信集团有限公司 | 基于定时器的数据处理方法、装置及设备 |
CN113934731A (zh) * | 2021-11-05 | 2022-01-14 | 盐城金堤科技有限公司 | 任务执行方法、装置、存储介质及电子设备 |
CN114090269A (zh) * | 2022-01-21 | 2022-02-25 | 北京阿丘科技有限公司 | 业务调度均衡方法、装置、设备及存储介质 |
CN115941607A (zh) * | 2022-12-01 | 2023-04-07 | 大箴(杭州)科技有限公司 | 一种信息录入方法及装置、存储介质、计算机设备 |
CN116775255A (zh) * | 2023-08-15 | 2023-09-19 | 长沙伊士格信息科技有限责任公司 | 一种支持广泛集成场景的全域集成系统 |
CN116775255B (zh) * | 2023-08-15 | 2023-11-21 | 长沙伊士格信息科技有限责任公司 | 一种支持广泛集成场景的全域集成系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112596885A (zh) | 任务调度方法、装置、设备及存储介质 | |
US10805363B2 (en) | Method, device and system for pushing file | |
US10686908B2 (en) | Embedded database as a microservice for distributed container cloud platform | |
CN108897610B (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN108845954B (zh) | 压力测试方法、系统及存储介质 | |
CN111506412A (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
US20150100832A1 (en) | Method and system for selecting and executing test scripts | |
CN113569987A (zh) | 模型训练方法和装置 | |
CN108089915B (zh) | 基于消息队列的业务控件化处理的方法及系统 | |
CN112395196B (zh) | 数据作业开发测试方法、装置、设备、系统及存储介质 | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN113742031A (zh) | 节点状态信息获取方法、装置、电子设备及可读存储介质 | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
CN114020448A (zh) | 一种云资源编排方法、装置、设备及存储介质 | |
CN107025134B (zh) | 数据库服务系统及兼容多种数据库的方法 | |
CN113778486A (zh) | 一种代码流水线的容器化处理方法、装置、介质及设备 | |
CN112596876A (zh) | 一种任务调度方法、装置及相关设备 | |
CN115357662A (zh) | 一种数据同步的方法、装置及介质 | |
CN113377665A (zh) | 基于容器技术的测试方法、装置、电子设备及存储介质 | |
CN115113975A (zh) | 集群管理的方法、装置、电子设备及存储介质 | |
CN111522630B (zh) | 基于批次调度中心的计划任务执行方法以及系统 | |
US11720476B2 (en) | Automated end-to-end testing platform with dynamic container configuration | |
CN114168252A (zh) | 信息处理系统及方法、网络方案推荐组件及方法 | |
CN114116487B (zh) | 压力测试方法、装置、电子设备及存储介质 | |
CN105068912A (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 |