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