Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.9 KB

任务管理框架设计.md

File metadata and controls

47 lines (35 loc) · 1.9 KB

任务管理框架设计

一、主要模块

1、job动态迁移

查询各节点的负载情况,将接收到请求分发给负载低的节点上

2、宕机任务接管

查询出无心跳的主机id,并接管它未完成的job

3、配置动态加载

动态加载配置内容,使用观察者模式

4、任务队列

该队列是存放需要立即调度的任务,其他延迟调度的任务持久化到db中供任务扫描器扫描 接收任务,供任务调度器消费

5、任务执行器

查询数据库中任务信息,执行任务

6、任务扫描器

扫描数据库中特定状态的任务,放入任务队列中

7、负载扫描器

根据配置文件中的最大负载,查询数据库中正在执行的任务数,如果未达到最大负载,则放通剩余的任务直到最大负载

8、健康扫描器

数据库表:节点信息表 心跳更新时间,心跳超时时间,心跳超时次数 发送宕机事件

9、节点器

处理宕机事件:根据系统资源配置消费一定数量的job

10、心跳管理器

定期更新节点信息; 或者根据需要监控的任务线程是否存活,定期更新节点信息。

11、任务调度器

消费任务队列; 调度任务执行器执行任务

二、大体流程:

1、提交job时会将job保存到数据库,若该job未进行流控配置,则直接加入到队列进行调度,否则设置job状态为waiting。
2、DBJobMonitor会定时去扫描数据库中的处于waiting状态的job,并将扫描到的job加入到队列。
3、JobScheduler消费队列中的job,初始化并启动JobSprintThread线程处理job。
4、每个job包含了需要执行的子任务列表,job执行时,根据当前的taskIndex,执行task。
5、业务task继承自AbstrackTask,根据具体需求实现execute、listenAfterExcute、rollback、listenAfterRollback等方法。