宜信開源微服務任務排程平臺(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的主要執行邏輯:
- 透過註解抓取任務執行器中的任務上報到任務註冊中心
- 任務編排中心從任務註冊中心獲取資料進行編排儲存入持久化儲存
- 任務排程中心從持久化儲存獲取排程資訊
- 任務排程中心按照排程邏輯訪問任務執行器
UI預覽
首頁提供多維度監控
- 排程器資訊:展示排程器資訊(負載能力,預警值),以及作業分佈情況。
- 排程資訊:展示排程中心觸發的排程次數,作業、任務多維度排程統計。
- 對接專案統計:對使用專案的系統進行統計,作業個數,任務個數等等。
排程監控提供對已提交的作業進行實時監控展示。
- 作業狀態實時監控:以專案組為單位皮膚,展示作業執行時狀態。
- 實時日誌關聯:可以透過塗色狀態圖示進行日誌實時關聯展示。
任務管理:提供任務後設資料的相關操作
- 任務後設資料錄入:手動模式的任務,可在此進行錄入。
- 任務連通性測試:提供任務連通性功能測試。
- 任務後設資料其他操作:修改,刪除。
Job管理:提供作業相關操作
- 任務編排:進行作業的編排。
- 釋出作業: 作業的建立,修改,以及釋出。
- 級聯設定:提供存在時間依賴的作業設定。
日誌管理
- 本地日誌:日誌介面簡潔,查詢快速;日誌提供7天的排程日誌,以供快速查詢。
開源地址
作者:宜信開發平臺負責人/資深架構師梁鑫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2645684/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 宜信微服務任務排程平臺建設實踐微服務
- 宜信微服務任務排程平臺建設實踐|分享實錄微服務
- 開源專案推薦 - 巨鯨任務排程平臺(Spark、Flink)Spark
- 分散式任務排程平臺XXL-JOB分散式
- Spark中資源排程和任務排程Spark
- 面試應該知道的任務排程平臺面試
- 任務排程
- Java 分散式任務排程平臺:PowerJob 快速開始+配置詳解Java分散式
- Airflow 任務排程AI
- Laravel 任務排程Laravel
- 分散式任務排程平臺XXL-JOB快速搭建教程分散式
- 開源分散式任務排程系統就選:DolphinScheduler分散式
- SpringCloud微服務實戰——搭建企業級開發框架(四十二):整合分散式任務排程平臺XXL-JOB,實現定時任務功能SpringGCCloud微服務框架分散式
- 開源公開課丨大資料排程系統 Taier 任務排程介紹大資料AI
- 分散式任務排程分散式
- Spring 指南(排程任務)Spring
- 整合了這個分散式任務排程平臺,真的很爽~~分散式
- laravel框架任務排程(定時執行任務)Laravel框架
- 聊聊PowerJob的任務排程
- 分散式排程任務-ElasticJob分散式AST
- Linux 定時任務排程Linux
- LeetCode 621 任務排程器LeetCode
- Timer和TimerTask 任務排程
- 基於Hyperf開發的任務排程系統.支援任務投遞,DAG任務編排(多個任務使用同一個事務).
- 一個輕量級的分散式定時任務排程平臺-Cloudtask分散式Cloud
- Python任務排程模組APSchedulerPython
- LTS分散式任務排程部署分散式
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- SpringBoot專案接入分散式任務排程平臺xxl-job(2.0.2)說明Spring Boot分散式
- 用來替代 linux crontab 的任務排程平臺,大家都來康康喲Linux
- 宜信開源|漏洞管理平臺『洞察』的設計理念和平臺功能
- 力扣-621. 任務排程器力扣
- Flink - Task 任務排程執行流程
- 621. 任務排程器 (構造)
- 力扣 621. 任務排程器力扣
- 任務排程框架Quartz快速入門!框架quartz
- Spring排程定時任務的方式Spring
- Android 中的定時任務排程Android