產(chǎn)品功能
通過SchedulerX可以管理定時調(diào)度任務(wù)、查詢?nèi)蝿?wù)執(zhí)行記錄和運(yùn)行日志。本文介紹SchedulerX調(diào)度、執(zhí)行和運(yùn)維三個方面的功能。
定時調(diào)度
Crontab
支持Unix Crontab表達(dá)式,不支持秒級別調(diào)度。更多信息,請參見Cron。
Fixed rate
Crontab必須被60整除,不支持其它數(shù)量級時間間隔的任務(wù),例如cron不支持每隔40分鐘運(yùn)行一次的定時任務(wù)。Fixed rate專門用來做定期輪詢,表達(dá)式簡單,不支持秒級別調(diào)度。更多信息,請參見Fixed rate。
Second delay
適用于對實(shí)時性要求比較高的業(yè)務(wù),例如執(zhí)行間隔為10秒的定時調(diào)度任務(wù)。Second delay支持秒級別調(diào)度。更多信息,請參見Second delay。
日歷
支持多種日歷,您也可以自定義導(dǎo)入日歷。常見的使用場景包括金融業(yè)務(wù)場景。例如,在每個交易日執(zhí)行定時任務(wù)。
時區(qū)
適用于跨國業(yè)務(wù),如需要在每個國家所在時區(qū)執(zhí)行定時任務(wù)。
數(shù)據(jù)時間
SchedulerX可以處理具有數(shù)據(jù)狀態(tài)的任務(wù)。創(chuàng)建任務(wù)時支持填寫數(shù)據(jù)偏移。例如,某個任務(wù)是每天00:30運(yùn)行,但實(shí)際上要處理上一天的數(shù)據(jù),就可以向前偏移一個小時。運(yùn)行時間不變,執(zhí)行的時候通過
context.getDataTime()
獲得的即為前一天23:30。
創(chuàng)建定時調(diào)度任務(wù)的操作步驟,請參見創(chuàng)建調(diào)度任務(wù)。
調(diào)度任務(wù)編排
支持可拖拽的工作流DAG(Directed Acyclic Graph)進(jìn)行任務(wù)編排,操作簡單,前端直接拖拽即可。詳細(xì)的任務(wù)狀態(tài)圖能讓您直觀地查看并排查下游任務(wù)未執(zhí)行的原因。具體操作,請參見創(chuàng)建工作流。
多種調(diào)度任務(wù)類型
在定時調(diào)度和工作流調(diào)度中支持基于多語言的多種任務(wù)類型。
Java
針對Java應(yīng)用,依賴Java SDK接入,運(yùn)行Java應(yīng)用中的某個方法。更多信息,請參見Java任務(wù)。
腳本任務(wù)
在線編寫腳本運(yùn)行,支持Shell、Python等腳本。更多信息,請參見腳本任務(wù)。
Golang
針對Go應(yīng)用依賴Go SDK接入,運(yùn)行Go應(yīng)用中的某個任務(wù)。更多信息,請參見Golang任務(wù)。
XXL-JOB
兼容xxl-job任務(wù),無需修改代碼即可托管xxl-job任務(wù)。更多信息,請參見XxlJob任務(wù)。
DataWorks
集成阿里云DataWorks任務(wù),可以在工作流中引入DataWorks任務(wù)和其他任務(wù)做編排。更多信息,請參見DataWorks任務(wù)。
Spring
兼容Spring @Scheduled注解,無需修改代碼即可托管Spring定時任務(wù)。更多信息,請參見Spring任務(wù)。
Http
http serverless:無需接入客戶端,通過暴露一個公網(wǎng)域名來進(jìn)行任務(wù)調(diào)度。更多信息,請參見HTTP任務(wù)(Serverless)。
http agent:需要在VPC集群內(nèi)接入一個schedulerxAgent,可以通過內(nèi)部域名或者IP來調(diào)度。
K8s
支持K8s腳本任務(wù),也兼容原生K8s Job、Cron Job。更多信息,請參見K8s任務(wù)。
分布式計算
提供簡單、易用的分布式編程模型,支持進(jìn)行大數(shù)據(jù)批處理。
單機(jī)
隨機(jī)挑選一臺機(jī)器執(zhí)行。更多信息,請參見單機(jī)。
廣播
所有機(jī)器同時執(zhí)行且等待全部結(jié)束。更多信息,請參見廣播。
Map模型
類似于Hadoop MapReduce里的Map。只要實(shí)現(xiàn)一個Map方法,簡單幾行代碼就可以將海量數(shù)據(jù)分布式到多臺機(jī)器上執(zhí)行。更多信息,請參見Map模型。
MapReduce模型
MapReduce模型是Map模型的擴(kuò)展,廢棄了postProcess方法,新增了Reduce接口。所有子任務(wù)完成后會執(zhí)行Reduce方法,可以在Reduce方法中返回該任務(wù)實(shí)例的執(zhí)行結(jié)果或者回調(diào)業(yè)務(wù)。更多信息,請參見MapReduce模型。
分片運(yùn)行
類似Elastic-Job模型,控制臺配置分片參數(shù),可以將分片平均分給多個客戶端執(zhí)行,支持多語言版本。更多信息,請參見多語言版本分片模型。
失敗自動重試
實(shí)例失敗自動重試
在任務(wù)管理的高級配置中,可以配置實(shí)例失敗重試次數(shù)和重試間隔,例如,設(shè)置重試3次,每次間隔30秒。如果重試3次仍舊失敗,該實(shí)例的狀態(tài)才會變?yōu)槭。l(fā)送報警。
子任務(wù)失敗自動重試
如果是分布式任務(wù)(分片模型或MapReduce模型),子任務(wù)也支持失敗自動重試和重試間隔,同樣支持通過任務(wù)管理的高級配置進(jìn)行配置。
多種流控手段
實(shí)例并發(fā)數(shù)
任務(wù)級別流控,表示一個任務(wù)同時最多運(yùn)行多少個實(shí)例,默認(rèn)為1,即上一次跑完才能跑下一次。
單機(jī)子任務(wù)并發(fā)數(shù)
分布式任務(wù)流控,可以控制每臺機(jī)器同時運(yùn)行子任務(wù)的數(shù)量。
全局子任務(wù)并發(fā)數(shù)
分布式任務(wù)流控,當(dāng)機(jī)器數(shù)量較多時,單機(jī)子任務(wù)并發(fā)數(shù)流量比較大。分布式任務(wù)可以選擇拉模型,所有計算節(jié)點(diǎn)向master節(jié)點(diǎn)拉取子任務(wù),控制全局最多同時運(yùn)行多少子任務(wù)。
任務(wù)優(yōu)先級隊(duì)列
應(yīng)用級別的流控,一個應(yīng)用同時最多運(yùn)行多少個任務(wù)。
企業(yè)可觀測能力
SchedulerX擁有豐富的可視化能力,例如:
用戶大盤
任務(wù)歷史執(zhí)行記錄
任務(wù)運(yùn)行日志
任務(wù)運(yùn)行堆棧
任務(wù)的鏈路追蹤。更多信息,請參見如何接入鏈路追蹤。
任務(wù)操作記錄
強(qiáng)大的運(yùn)維能力
啟用或禁用任務(wù)
可以通過控制臺動態(tài)啟用、禁用任務(wù)。
原地重跑
任務(wù)失敗后,修改完代碼并發(fā)布后,可以立即重新執(zhí)行。
標(biāo)記成功
任務(wù)失敗,如果后臺將數(shù)據(jù)處理修正,重新執(zhí)行又需要幾個小時,可以直接將任務(wù)標(biāo)記為成功。
停止任務(wù)
實(shí)現(xiàn)JobProcessor的kill()接口,您就可以在前端停止正在運(yùn)行的任務(wù),甚至子任務(wù)。
重刷數(shù)據(jù)
任務(wù)具有數(shù)據(jù)時間,也必然需要重刷數(shù)據(jù)。例如,一個工作流最終產(chǎn)生一個報表,但是業(yè)務(wù)發(fā)生變更(新增一個字段),或者發(fā)現(xiàn)上一個月的數(shù)據(jù)存在錯誤,那么就需要重刷過去一個月的數(shù)據(jù)。通過重刷數(shù)據(jù)功能,可以重刷某些任務(wù)或工作流的數(shù)據(jù)(只支持天級別),每個實(shí)例都是不同的數(shù)據(jù)時間。
報警監(jiān)控
報警類型:失敗報警、超時報警、無可用機(jī)器報警、成功通知。
報警聯(lián)系人組。
報警歷史。
報警方式:短信、電話、郵件、webhook。