一、介绍
任务下发机制是调度平台YYSchedule的主*分,本篇博客将分为四个部分进行描述,分别是:
1、介绍“任务”这一概念
2、介绍用户如何向控制节点下发任务
3、介绍任务下发机制
4、介绍任务下发机制的具体队列图
二、任务
调度平台的任务结构如下图所示:
用户下发一个mission为单位的任务,每个mission含有多个job,每个job分别对应一种执行类型(例如查病毒,查漏洞,文件加固),每个job分别对应多个task,实际上每个task也就对应着一个文件file。
举个例子,用户User拥有50个apk文件,他将这50个文件进行病毒检测,漏洞检测,文件加固,下发1个mission之后,便会有三个job,而每个job便会有50个task。分别对应着这50个apk文件。
三、用户调用接口下发任务
用户下发任务,实际上就是以下几步:
a、用户(User)设置好下发任务(mission)所需要的参数(例如优先级,文件路径等)
b、taskmanager端使用thrift开启服务,此时taskmanager是服务端,user是客户端
c、用户(User)远程rpc调用taskmanager的UserCallTaskService.submitMission(mission)方法,此时也会将任务(mission)传递到控制节点taskmanager上
四、任务下发机制
控制节点收到任务mission会在任务下发模块对mission进行处理,其流程大致为,将从用户手里收到的任务,寻找最为合适的任务节点node i,将任务分发到对应的队列distributeTaskQueue i 中,任务节点node i 收到任务后,会调用命令行执行引擎engine,这样就形成了一套收到任务-分配任务-执行任务的流程。
五、具体队列图