查询各节点的负载情况,将接收到请求分发给负载低的节点上
查询出无心跳的主机id,并接管它未完成的job
动态加载配置内容,使用观察者模式
该队列是存放需要立即调度的任务,其他延迟调度的任务持久化到db中供任务扫描器扫描 接收任务,供任务调度器消费
查询数据库中任务信息,执行任务
扫描数据库中特定状态的任务,放入任务队列中
根据配置文件中的最大负载,查询数据库中正在执行的任务数,如果未达到最大负载,则放通剩余的任务直到最大负载
数据库表:节点信息表 心跳更新时间,心跳超时时间,心跳超时次数 发送宕机事件
处理宕机事件:根据系统资源配置消费一定数量的job
定期更新节点信息; 或者根据需要监控的任务线程是否存活,定期更新节点信息。
消费任务队列; 调度任务执行器执行任务
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等方法。