如上圖所示,淘寶調度管理器在建立後就會執行一系列初始化過程,而且啓動一些定時線程。具體流程描述以下: 服務器
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」表達式配置的結束有效時間。
啓動一個定時器,當時間到達則中止任務調度。