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

一种统一任务调度系统

文献发布时间:2023-06-19 10:41:48


一种统一任务调度系统

技术领域

本发明涉及任务网关相关技术领域,尤其是指一种统一任务调度系统。

背景技术

实际业务中如果需要下发一个任务,比如直播转码或离线转码任务,一般都是在当前服务中直接对接任务服务接口,这种情况下会增加当前服务的配置复杂性:需要配置不同任务的地址,且无法动态控制任务最大运行数量,同时对于横向扩展有局限性(需要在服务的配置中新增任务地址)。

发明内容

本发明是为了克服现有技术中存在上述的不足,提供了一种支持动态横向扩展的统一任务调度系统。

为了实现上述目的,本发明采用以下技术方案:

一种统一任务调度系统,包括任务启动模块、任务停止模块、群组模块、调度模块、机器模块;

任务启动模块用于发送启动各类任务请求,与群组模块连接;

任务停止模块用于携带任务id发送停止任务请求,与群组模块连接;

群组模块用于定义各类任务的调度规则,与调度模块连接;

调度模块用于根据规则转发任务,与机器模块连接;

机器模块用于执行及记录任务。

本发明公开了一种统一任务调度系统,包括任务启动模块、任务停止模块、群组模块、调度模块、机器模块,通过该方案可以对各类任务进行统一规范处理,让调用端无需关心真正执行任务的服务,只需对接任务调度服务即可,同时支持动态横向扩展来增加任务运行上限。

作为优选,所述任务启动模块用于启动任务信息,由调用端服务触发,附带任务类型、任务所需性能值、任务内容向群组模块发送http请求;所述任务停止模块用于停止当前任务,由调用端服务触发,附带任务启动模块记录的任务id向群组模块发送http请求。

作为优选,所述群组模块为整个任务调度系统的入口,在整个系统运行前,需要先定义如下信息:

第一:任务类型,即整个任务调度系统支持的任务类型;

第二:调度指标,分两类:任务数、机器性能值;

第三:调度算法,分两类:负载均衡、最多优先。

作为优选,所述任务数是指每个机器模块运行的最大任务数量;所述机器性能值代表机器模块承受的一个量化的值,这个值是由机器的配置计算得出,公式:为cpu核数-内存大小,在任务启动模块中需要计算出当前任务所需要的性能值进行任务下发,以cpu和内存两个指标中哪个先到达就代表此机器已被用完。

作为优选,所述负载均衡是指把任务平均下发至机器模块中;所述最多优先是指先一台机器占用满再去下发至另外一台。

作为优选,完成以上定义后,系统开始接收任务启动模块及任务停止模块的请求,不同的请求处理逻辑不同:

(1)接收到任务启动模块请求后,先根据传递的type参数来获取在群组模块中定义的信息,包括调度指标、调度算法,然后和任务启动模块传递的参数一起合并转发至调度模块;

(2)接收到任务停止模块请求后直接携带其传递的任务id转发至调度模块。

作为优选,所述调度模块在接收到群组模块转发的启动和停止请求时处理逻辑不同:

(a)接收到群组模块转发的任务启动请求后,需要先根据任务类型查询机器模块是否有匹配的任务机器,再根据调度指标查询是否有空余机器,最后根据调度算法得出最优机器,调用机器模块中的启动任务进行下发,任务下发成功后调度模块需要生成本次任务的一个唯一标识,采用随机UUID方式,与机器模块中真实运行的任务id、机器信息进行关联存储并响应至任务启动模块;

(b)接收到群组模块转发的任务停止请求后,根据传递的任务id,按照调度模块存储的信息直接查询到任务所在的机器信息,随后调用机器模块中的停止任务即可。

作为优选,所述机器模块是指真正运行任务的机器,是支持动态无限横向扩展的模块,每个机器模块都需要关联一个群组模块,这样就会直接拥有任务类型、最大任务数、最大性能值,另外机器模块需要额外存储动态信息,动态信息用于调度模块进行查询使用。

作为优选,具体查询如下:

(i)查询是否有空闲机器的判断标准:当前运行任务数量或当前任务所占性能值是否到达群组模块定义的上限;

(ii)查询最优机器的算法:得出空闲机器集合后,按照剩余任务数量或剩余性能值进行升序或降序排列取第一个。

作为优选,所述机器模块在接收启动和停止任务时的处理逻辑也不同:

(A)接收到启动任务请求后,执行真正的任务启动,然后根据当前所属的群组模块中配置的调度算法进行数据累加;

(B)接收到停止任务请求后,执行真正的任务停止,然后根据当前所属的群组模块中配置的调度算法进行数据缩减。

本发明的有益效果是:可以对各类任务进行统一规范处理,让调用端无需关心真正执行任务的服务,只需对接任务调度服务即可,同时支持动态横向扩展来增加任务运行上限。

附图说明

图1是本发明的系统框图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

如图1所述的实施例中,一种统一任务调度系统,包括任务启动模块、任务停止模块、群组模块、调度模块、机器模块;

任务启动模块用于发送启动各类任务请求,与群组模块连接;任务启动模块用于启动任务信息,由调用端服务触发,附带任务类型、任务所需性能值、任务内容向群组模块发送http请求,比如:启动当虹云直播转码任务范例:

请求

POST http://统一任务服务地址/task/start?type=live&performanceVal=1-2

<....>

响应

{taskId:xxx}

其中:

type为任务类型

performanceVal为当前任务所需的性能值,1-2代表需要1核2GB内存的资源

xml为本次转码任务的内容,需要在【机器模块】运行

taskId为【群组模块】响应的本次任务id,需要在调用端记录,【任务停止模块】需要携带此参数

任务停止模块用于携带任务id发送停止任务请求,与群组模块连接;任务停止模块用于停止当前任务,由调用端服务触发,附带任务启动模块记录的任务id向群组模块发送http请求,比如:停止当虹云直播转码任务范例:

请求

POST http://统一任务服务地址/task/stop/

其中:

xxx为【任务启动模块】记录的任务标识

群组模块用于定义各类任务的调度规则,与调度模块连接;群组模块为整个任务调度系统的入口,在整个系统运行前,需要先定义如下信息:

第一:任务类型,即整个任务调度系统支持的任务类型,比如:直播转码、点播转码、定时任务、快编任务等等(任务类型没有任何局限,视具体的业务而定);

第二:调度指标,分两类:任务数、机器性能值;任务数是指每个机器模块运行的最大任务数量;机器性能值代表机器模块承受的一个量化的值,这个值是由机器的配置计算得出,公式:为cpu核数-内存大小,比如4核8GB内存的机器的性能值为4-8,在任务启动模块中需要计算出当前任务所需要的性能值进行任务下发,如一个高清直播转码任务所需的资源是2核2GB内存,那么任务性能值就为2-2,以cpu和内存两个指标中哪个先到达就代表此机器已被用完,那么4核8GB内存的机器只能跑2个该类高清直播转码任务。

第三:调度算法,分两类:负载均衡、最多优先;负载均衡是指把任务平均下发至机器模块中,比如有2台机器,10个任务,那么每台机器将运行5个任务(前提是调度指标为任务数,且任务数设置的指大于5);最多优先是指先一台机器占用满再去下发至另外一台,比如2台机器,调度指标为任务数,且任务数设置为10,如果有10个任务下发,那么其中一台任务量为10,另外一台为0。

定义范例如下:

其中:

groupId为【群组模块】标识

dispatchType为调度指标,taskNum代表任务数,pv代表性能值

maxVal为不同调度指标下的最大值,比如10或3-9

dispatchAlgorithm为调度算法,lb代表负载均衡,mf代表最多优先

完成以上定义后,系统开始接收任务启动模块及任务停止模块的请求,不同的请求处理逻辑不同:

(1)接收到任务启动模块请求后,先根据传递的type参数来获取在群组模块中定义的信息,包括调度指标、调度算法,然后和任务启动模块传递的参数一起合并转发至调度模块;

(2)接收到任务停止模块请求后直接携带其传递的任务id转发至调度模块。

调度模块用于根据规则转发任务,与机器模块连接;调度模块在接收到群组模块转发的启动和停止请求时处理逻辑不同:

(a)接收到群组模块转发的任务启动请求后,需要先根据任务类型查询机器模块是否有匹配的任务机器,再根据调度指标查询是否有空余机器,最后根据调度算法得出最优机器,调用机器模块中的启动任务进行下发,任务下发成功后调度模块需要生成本次任务的一个唯一标识,采用随机UUID方式,与机器模块中真实运行的任务id、机器信息进行关联存储并响应至任务启动模块,存储的信息范例如下:

其中:

taskId为响应至【任务启动模块】的任务id

hostId为【机器模块】的机器标识,用于后续根据任务id查询所属机器

hostTaskId为【机器模块】中真实运行的任务id,在停止任务时使用

(b)接收到群组模块转发的任务停止请求后,根据传递的任务id,按照调度模块存储的信息直接查询到任务所在的机器信息,随后调用机器模块中的停止任务即可。

机器模块用于执行及记录任务;机器模块是指真正运行任务的机器,是支持动态无限横向扩展的模块,每个机器模块都需要关联一个群组模块,这样就会直接拥有任务类型、最大任务数(如果调度指标为任务数)、最大性能值(如果调度指标为性能值),另外机器模块需要额外存储动态信息,如当前运行任务数量、当前所有任务所占的总性能值,存储的信息范例如下:

其中:

hostId为机器标识,用于调度模块查询机器使用

groupId为【群组模块】标识,用于获取该机器的调度指标、调度算法等

currentTaskNum为当前机器运行的任务总数,作为【调度模块】查询空闲机器和最优机器的必要条件

currentPerformanceVal为当前机器运行的任务总性能值,3-7代表该机器已经使用了3核7GB内存的资源,作为【调度模块】查询空闲机器和最优机器的必要条件

以上动态信息用于调度模块进行查询使用;具体查询如下:

(i)查询是否有空闲机器的判断标准:当前运行任务数量或当前任务所占性能值是否到达群组模块定义的上限;

(ii)查询最优机器的算法:得出空闲机器集合后,按照剩余任务数量或剩余性能值进行升序(负载均衡)或降序(最多优先)排列取第一个。

机器模块在接收启动和停止任务时的处理逻辑也不同:

(A)接收到启动任务请求后,执行真正的任务启动,然后根据当前所属的群组模块中配置的调度算法进行数据累加,比如任务数量加1、当前总性能值加该任务性能值;

(B)接收到停止任务请求后,执行真正的任务停止,然后根据当前所属的群组模块中配置的调度算法进行数据缩减,比如任务数量减1、当前总性能值减该任务性能值。

本发明公开了一种统一任务调度系统,包括任务启动模块、任务停止模块、群组模块、调度模块、机器模块,通过该方案可以对各类任务进行统一规范处理,让调用端无需关心真正执行任务的服务,只需对接任务调度服务即可,同时支持动态横向扩展来增加任务运行上限。已应用于当虹云产品,在集成离线转码任务和在线转码任务中,为调用端服务节省了大量的对接工作,且可以按需进行资源调整来适应不同量级的业务场景。

相关技术
  • 一种数据中台统一任务调度管理系统
  • 一种面向统一染色架构GPU的三级任务调度电路
技术分类

06120112641200