背景
不管是互聯網應用或者企業級應用,都充斥着大量的批處理任務。經常須要一些任務調度系統幫助開發者解決問題。隨着微服務化架構的逐步演進,單體架構逐漸演變爲分佈式、微服務架構。在此的背景下,不少原先的任務調度平臺已經不能知足業務系統的需求。因而出現了一些基於分佈式的任務調度平臺。這些平臺各有其特色,但各有不足之處,好比不支持任務編排、與業務高耦合、不支持跨平臺等問題。很是不符合新一代微服務架構的需求,所以宜信公司開發了微服務任務調度平臺(SIA-TASK)。git
SIA是宜信公司基礎開發平臺Simple is Awesome的簡稱,SIA-TASK(微服務任務調度平臺)是其中的一項重要產品,SIA-TASK契合當前微服務架構模式,具備跨平臺,可編排,高可用,無侵入,一致性,異步並行,動態擴展,實時監控等特色。github
項目簡介
SIA-TASK是任務調度的一體式解決方案。對任務進行元數據採集,而後進行任務可視化編排,最終進行任務調度,而且對任務採起全流程監控,簡單易用。對業務徹底無侵入,經過簡單靈活的配置便可生成符合預期的任務調度模型。sql
SIA-TASK借鑑微服務的設計思想,獲取分佈在每一個任務執行器上的任務元數據,上傳到任務註冊中心。利用在線方式進行任務編排,可動態修改任務時鐘,採用HTTP做爲任務調度協議,統一使用JSON數據格式,由調度中心進行時鐘解析,執行任務流程,進行任務通知。多線程
關鍵術語
- 任務(Task): 基本執行單元,執行器對外暴露的一個HTTP調用接口;
- 做業(Job): 由一個或者多個存在相互邏輯關係(串行/並行)的任務組成,任務調度中心調度的最小單位;
- 計劃(Plan): 由若干個順序執行的做業組成,每一個做業都有本身的執行週期,計劃沒有執行週期;
- 任務調度中心(Scheduler): 根據每一個的做業的執行週期進行調度,即按照計劃、做業、任務的邏輯進行HTTP請求;
- 任務編排中心(Config): 編排中心使用任務來建立計劃和做業;
- 任務執行器(Executer): 接收HTTP請求進行業務邏輯的執行;
- Hunter:Spring項目擴展包,負責執行器中的任務抓取,上傳註冊中心,業務可依賴該組件進行Task編寫。
微服務任務調度平臺的特性
- 基於註解自動抓取任務,在暴露成HTTP服務的方法上加入@OnlineTask註解,@OnlineTask會自動抓取方法所在的IP地址,端口,請求路徑,請求方法,請求參數格式等信息上傳到任務註冊中心(zookeeper),並同步寫入持久化存儲中,此方法即任務;
- 基於註解無侵入多線程控制,單一任務實例必須保持單線程運行,任務調度框架自動攔截@OnlineTask註解進行單線程運行控制,保持在一個任務運行時不會被再次調度。並且整個控制過程對開發者徹底無感知。
- 調度器自適應任務分配,任務執行過程當中出現失敗,異常時。能夠根據任務定製的策略進行多點從新喚醒任務,保證任務的不間斷執行。
- 高度靈活任務編排模式,SIA-TASK的設計思想是以任務爲原子,把多個任務按照執行的關係組合起來造成一個做業。同時運行時分爲任務調度中心和任務編排中心,使得做業的調度和做業的編排分隔開來,互不影響。在咱們須要調整做業的流程時,只須要在編排中心進行處理便可。同時編排中心支持任務按照串行,並行,分支等方式組織關係。在相同任務不一樣任務實例時,也支持多種調度方式進行處理。
微服務任務調度平臺設計
SIA-TASK主要分爲五個部分:架構
- 任務執行器
- 任務調度中心
- 任務編排中心
- 任務註冊中心(zookeeper)
- 持久存儲(Mysql)
SIA-TASK的主要運行邏輯:框架
- 經過註解抓取任務執行器中的任務上報到任務註冊中心
- 任務編排中心從任務註冊中心獲取數據進行編排保存入持久化存儲
- 任務調度中心從持久化存儲獲取調度信息
- 任務調度中心按照調度邏輯訪問任務執行器
UI預覽
首頁提供多維度監控異步
- 調度器信息:展現調度器信息(負載能力,預警值),以及做業分佈狀況。
- 調度信息:展現調度中心觸發的調度次數,做業、任務多維度調度統計。
- 對接項目統計:對使用項目的系統進行統計,做業個數,任務個數等等。
調度監控提供對已提交的做業進行實時監控展現。分佈式
- 做業狀態實時監控:以項目組爲單位面板,展現做業運行時狀態。
- 實時日誌關聯:能夠經過塗色狀態圖標進行日誌實時關聯展現。
任務管理:提供任務元數據的相關操做微服務
- 任務元數據錄入:手動模式的任務,可在此進行錄入。
- 任務連通性測試:提供任務連通性功能測試。
- 任務元數據其餘操做:修改,刪除。
Job管理:提供做業相關操做測試
- 任務編排:進行做業的編排。
- 發佈做業: 做業的建立,修改,以及發佈。
- 級聯設置:提供存在時間依賴的做業設置。
日誌管理
- 本地日誌:日誌界面簡潔,查詢快速;日誌提供7天的調度日誌,以供快速查詢。
開源地址
做者:宜信開發平臺負責人/資深架構師梁鑫