如上图所示,淘宝调度管理器在建立后就会执行一系列初始化过程,而且启动一些定时线程。具体流程描述以下: 服务器
1.建立定时调度器。 spa
2.从配置中心加载任务配置信息。 线程
3.建立一个本地的服务器信息。 orm
4.加载任务调度运行信息。(没有的话会自动建立)。主要是支持任务能够多环境运行,生产的运行信息中的任务类型是:原始任务类型:环境。 队列
5.注册服务器信息到注册中心。 配置
6.启动定时器。定时执行心跳任务。 循环
6.1心跳任务会刷新注册中心的PAMIRS_SCHEDULE_SERVER表的HEARTBEAT_TIME字段的值。 淘宝
6.2当有主机发生变化的时候从新给服务器分配队列。 定时器
6.3若调度暂停或者处理器睡眠则从新获取当前服务器队列。 im
6.5若发送心跳异常,则清空队列和处理器中的任务,避免心跳失败致使的重复任务执行。
7.启动新的线程。等待主机得到队列。直到得到队列为止,一直会循环等待。
8.若得到任务队列。则开始计算时间进入调度。
9.若开始时间配置空或者当即执行,则会当即会对调度器调度。
建立新的调度处理器开始处理队列中的任务。
10.不然计算下次符合“cron”表达式配置的开始有效时间。
启动一个定时器,当时间到达则恢复任务调度。
11.计算符合“cron”表达式配置的结束有效时间。
启动一个定时器,当时间到达则中止任务调度。