通過SchedulerX可以管理定時調度任務、查詢任務執行記錄和作業記錄。本文介紹SchedulerX調度、執行和營運三個方面的功能。
定時調度
Crontab
支援Unix Crontab運算式,不支援秒層級調度。更多資訊,請參見Cron。
Fixed rate
Crontab必須被60整除,不支援其它數量級時間間隔的任務,例如cron不支援每隔40分鐘運行一次的定時任務。Fixed rate專門用來做定期輪詢,運算式簡單,不支援秒層級調度。更多資訊,請參見Fixed rate。
Second delay
適用於對即時性要求比較高的業務,例如執行間隔為10秒的定時調度任務。Second delay支援秒層級調度。更多資訊,請參見Second delay。
日曆
支援多種日曆,您也可以自訂匯入日曆。常見的使用情境包括金融業務情境。例如,在每個交易日執行定時任務。
時區
適用於跨國業務,如需要在每個國家所在時區執行定時任務。
資料時間
SchedulerX可以處理具有資料狀態的任務。建立任務時支援填寫資料位移。例如,某個任務是每天00:30運行,但實際上要處理上一天的資料,就可以向前位移一個小時。已耗用時間不變,執行的時候通過
context.getDataTime()獲得的即為前一天23:30。
建立定時調度任務的操作步驟,請參見建立調度任務。
調度任務編排
支援可拖拽的工作流程DAG(Directed Acyclic Graph)進行任務編排,操作簡單,前端直接拖拽即可。詳細的任務狀態圖能讓您直觀地查看並排查下遊任務未執行的原因。具體操作,請參見建立工作流程。

多種調度任務類型
在定時調度和工作流程調度中支援基於多語言的多種任務類型。
Java
針對Java應用,依賴Java SDK接入,運行Java應用中的某個方法。更多資訊,請參見Java任務。
指令碼任務
線上編寫指令碼運行,支援Shell、Python等指令碼。更多資訊,請參見指令碼任務。
Golang
針對Go應用依賴Go SDK接入,運行Go應用中的某個任務。更多資訊,請參見Golang任務。
XXL-JOB
相容xxl-job任務,無需修改代碼即可託管xxl-job任務。更多資訊,請參見XxlJob任務。
DataWorks
整合阿里雲DataWorks任務,可以在工作流程中引入DataWorks任務和其他任務做編排。更多資訊,請參見DataWorks任務。
Spring
相容Spring @Scheduled註解,無需修改代碼即可託管Spring定時任務。更多資訊,請參見Spring任務。
Http
http serverless:無需接入用戶端,通過暴露一個公網網域名稱來進行任務調度。更多資訊,請參見HTTP任務(Serverless)。
http agent:需要在VPC叢集內接入一個schedulerxAgent,可以通過內部網域名稱或者IP來調度。
K8s
支援K8s指令碼任務,也相容原生K8s Job、Cron Job。更多資訊,請參見K8s任務。
分散式運算
提供簡單、易用的分布式編程模型,支援進行巨量資料批處理。
單機
隨機挑選一台機器執行。更多資訊,請參見單機。
廣播
所有機器同時執行且等待全部結束。更多資訊,請參見廣播。
Map模型
類似於Hadoop MapReduce裡的Map。只要實現一個Map方法,簡單幾行代碼就可以將海量資料分布式到多台機器上執行。更多資訊,請參見Map模型。
MapReduce模型
MapReduce模型是Map模型的擴充,廢棄了postProcess方法,新增了Reduce介面。所有子任務完成後會執行Reduce方法,可以在Reduce方法中返回該任務執行個體的執行結果或者回調業務。更多資訊,請參見MapReduce模型。
分區運行
類似Elastic-Job模型,控制台配置分區參數,可以將分區平均分給多個用戶端執行,支援多語言版本。更多資訊,請參見多語言版本分區模型。
失敗自動重試
執行個體失敗自動重試
在任務管理的進階配置中,可以配置執行個體失敗重試次數和稍候再試,例如,設定重試3次,每次間隔30秒。如果重試3次仍舊失敗,該執行個體的狀態才會變為失敗,並發送警示。
子任務失敗自動重試
如果是分布式任務(分區模型或MapReduce模型),子任務也支援失敗自動重試和稍候再試,同樣支援通過任務管理的進階配置進行配置。
多種流控手段
執行個體並發數
任務層級流控,表示一個任務同時最多運行多少個執行個體,預設為1,即上一次跑完才能跑下一次。
單機子任務並發數
分布式任務流控,可以控制每台機器同時運行子任務的數量。
全域子任務並發數
分布式任務流控,當機器數量較多時,單機子任務並發數流量比較大。分布式任務可以選擇拉模型,所有計算節點向master節點拉取子任務,控制全域最多同時運行多少子任務。
任務優先順序隊列
應用層級的流控,一個應用同時最多運行多少個任務。
企業可觀測能力
SchedulerX擁有豐富的可視化能力,例如:
使用者大盤

任務歷史執行記錄

任務作業記錄

任務運行堆棧

任務的鏈路追蹤。更多資訊,請參見如何接入鏈路追蹤。

任務操作記錄

強大的營運能力
啟用或禁用任務
可以通過控制台動態啟用、禁用任務。
原地重跑
任務失敗後,修改完代碼並發布後,可以立即重新執行。
標記成功
任務失敗,如果後台將資料處理修正,重新執行又需要幾個小時,可以直接將任務標記為成功。
停止任務
實現JobProcessor的kill()介面,您就可以在前端停止正在啟動並執行任務,甚至子任務。
重刷資料
任務具有資料時間,也必然需要重刷資料。例如,一個工作流程最終產生一個報表,但是業務發生變更(新增一個欄位),或者發現上一個月的資料存在錯誤,那麼就需要重刷過去一個月的資料。通過重刷資料功能,可以重刷某些任務或工作流程的資料(只支援天層級),每個執行個體都是不同的資料時間。
警示監控
警示類型:失敗警示、逾時警示、無可用機器警示、成功通知。
警示連絡人群組。
警示歷史。
警示方式:簡訊、電話、郵件、webhook。