宜信開源微服務任務調度平臺(SIA-TASK)

背景

不管是互聯網應用或者企業級應用,都充斥着大量的批處理任務。經常須要一些任務調度系統幫助開發者解決問題。隨着微服務化架構的逐步演進,單體架構逐漸演變爲分佈式、微服務架構。在此的背景下,不少原先的任務調度平臺已經不能知足業務系統的需求。因而出現了一些基於分佈式的任務調度平臺。這些平臺各有其特色,但各有不足之處,好比不支持任務編排、與業務高耦合、不支持跨平臺等問題。很是不符合新一代微服務架構的需求,所以宜信公司開發了微服務任務調度平臺(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的主要運行邏輯:框架

  1. 經過註解抓取任務執行器中的任務上報到任務註冊中心
  2. 任務編排中心從任務註冊中心獲取數據進行編排保存入持久化存儲
  3. 任務調度中心從持久化存儲獲取調度信息
  4. 任務調度中心按照調度邏輯訪問任務執行器

UI預覽

首頁提供多維度監控異步

  • 調度器信息:展現調度器信息(負載能力,預警值),以及做業分佈狀況。
  • 調度信息:展現調度中心觸發的調度次數,做業、任務多維度調度統計。
  • 對接項目統計:對使用項目的系統進行統計,做業個數,任務個數等等。


調度監控提供對已提交的做業進行實時監控展現。分佈式

  • 做業狀態實時監控:以項目組爲單位面板,展現做業運行時狀態。
  • 實時日誌關聯:能夠經過塗色狀態圖標進行日誌實時關聯展現。


任務管理:提供任務元數據的相關操做微服務

  • 任務元數據錄入:手動模式的任務,可在此進行錄入。
  • 任務連通性測試:提供任務連通性功能測試。
  • 任務元數據其餘操做:修改,刪除。



Job管理:提供做業相關操做測試

  • 任務編排:進行做業的編排。
  • 發佈做業: 做業的建立,修改,以及發佈。
  • 級聯設置:提供存在時間依賴的做業設置。


日誌管理

  • 本地日誌:日誌界面簡潔,查詢快速;日誌提供7天的調度日誌,以供快速查詢。

開源地址

做者:宜信開發平臺負責人/資深架構師梁鑫
相關文章
相關標籤/搜索