1. 程式人生 > >宜信開源微服務任務排程平臺(SIA-TASK)

宜信開源微服務任務排程平臺(SIA-TASK)

 

背景

無論是網際網路應用或者企業級應用,都充斥著大量的批處理任務。常常需要一些任務排程系統幫助開發者解決問題。隨著微服務化架構的逐步演進,單體架構逐漸演變為分散式、微服務架構。在此的背景下,很多原先的任務排程平臺已經不能滿足業務系統的需求。於是出現了一些基於分散式的任務排程平臺。這些平臺各有其特點,但各有不足之處,比如不支援任務編排、與業務高耦合、不支援跨平臺等問題。非常不符合新一代微服務架構的需求,因此宜信公司開發了微服務任務排程平臺(SIA-TASK)。

SIA是宜信公司基礎開發平臺Simple is Awesome的簡稱,SIA-TASK(微服務任務排程平臺)是其中的一項重要產品,SIA-TASK契合當前微服務架構模式,具有跨平臺,可編排,高可用,無侵入,一致性,非同步並行,動態擴充套件,實時監控等特點。

專案簡介

SIA-TASK是任務排程的一體式解決方案。對任務進行元資料採集,然後進行任務視覺化編排,最終進行任務排程,並且對任務採取全流程監控,簡單易用。對業務完全無侵入,通過簡單靈活的配置即可生成符合預期的任務排程模型。

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天的排程日誌,以供快速查詢。

開源地址

  • https://github.com/siaorg/sia-task

作者:宜信開發平臺負責人/資深架構師樑鑫