接上大數據系統之任務調度[1], 記錄一下我寫的一個最簡單的調度系統.
系統結構
job_server.jpg
Trigger 依靠 Server 上的 crontab. 自帶 cron 表達式解析
-
Job Shell 模塊負責跟 Job Server 交互, 本身僅僅是套在任務外面的一個腳本:
- 任務啟動前請求 Job Server 模塊, 詢問本任務的所有前置任務是否都已經成功完成.
- 一旦前置任務都已經成功, 正常啟動本任務
- 如果前置任務還在執行, 進入 for 循環等待
- 如果有前置任務失敗, 直接告知 Job Server 任務由于前置任務失敗而退出
- 任務啟動前請求 Job Server 模塊, 詢問本任務的所有前置任務是否都已經成功完成.
-
Job Server 模塊
- 維護任務的依賴關系數據
- 負責接受 Job Shell 腳本請求, 決定任務是否應該執行
- 負責記錄所有任務的狀態
- 負責根據規則告警
- 提供簡單 UI, 供 Admin 調試
-
代碼部署流程
- 每個開發負責自己任務的代碼部署
- 設置 Server 上的 crontab.
- 在 Job Server 上配置任務的依賴.
整個項目只有幾百行代碼.
本系列完.
-- EOF --