一種任務(wù)調(diào)度方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種任務(wù)調(diào)度方法和系統(tǒng)。
【背景技術(shù)】
[0002]在分布式系統(tǒng)中,往往需要在各終端機(jī)上運(yùn)行不同的任務(wù),因此需要對(duì)各終端機(jī)上的任務(wù)進(jìn)行合理調(diào)度。在Linux系統(tǒng)中,由cron這個(gè)系統(tǒng)服務(wù)來控制計(jì)劃性任務(wù),對(duì)應(yīng)的進(jìn)程為crond。crond可以周期性的執(zhí)行某種任務(wù)或等待處理某些事件,與windows下的計(jì)劃任務(wù)類似,當(dāng)安裝完成Linux操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù)工具,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程,crond進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動(dòng)執(zhí)行該任務(wù)。在系統(tǒng)的/etc目錄下有一個(gè)crontab文件,這個(gè)就是系統(tǒng)任務(wù)調(diào)度的配置文件。而對(duì)于用戶任務(wù)調(diào)度,Linux系統(tǒng)為用戶提供了 crontab工具來創(chuàng)建crontab文件,以實(shí)現(xiàn)定制自己的計(jì)劃任務(wù)。crontab文件的格式十分簡(jiǎn)單,每一行代表一項(xiàng)任務(wù),其中每一行又分為六個(gè)字段,前五個(gè)字段分別為minute (分鐘)、hour(小時(shí))、day(日)、month (月)、week (周),用于設(shè)定任務(wù)執(zhí)行的時(shí)間;最后一個(gè)字段為command (命令),代表要用戶執(zhí)行的命令,可以是系統(tǒng)命令,也可以是用戶編寫的腳本文件。
[0003]然而,crontab文件雖然可以很好地設(shè)定任務(wù)的執(zhí)行時(shí)間和具體操作命令,但是無法向用戶展現(xiàn)任務(wù)當(dāng)前的運(yùn)行狀態(tài),用戶并不能很好地了解到其中某些任務(wù)是否正在成功運(yùn)行,也不便于統(tǒng)計(jì),尤其是在發(fā)生了數(shù)據(jù)迀移的情況下,用戶對(duì)每個(gè)任務(wù)的運(yùn)行狀態(tài)幾乎是一無所知的。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的任務(wù)調(diào)度方法和系統(tǒng)。
[0005]依據(jù)本發(fā)明的一個(gè)方面,提供了一種任務(wù)調(diào)度方法,包括:
[0006]接收任務(wù)配置指令,根據(jù)任務(wù)配置指令在相應(yīng)的終端機(jī)上配置任務(wù)以及保存任務(wù)啟動(dòng)時(shí)間;
[0007]根據(jù)所保存的任務(wù)啟動(dòng)時(shí)間向終端機(jī)發(fā)送任務(wù)啟動(dòng)指令,使得終端機(jī)將相應(yīng)任務(wù)分配到服務(wù)器集群上運(yùn)行;
[0008]從各終端機(jī)獲取各任務(wù)的運(yùn)行狀態(tài)信息并保存到任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中;
[0009]接收任務(wù)狀態(tài)查詢指令,根據(jù)任務(wù)狀態(tài)查詢指令從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中查詢出相應(yīng)的任務(wù)運(yùn)行狀態(tài)信息,并展示任務(wù)運(yùn)行狀態(tài)信息。
[0010]可選地,所述接收任務(wù)配置指令包括:
[0011]提供可視化的任務(wù)配置界面,該任務(wù)配置界面包括任務(wù)上傳接口和任務(wù)配置選項(xiàng);
[0012]通過任務(wù)配置界面上的任務(wù)上傳接口接收用戶上傳的任務(wù);
[0013]通過任務(wù)配置界面上的任務(wù)配置選項(xiàng)接口用戶設(shè)置的任務(wù)配置信息;其中,任務(wù)配置信息包括:用戶配置該任務(wù)的終端機(jī)標(biāo)識(shí)和任務(wù)啟動(dòng)時(shí)間。
[0014]可選地,所述從各終端機(jī)獲取各任務(wù)的運(yùn)行狀態(tài)信息包括:
[0015]從每個(gè)終端機(jī)上獲取該終端機(jī)分配到服務(wù)器集群上運(yùn)行的每個(gè)任務(wù)反饋給該終端機(jī)的各執(zhí)行步驟的運(yùn)行狀態(tài)信息。
[0016]可選地,所述展示任務(wù)運(yùn)行狀態(tài)信息包括:
[0017]根據(jù)任務(wù)運(yùn)行狀態(tài)信息生成任務(wù)運(yùn)行狀態(tài)圖并進(jìn)行展示;
[0018]在所述任務(wù)運(yùn)行狀態(tài)圖中以各節(jié)點(diǎn)表示任務(wù)的各步驟,以及根據(jù)各步驟的執(zhí)行順序關(guān)聯(lián)各節(jié)點(diǎn),并根據(jù)各步驟的運(yùn)行狀態(tài)信息對(duì)各節(jié)點(diǎn)進(jìn)行標(biāo)記。
[0019]可選地,該方法進(jìn)一步包括:
[0020]當(dāng)從終端機(jī)獲取到該終端機(jī)上的一個(gè)任務(wù)中途執(zhí)行失敗的信息時(shí),從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)查詢?cè)撊蝿?wù)的運(yùn)行狀態(tài)信息;
[0021]根據(jù)該任務(wù)的運(yùn)行狀態(tài)信息確定該任務(wù)的執(zhí)行斷點(diǎn)位置;
[0022]向該任務(wù)所在的終端發(fā)送從所述執(zhí)行斷點(diǎn)位置開始執(zhí)行該任務(wù)的指令。
[0023]可選地,該方法進(jìn)一步包括:
[0024]接收任務(wù)執(zhí)行剩余時(shí)間查詢指令,根據(jù)任務(wù)執(zhí)行剩余時(shí)間查詢指令從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中查詢出相應(yīng)的任務(wù)運(yùn)行狀態(tài)信息;
[0025]根據(jù)該任務(wù)運(yùn)行狀態(tài)信息確定該任務(wù)的剩余步驟;
[0026]根據(jù)與該任務(wù)相同或相關(guān)的已執(zhí)行完畢的其他任務(wù)的運(yùn)行狀態(tài)信息,估計(jì)所述剩余步驟執(zhí)行所需的時(shí)間并反饋給查詢方。
[0027]可選地,該方法進(jìn)一步包括:
[0028]定期掃描各終端機(jī),以確認(rèn)與各終端機(jī)之間的通信是否正常。
[0029]可選地,該方法進(jìn)一步包括:
[0030]根據(jù)任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中的各任務(wù)的運(yùn)行狀態(tài)信息進(jìn)行統(tǒng)計(jì)分析,得到服務(wù)器集群的負(fù)載的時(shí)間分布圖。
[0031]可選地,該方法進(jìn)一步包括:
[0032]根據(jù)服務(wù)器集群的負(fù)載的時(shí)間分布圖,確定服務(wù)器集群的負(fù)載小于預(yù)設(shè)值的時(shí)間段;
[0033]在所述時(shí)間段內(nèi),向終端機(jī)發(fā)送啟動(dòng)未強(qiáng)制啟動(dòng)時(shí)間的任務(wù)的指令。
[0034]可選地,該方法進(jìn)一步包括:
[0035]在各終端機(jī)間建立備份關(guān)系;
[0036]對(duì)于一個(gè)終端機(jī),將配置于該終端機(jī)上的任務(wù)同時(shí)配置到該終端機(jī)的備份終端機(jī)上;
[0037]當(dāng)該終端機(jī)故障時(shí),向該終端機(jī)的備份終端機(jī)發(fā)送啟動(dòng)所配置的備份任務(wù)的指令。
[0038]依據(jù)本發(fā)明的另一方面,提供了一種任務(wù)調(diào)度系統(tǒng),包括:
[0039]指令接收單元,適于接收任務(wù)配置指令;以及適于接收任務(wù)狀態(tài)查詢指令;
[0040]配置處理單元,根據(jù)任務(wù)配置指令在相應(yīng)的終端機(jī)上配置任務(wù)以及保存任務(wù)啟動(dòng)時(shí)間;
[0041]調(diào)度處理單元,適于根據(jù)所保存的任務(wù)啟動(dòng)時(shí)間向終端機(jī)發(fā)送任務(wù)啟動(dòng)指令,使得終端機(jī)將相應(yīng)任務(wù)分配到服務(wù)器集群上運(yùn)行;從各終端機(jī)獲取各任務(wù)的運(yùn)行狀態(tài)信息并保存到任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中;
[0042]數(shù)據(jù)庫(kù)單元,適于存儲(chǔ)所述任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù);
[0043]狀態(tài)查詢處理單元,適于根據(jù)任務(wù)狀態(tài)查詢指令從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中查詢出相應(yīng)的任務(wù)運(yùn)行狀態(tài)信息,并展示任務(wù)運(yùn)行狀態(tài)信息。
[0044]可選地,指令接收單元,適于提供可視化的任務(wù)配置界面,該任務(wù)配置界面包括任務(wù)上傳接口和任務(wù)配置選項(xiàng);通過任務(wù)配置界面上的任務(wù)上傳接口接收用戶上傳的任務(wù);通過任務(wù)配置界面上的任務(wù)配置選項(xiàng)接口用戶設(shè)置的任務(wù)配置信息;
[0045]其中,任務(wù)配置信息包括:用戶配置該任務(wù)的終端機(jī)標(biāo)識(shí)和任務(wù)啟動(dòng)時(shí)間。
[0046]可選地,所述調(diào)度處理單元,適于從每個(gè)終端機(jī)上獲取該終端機(jī)分配到服務(wù)器集群上運(yùn)行的每個(gè)任務(wù)反饋給該終端機(jī)的各執(zhí)行步驟的運(yùn)行狀態(tài)信息。
[0047]可選地,所述狀態(tài)查詢處理單元,適于根據(jù)任務(wù)運(yùn)行狀態(tài)信息生成任務(wù)運(yùn)行狀態(tài)圖并進(jìn)行展示;在所述任務(wù)運(yùn)行狀態(tài)圖中以各節(jié)點(diǎn)表示任務(wù)的各步驟,以及根據(jù)各步驟的執(zhí)行順序關(guān)聯(lián)各節(jié)點(diǎn),并根據(jù)各步驟的運(yùn)行狀態(tài)信息對(duì)各節(jié)點(diǎn)進(jìn)行標(biāo)記。
[0048]可選地,所述調(diào)度處理單元,進(jìn)一步適于從終端機(jī)獲取到該終端機(jī)上的一個(gè)任務(wù)中途執(zhí)行失敗的信息時(shí),從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)查詢?cè)撊蝿?wù)的運(yùn)行狀態(tài)信息;根據(jù)該任務(wù)的運(yùn)行狀態(tài)信息確定該任務(wù)的執(zhí)行斷點(diǎn)位置;向該任務(wù)所在的終端發(fā)送從所述執(zhí)行斷點(diǎn)位置開始執(zhí)行該任務(wù)的指令。
[0049]可選地,所述指令接收單元,適于接收任務(wù)執(zhí)行剩余時(shí)間查詢指令;
[0050]所述狀態(tài)查詢處理單元,還適于根據(jù)任務(wù)執(zhí)行剩余時(shí)間查詢指令從任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中查詢出相應(yīng)的任務(wù)運(yùn)行狀態(tài)信息;根據(jù)該任務(wù)運(yùn)行狀態(tài)信息確定該任務(wù)的剩余步驟;根據(jù)與該任務(wù)相同或相關(guān)的已執(zhí)行完畢的其他任務(wù)的運(yùn)行狀態(tài)信息,估計(jì)所述剩余步驟執(zhí)行所需的時(shí)間并反饋給查詢方。
[0051]可選地,所述調(diào)度處理單元,進(jìn)一步適于定期掃描各終端機(jī),以確認(rèn)與各終端機(jī)之間的通信是否正常。
[0052]可選地,該系統(tǒng)進(jìn)一步包括:
[0053]統(tǒng)計(jì)分析單元,適于根據(jù)任務(wù)運(yùn)行狀態(tài)數(shù)據(jù)庫(kù)中的各任務(wù)的運(yùn)行狀態(tài)信息進(jìn)行統(tǒng)計(jì)分析,得到服務(wù)器集群的負(fù)載的時(shí)間分布圖。
[0054]可選地,所述調(diào)度處理單元,適于根據(jù)服務(wù)器集群的負(fù)載的時(shí)間分布圖,確定服務(wù)器集群的負(fù)載小于預(yù)設(shè)值的時(shí)間段;在所述時(shí)間段內(nèi),向終端機(jī)發(fā)送啟動(dòng)未強(qiáng)制啟動(dòng)時(shí)間的任務(wù)的指令。
[