本發(fā)明涉及電子信息技術(shù),更具體地,涉及一種確定任務(wù)調(diào)度時(shí)間的方法、確定任務(wù)執(zhí)行時(shí)間的方法和設(shè)備。
背景技術(shù):
任務(wù)調(diào)度是操作系統(tǒng)、數(shù)據(jù)庫(kù)管理中常見的運(yùn)行機(jī)制。在任務(wù)調(diào)度中,舉例來(lái)說(shuō),比較常用的方式是在linux系統(tǒng)下采用crontab的方式,定時(shí)調(diào)度可執(zhí)行任務(wù),例如,crontab的基本格式是基本格式:
* * * * * command
分 時(shí) 日 月 周 命令
第1列表示分鐘1~59每分鐘用*或者*/1表示
第2列表示小時(shí)1~23(0表示0點(diǎn))
第3列表示日期1~31
第4列表示月份1~12
第5列標(biāo)識(shí)號(hào)星期0~6(0表示星期天)
第6列要運(yùn)行的命令
類似的任務(wù)調(diào)度中所存在的問題是如果多個(gè)任務(wù)之間存在先后執(zhí)行的數(shù)據(jù)依賴關(guān)系,特別是在分布式架構(gòu)中,任務(wù)由不同的實(shí)體來(lái)調(diào)度和之行,現(xiàn)有技術(shù)只能通過(guò)時(shí)間的先后順序來(lái)保證任務(wù)之間的調(diào)度順序,這很容易導(dǎo)致調(diào)度混亂。如果任務(wù)失敗,則很難讓其依賴任務(wù)不執(zhí)行。而且對(duì)于復(fù)雜的調(diào)度時(shí)間依賴幾乎無(wú)法實(shí)現(xiàn),比如調(diào)度時(shí)間是8,96,18***(每天6:08,6:09,18:08,18:09執(zhí)行一次)的任務(wù)依賴于調(diào)度時(shí)間是1010,20***(每天10:10,20:10各執(zhí)行一次)的任務(wù),則根據(jù)crontab幾乎無(wú)法正確調(diào)度。
進(jìn)一步,對(duì)于交叉依賴任務(wù),crontab更是束手無(wú)策,如圖12所示, Task2依賴流水線Pipeline1的Task1(調(diào)度時(shí)間每小時(shí)30分),同時(shí)依賴流水線Pipeline2的任務(wù)Task5(調(diào)度時(shí)間是每小時(shí)10分),但是流水線Pipeline2的Task4依賴流水線Pipeline1的Task3,流水線Pipeline2的Task5又依賴于Task4,這就導(dǎo)致Task2的依賴是交叉依賴,那么Task2無(wú)法在傳統(tǒng)crontab機(jī)制中實(shí)現(xiàn)正確的調(diào)度。
本發(fā)明的發(fā)明人認(rèn)識(shí)到,任務(wù)調(diào)度、特別是crontab任務(wù)的調(diào)度中,會(huì)出現(xiàn)任務(wù)之間由于交叉依賴或者復(fù)雜依賴所導(dǎo)致的無(wú)法正確調(diào)度的情況,而這一問題在現(xiàn)有技術(shù)中從未得到解決,因此亟需提出一種任務(wù)的調(diào)度時(shí)間的確定方法和裝置從而解決這一問題。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明的第一個(gè)方面,提供一種用于確定任務(wù)調(diào)度時(shí)間的方法,包括:判斷第一任務(wù)與第二任務(wù)之間的依賴關(guān)系;當(dāng)在所述判斷依賴關(guān)系的步驟中確定第一任務(wù)依賴于第二任務(wù)時(shí):判斷所述第一任務(wù)與第二任務(wù)的調(diào)度時(shí)間粒度的關(guān)系;以及當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度不等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí),以所述第一任務(wù)與第二任務(wù)中調(diào)度時(shí)間粒度較粗者的調(diào)度時(shí)間調(diào)度所述第一任務(wù);當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí):判斷所述第一任務(wù)與第二任務(wù)的首次調(diào)度時(shí)間的關(guān)系;以及以所述第一任務(wù)與第二任務(wù)中首次調(diào)度時(shí)間較晚者的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。
優(yōu)選地,所述方法還包括:在調(diào)度所述第一任務(wù)前,判斷所述第二任務(wù)是否執(zhí)行成功的步驟。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以第一和第二任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
根據(jù)本發(fā)明的第二個(gè)方面,提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行前述的方法。
根據(jù)本發(fā)明的第三個(gè)方面,提供一種用于確定任務(wù)執(zhí)行時(shí)間的方法, 包括:根據(jù)本任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算本任務(wù)的首次執(zhí)行時(shí)間;獲取本任務(wù)所直接或間接依賴的其他任務(wù)各自的首次執(zhí)行時(shí)間和該其他任務(wù)各自的調(diào)度時(shí)間粒度;判斷所述本任務(wù)的調(diào)度時(shí)間粒度與所述其他任務(wù)各自的調(diào)度時(shí)間粒度的關(guān)系,以及判斷所述本任務(wù)的首次執(zhí)行時(shí)間與其他任務(wù)的各自的首次執(zhí)行時(shí)間的關(guān)系,以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述本任務(wù)的執(zhí)行時(shí)間。
優(yōu)選地,其中:所述獲取本任務(wù)所依賴的其他任務(wù)的各首次執(zhí)行時(shí)間的步驟包括根據(jù)所述其他任務(wù)各自的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算其他任務(wù)的各自的首次執(zhí)行時(shí)間。
優(yōu)選地,所述方法還包括:在執(zhí)行本任務(wù)前,判斷所述本任務(wù)所依賴的其他任務(wù)是否分別執(zhí)行成功的步驟。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
優(yōu)選地,所述方法還包括:將所計(jì)算的本任務(wù)的首次執(zhí)行時(shí)間和本任務(wù)的調(diào)度時(shí)間粒度通知給依賴于本任務(wù)的其他任務(wù)的步驟。
根據(jù)本發(fā)明的第四個(gè)方面,提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行前述的方法。
根據(jù)本發(fā)明的第五方面,提供一種為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的方法,在所述網(wǎng)絡(luò)中包括多個(gè)任務(wù)流水線,每個(gè)任務(wù)流水線包括起始節(jié)點(diǎn)任務(wù)和依賴于所述起始節(jié)點(diǎn)任務(wù)的一個(gè)或多個(gè)其他任務(wù),所述任務(wù)流水線內(nèi)的任務(wù)具有相同的調(diào)度時(shí)間和調(diào)度時(shí)間粒度,包括:
用于確定各個(gè)流水線內(nèi)的任務(wù)之間的依賴關(guān)系,以及流水線之間的任務(wù)的依賴關(guān)系的步驟;
用于根據(jù)各流水線內(nèi)任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間的步驟;
用于將所確定的流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間和流水線內(nèi)任務(wù)的調(diào)度時(shí)間粒度分別逐級(jí)發(fā)送給直接或間接依賴于流水線內(nèi)各個(gè)任務(wù)的其他流水 線中的任務(wù)的步驟;
用于為每個(gè)任務(wù),判斷該任務(wù)的調(diào)度時(shí)間粒度和所獲取的任務(wù)的調(diào)度時(shí)間粒度之間的關(guān)系、以及判斷該任務(wù)的首次執(zhí)行時(shí)間與所獲取的任務(wù)的首次執(zhí)行時(shí)間的關(guān)系的步驟;以及
用于以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述該任務(wù)的執(zhí)行時(shí)間的步驟。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
根據(jù)本發(fā)明的第六個(gè)方面,提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行前述的方法。
根據(jù)本發(fā)明的第七個(gè)方面,提供一種用于確定任務(wù)調(diào)度時(shí)間的設(shè)備,包括:
第一判斷裝置,用于判斷第一任務(wù)與第二任務(wù)之間的依賴關(guān)系;
第二判斷裝置,用于當(dāng)在所述第一判斷裝置確定第一任務(wù)依賴于第二任務(wù)時(shí),判斷所述第一任務(wù)與第二任務(wù)的調(diào)度時(shí)間粒度的關(guān)系,當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度不等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí)將判斷結(jié)果發(fā)送給調(diào)度裝置,以及當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí),判斷所述第一任務(wù)與第二任務(wù)的首次調(diào)度時(shí)間的關(guān)系,并將判斷結(jié)果發(fā)送給調(diào)度裝置;
調(diào)度裝置,用于當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度不等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí)以所述第一任務(wù)與第二任務(wù)中調(diào)度時(shí)間粒度較粗者的調(diào)度時(shí)間調(diào)度所述第一任務(wù),以及用于當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí),以所述第一任務(wù)與第二任務(wù)中首次調(diào)度時(shí)間較晚者的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。
優(yōu)選地,所述設(shè)備還包括:
第三判斷裝置,用于在調(diào)度所述第一任務(wù)前,判斷所述第二任務(wù)是否執(zhí)行成功。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
根據(jù)本發(fā)明的第八個(gè)方面,提供一種用于確定任務(wù)執(zhí)行時(shí)間的設(shè)備,包括:
本任務(wù)信息獲取裝置,用于根據(jù)本任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算本任務(wù)的首次執(zhí)行時(shí)間;
依賴任務(wù)信息獲取裝置,用于獲取本任務(wù)所直接或間接依賴的其他任務(wù)各自的首次執(zhí)行時(shí)間和該其他任務(wù)各自的調(diào)度時(shí)間粒度;
判斷裝置,用于判斷所述本任務(wù)的調(diào)度時(shí)間粒度與所述其他任務(wù)各自的調(diào)度時(shí)間粒度的關(guān)系,以及判斷所述本任務(wù)的首次執(zhí)行時(shí)間與其他任務(wù)的各自的首次執(zhí)行時(shí)間的關(guān)系;
調(diào)度裝置,用于以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述本任務(wù)的執(zhí)行時(shí)間。
優(yōu)選地,其中:依賴任務(wù)信息獲取裝置,用于根據(jù)所述其他任務(wù)各自的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算其他任務(wù)的各自的首次執(zhí)行時(shí)間。
優(yōu)選地,所述設(shè)備還包括:用于判斷在執(zhí)行本任務(wù)前,所述本任務(wù)所依賴的其他任務(wù)是否分別執(zhí)行成功的裝置。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
優(yōu)選地,所述設(shè)備還包括:通知裝置,用于將所計(jì)算的本任務(wù)的首次執(zhí)行時(shí)間和本任務(wù)的調(diào)度時(shí)間粒度通知給依賴于本任務(wù)的其他任務(wù)。
根據(jù)本發(fā)明的第九個(gè)方面,提供一種為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的設(shè)備,在所述網(wǎng)絡(luò)中包括多個(gè)任務(wù)流水線,每個(gè)任務(wù)流水線包括起始節(jié)點(diǎn)任務(wù)和依賴于所述起始節(jié)點(diǎn)任務(wù)的一個(gè)或多個(gè)其他任務(wù),所述任務(wù)流水線內(nèi)的任務(wù)具有相同的調(diào)度時(shí)間和調(diào)度時(shí)間粒度,包括:
用于確定各個(gè)流水線內(nèi)的任務(wù)之間的依賴關(guān)系,以及流水線之間的任務(wù)的依賴關(guān)系的裝置;
用于根據(jù)各流水線內(nèi)任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間的裝置;
用于將所確定的流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間和流水線內(nèi)任務(wù)的調(diào)度時(shí)間粒度分別逐級(jí)發(fā)送給直接或間接依賴于流水線內(nèi)各個(gè)任務(wù)的其他流水線中的任務(wù)的裝置;
用于為每個(gè)任務(wù),判斷該任務(wù)的調(diào)度時(shí)間粒度和所獲取的任務(wù)的調(diào)度時(shí)間粒度之間的關(guān)系、以及判斷該任務(wù)的首次執(zhí)行時(shí)間與所獲取的任務(wù)的首次執(zhí)行時(shí)間的關(guān)系的裝置;以及
用于以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述該任務(wù)的執(zhí)行時(shí)間的裝置。
優(yōu)選地,其中:所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
本發(fā)明的發(fā)明人發(fā)現(xiàn),在現(xiàn)有技術(shù)中,尚未有技術(shù)方案能夠解決針對(duì)任務(wù)調(diào)度、特別是crontab任務(wù)的調(diào)度中由于交叉依賴或者復(fù)雜依賴所導(dǎo)致的無(wú)法正確調(diào)度的缺陷。因此,本發(fā)明所要實(shí)現(xiàn)的技術(shù)任務(wù)或者所要解決的技術(shù)問題是本領(lǐng)域技術(shù)人員從未想到的或者沒有預(yù)期到的,故本發(fā)明是一種新的技術(shù)方案。
另外,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,盡管現(xiàn)有技術(shù)中存在許多問題,但是,本發(fā)明的每個(gè)實(shí)施例或權(quán)利要求的技術(shù)方案可以僅在一個(gè)或幾個(gè)方面進(jìn)行改進(jìn),而不必同時(shí)解決現(xiàn)有技術(shù)中或者背景技術(shù)中列出的全部技術(shù)問題。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對(duì)于一個(gè)權(quán)利要求中沒有提到的內(nèi)容不應(yīng)當(dāng)作為對(duì)于該權(quán)利要求的限制。
通過(guò)以下參照附圖對(duì)本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會(huì)變得清楚。
附圖說(shuō)明
被結(jié)合在說(shuō)明書中并構(gòu)成說(shuō)明書的一部分的附圖示出了本發(fā)明的實(shí)施例,并且連同其說(shuō)明一起用于解釋本發(fā)明的原理。
圖1示出了根據(jù)本發(fā)明第一實(shí)施例的用于確定任務(wù)調(diào)度時(shí)間的方法的流程圖。
圖2根據(jù)本發(fā)明的第二實(shí)施例的設(shè)備200的框圖。
圖3示出了根據(jù)本發(fā)明的第三實(shí)施例的設(shè)備200原理圖。
圖4是根據(jù)本發(fā)明的第四實(shí)施例的用于確定任務(wù)執(zhí)行時(shí)間的方法的流程圖。
圖5是根據(jù)本發(fā)明的第五實(shí)施例的設(shè)備500的框圖。
圖6是根據(jù)本發(fā)明的第七實(shí)施例的用于為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的方法的流程圖。
圖7是根據(jù)本發(fā)明的第七實(shí)施例的流水線任務(wù)依賴關(guān)系圖。
圖8-10是根據(jù)本發(fā)明的第七實(shí)施例的網(wǎng)絡(luò)流節(jié)點(diǎn)流水線任務(wù)依賴關(guān)系圖。
圖11是根據(jù)本發(fā)明的第八實(shí)施例的設(shè)備1100的框圖。
圖12是根據(jù)現(xiàn)有技術(shù)中任務(wù)依賴關(guān)系的例子的示意圖。
具體實(shí)施方式
現(xiàn)在將參照附圖來(lái)詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說(shuō)明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說(shuō)明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說(shuō)明書的一部分。
在這里示出和討論的所有例子中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它例子可以具有不同的值。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。
<定義>
在詳細(xì)描述本發(fā)明的實(shí)施例前,需要對(duì)根據(jù)本發(fā)明各實(shí)施例所使用的術(shù)語(yǔ)進(jìn)行定義,所述定義適用于根據(jù)本發(fā)明的各實(shí)施例及附隨的權(quán)利要求。
1.任務(wù)之間的依賴關(guān)系:是指不同任務(wù)之間的相互關(guān)系,舉例來(lái)說(shuō)如果任務(wù)b的執(zhí)行和完成會(huì)影響到任務(wù)a的開始時(shí)間,那么任務(wù)a的調(diào)度就依賴于任務(wù)b的調(diào)度,也就是任務(wù)b為任務(wù)a所依賴的任務(wù)。
2.任務(wù)調(diào)度時(shí)間粒度:是指在單位調(diào)度時(shí)間內(nèi)調(diào)度任務(wù)的數(shù)量。舉例來(lái)說(shuō),在單位時(shí)間1天內(nèi),任務(wù)a的調(diào)度時(shí)間為每天8點(diǎn),則任務(wù)a的調(diào)度時(shí)間粒度為1,任務(wù)b的調(diào)度時(shí)間為每個(gè)整點(diǎn)小時(shí),則任務(wù)b的調(diào)度時(shí)間粒度為24。任務(wù)a的調(diào)度時(shí)間粒度(1次)比任務(wù)b的調(diào)度時(shí)間粒度(24次)更粗。
3.任務(wù)的首次調(diào)度時(shí)間:是指任務(wù)格式中所定義的任務(wù)的首次調(diào)度時(shí)間。
4.任務(wù)流水線:由多個(gè)任務(wù)組成的流程,并對(duì)該流水線中的任務(wù)設(shè)置相同的調(diào)度時(shí)間。
5.執(zhí)行時(shí)間:是指任務(wù)啟動(dòng)時(shí)的具體時(shí)間,比如201509301500,即2015年9月30號(hào)15點(diǎn)00分執(zhí)行任務(wù)。
6.直接依賴:是指不同任務(wù)之間存在的直接的、沒有第三方任務(wù)介入的相互關(guān)系。舉例來(lái)說(shuō)如果任務(wù)b的執(zhí)行和完成會(huì)直接影響到任務(wù)a的開始時(shí)間,那么任務(wù)a的調(diào)度就直接依賴于任務(wù)b的調(diào)度,也就是任務(wù)b為任務(wù)a所直接依賴的任務(wù)。
7.間接依賴:是指不同任務(wù)之間存在的間接的、存在一個(gè)或多個(gè)第三方任務(wù)介入的相互關(guān)系。舉例來(lái)說(shuō)如果任務(wù)b的執(zhí)行和完成會(huì)直接影響到任務(wù)a的開始時(shí)間,任務(wù)c的執(zhí)行和完成會(huì)直接影響到任務(wù)b的開始時(shí)間,那么任務(wù)a的調(diào)度就間接依賴于任務(wù)c的調(diào)度,也就是任務(wù)c為任務(wù)a所間接依賴的任務(wù)。
8.任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位:是指以年、月、日、時(shí)或分為單位計(jì)算任務(wù)的調(diào)度時(shí)間粒度。
<實(shí)施例1>
圖1示出了根據(jù)本發(fā)明的實(shí)施例的用于確定任務(wù)調(diào)度時(shí)間的方法的流程圖。
如圖1所示,方法在步驟S101開始。而后,在步驟102,判斷第一任務(wù)與第二任務(wù)之間的依賴關(guān)系。需要說(shuō)明的是,在本實(shí)施例和其他實(shí)施例中出現(xiàn)的第一任務(wù)、第二任務(wù)、任務(wù)a、任務(wù)b等等描述均為闡釋方便而定義,不意在特指某個(gè)、某兩個(gè)或某些任務(wù),根據(jù)本發(fā)明的各種實(shí)施例,所述任務(wù)可以指代任意的任務(wù)。
在步驟S103,判定第一任務(wù)是否依賴于第二任務(wù),如果第一任務(wù)不依賴于第二任務(wù),則根據(jù)步驟S104按照第一任務(wù)的原始調(diào)度時(shí)間調(diào)度所述第一任務(wù)。如果在步驟S103,判定第一任務(wù)依賴于第二任務(wù),那么就需要確定第一任務(wù)以何種機(jī)制進(jìn)行調(diào)度。
在步驟S105,判斷第一任務(wù)與第二任務(wù)的調(diào)度時(shí)間粒度的關(guān)系。如果在步驟S106,判定第一任務(wù)的調(diào)度時(shí)間粒度不等于第二任務(wù)的調(diào)度時(shí)間粒度,以所述第一任務(wù)與第二任務(wù)中調(diào)度時(shí)間粒度較粗者的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。具體來(lái)說(shuō),進(jìn)一步在步驟S107,判斷第一任務(wù)的調(diào)度時(shí)間粒度是否粗于第二任務(wù)的調(diào)度時(shí)間粒度,如果第一任務(wù)的調(diào)度時(shí)間粒度更粗,則在步驟S108,以第一任務(wù)的原始調(diào)度時(shí)間調(diào)度所述第一任務(wù);如果第二任務(wù)的調(diào)度時(shí)間粒度更粗,則在步驟S109,以第二任務(wù)的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。
如果在步驟S106,判定第一任務(wù)的調(diào)度時(shí)間粒度等于第二任務(wù)的調(diào)度時(shí)間粒度,則在步驟S110判斷第一任務(wù)與第二任務(wù)的首次調(diào)度時(shí)間的關(guān)系。如果在步驟S111,判定第一任務(wù)的首次調(diào)度時(shí)間早于第二任務(wù)的首次調(diào)度時(shí)間,則在步驟S113,以第二任務(wù)的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。如果第一任務(wù)的首次調(diào)度時(shí)間不晚于第二任務(wù),則在步驟S112,第一任務(wù)的原始調(diào)度時(shí)間調(diào)度所述第一任務(wù)。
優(yōu)選地,所述方法還包括在調(diào)度所述第一任務(wù)前,判斷所述第二任務(wù)是否執(zhí)行成功的步驟。
更優(yōu)選地,所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位 上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
以上已經(jīng)結(jié)合附圖描述了本發(fā)明的第一實(shí)施例,根據(jù)本實(shí)施例可以將復(fù)雜的依賴關(guān)系通過(guò)所述調(diào)度機(jī)制,使任務(wù)調(diào)度變得簡(jiǎn)單、可行、正確、高效。
<例子1>
根據(jù)本發(fā)明第一實(shí)施例的具體實(shí)例將在下面進(jìn)行描述,在存在依賴關(guān)系的兩個(gè)任務(wù)之間,確定任務(wù)調(diào)度機(jī)制時(shí)遵循粗粒度任務(wù)優(yōu)先級(jí)高于細(xì)粒度任務(wù)優(yōu)先級(jí),粒度相同的任務(wù)第一個(gè)調(diào)度時(shí)間越晚優(yōu)先級(jí)越高的原則。
以crontab任務(wù)調(diào)度為例,調(diào)度時(shí)間是:10****的任務(wù)a其天粒度是24,即每個(gè)小時(shí)10分執(zhí)行一次任務(wù),調(diào)度時(shí)間是:01***的任務(wù)b,其天粒度是1,即每天1:00執(zhí)行一次。
如果任務(wù)b依賴任務(wù)a,那么任務(wù)b的調(diào)度時(shí)間需要在10****和01***之間選擇,根據(jù)本發(fā)明第一實(shí)施例的方法,任務(wù)b的調(diào)度時(shí)間粒度是1比任務(wù)a的調(diào)度時(shí)間粒度24更粗,所以任務(wù)b的調(diào)度時(shí)間選擇01***,即任務(wù)b在檢查到任務(wù)a前一天24個(gè)任務(wù)執(zhí)行成功后,任務(wù)b才調(diào)度。
如果任務(wù)a依賴于任務(wù)b,根據(jù)本發(fā)明第一實(shí)施例的方法,任務(wù)a和任務(wù)b的調(diào)度時(shí)間都是01***,即任務(wù)b執(zhí)行成功后,就立即調(diào)度任務(wù)a,即任務(wù)a的原始調(diào)度時(shí)間無(wú)效。
<例子2>
例子2為更復(fù)雜的時(shí)間調(diào)度,任務(wù)a:0,10,20,30,40,5010,20***,任務(wù)b:0,3010,15,20***,任務(wù)a的粒度為12,而任務(wù)b的粒度為6,兩者本不相同,但在本例中,以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。即以小時(shí)級(jí)別計(jì)算粒度,分鐘級(jí)別不參與粒度計(jì)算,因此,任務(wù)a的粒度為2、任務(wù)b的粒度為3,如果任務(wù)b依賴于任務(wù)a,根據(jù)本發(fā)明第一實(shí)施例的方法,任務(wù)b的調(diào)度時(shí)間將采用任務(wù)a的調(diào)度時(shí)間,即0,10,20,30,40,5010,20***,任務(wù)a不變。
<例子3>
在例子3中,如果任務(wù)a調(diào)度時(shí)間是:10,208,10***,任務(wù)b調(diào)度時(shí)間是:10,209,12***,兩個(gè)的調(diào)度時(shí)間的粒度是相同的。
如果任務(wù)a依賴于任務(wù)b,根據(jù)本發(fā)明第一實(shí)施例的方法,以所述任務(wù)a與任務(wù)b中首次調(diào)度時(shí)間較晚者的調(diào)度時(shí)間調(diào)度任務(wù)a,任務(wù)a的第一個(gè)調(diào)度時(shí)間是8:10,而任務(wù)b的是9:10,則a和b的調(diào)度時(shí)間都是10,209,12***。
如果任務(wù)b依賴于任務(wù)a,根據(jù)本發(fā)明第一實(shí)施例的方法,任務(wù)a,b調(diào)度時(shí)間不變,且任務(wù)b在9:10執(zhí)行的時(shí)候需要檢查a在8:10的任務(wù)是否執(zhí)行成功。
<實(shí)施例2>
以下將根據(jù)附圖描述本發(fā)明的第二實(shí)施例,本實(shí)施例與第一實(shí)施例相同或類似的部分下文將不再贅述。圖2顯示了可以用于實(shí)現(xiàn)本發(fā)明的設(shè)備200,設(shè)備可以是網(wǎng)絡(luò)服務(wù)器、電腦主機(jī)等。如圖2所示,所述設(shè)備200包括:第一判斷裝置201,用于判斷第一任務(wù)與第二任務(wù)之間的依賴關(guān)系;第二判斷裝置202,用于當(dāng)在所述第一判斷裝置201確定第一任務(wù)依賴于第二任務(wù)時(shí),判斷所述第一任務(wù)與第二任務(wù)的調(diào)度時(shí)間粒度的關(guān)系,當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度不等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí)將判斷結(jié)果發(fā)送給調(diào)度裝置203,以及當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí),判斷所述第一任務(wù)與第二任務(wù)的首次調(diào)度時(shí)間的關(guān)系,并將判斷結(jié)果發(fā)送給調(diào)度裝置203;
調(diào)度裝置203,用于當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度不等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí)以所述第一任務(wù)與第二任務(wù)中調(diào)度時(shí)間粒度較粗者的調(diào)度時(shí)間調(diào)度所述第一任務(wù),以及用于當(dāng)所述第一任務(wù)的調(diào)度時(shí)間粒度等于所述第二任務(wù)的調(diào)度時(shí)間粒度時(shí),以所述第一任務(wù)與第二任務(wù)中首次調(diào)度時(shí)間較晚者的調(diào)度時(shí)間調(diào)度所述第一任務(wù)。
優(yōu)選地,所述設(shè)備200還包括第三判斷裝置202,用于在調(diào)度所述第一任務(wù)前,判斷所述第二任務(wù)是否執(zhí)行成功。
<實(shí)施例3>
根據(jù)本發(fā)明的第三實(shí)施例,還提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行圖1所述的方法。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本領(lǐng)域技術(shù)人 員應(yīng)當(dāng)明白,在電子技術(shù)領(lǐng)域,在公開了本發(fā)明的方案的基礎(chǔ)上,可以很容易地根據(jù)需要使用軟件、硬件和/或軟件和硬件的組合來(lái)實(shí)現(xiàn)所述方案。例如,可以通過(guò)指令配置處理器來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將指令存儲(chǔ)在ROM中,并且當(dāng)啟動(dòng)設(shè)備時(shí),將指令從ROM讀取到可編程器件中來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將各個(gè)單元固化到專用器件(例如ASIC)中??梢詫⒏鱾€(gè)單元分成相互獨(dú)立的單元,或者可以將它們合并在一起實(shí)現(xiàn)。所述單元可以通過(guò)上述各種實(shí)現(xiàn)方式中的一種來(lái)實(shí)現(xiàn),或者可以通過(guò)上述各種實(shí)現(xiàn)方式中的兩種或更多種方式的組合來(lái)實(shí)現(xiàn)。
在一個(gè)更加具體的例子中,圖3是顯示可用于實(shí)現(xiàn)本發(fā)明的實(shí)施例的電子設(shè)備200的配置的例子的框圖。
電子設(shè)備200例如可以是網(wǎng)絡(luò)服務(wù)器、電腦主機(jī)等。
如圖3所示,電子設(shè)備200可以包括處理器2010、存儲(chǔ)器2020、接口裝置2030、通信裝置2040、顯示裝置2050、輸入裝置2060、揚(yáng)聲器2070、麥克風(fēng)2080,等等。
處理器2010例如可以是中央處理器CPU、微處理器MCU等。存儲(chǔ)器2020例如包括ROM(只讀存儲(chǔ)器)、RAM(隨機(jī)存取存儲(chǔ)器)、諸如硬盤的非易失性存儲(chǔ)器等。接口裝置2030例如包括USB接口、耳機(jī)接口等。
通信裝置2040例如能夠與非接觸式供電的可編程設(shè)備進(jìn)行通信,例如,是能支持近場(chǎng)通信的裝置。通信裝2040還能夠進(jìn)行有有線或無(wú)線通信。
顯示裝置2050例如是液晶顯示屏。輸入裝置2060例如可以包括觸摸屏、鍵盤等。用戶可以通過(guò)揚(yáng)聲器2070和麥克風(fēng)2080輸入/輸出語(yǔ)音信息。
圖3所示的電子設(shè)備僅是解釋性的,并且決不是為了要限制本發(fā)明、其應(yīng)用或用途。
在這個(gè)實(shí)施例中,所述存儲(chǔ)器2020用于存儲(chǔ)指令,所述指令用于控制所述處理器2010進(jìn)行操作以執(zhí)行圖1所示的方法。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,盡管在圖3中示出了多個(gè)裝置,但是,本發(fā)明可以僅涉及其中的部分裝置,例如,處理器2010和存儲(chǔ)裝置2020等。技術(shù)人員可以根據(jù)本發(fā)明所公開方案設(shè)計(jì)指令。指令如何控制處理器進(jìn)行槽,這是本領(lǐng)域公知, 故在此不再詳細(xì)描述。
<實(shí)施例4>
在第一實(shí)施例中闡釋了在具有依賴關(guān)系的第一任務(wù)與第二任務(wù)間確定任務(wù)調(diào)度時(shí)間的方法,根據(jù)本發(fā)明的第四實(shí)施例中,將針對(duì)如何確定具有交叉或復(fù)雜依賴關(guān)系的多個(gè)任務(wù)的調(diào)度時(shí)間進(jìn)行闡釋。如圖4所示,提供一種用于確定任務(wù)執(zhí)行時(shí)間的方法,包括:
步驟S401,根據(jù)本任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算本任務(wù)的首次執(zhí)行時(shí)間;
步驟S402,獲取本任務(wù)所直接或間接依賴的其他任務(wù)各自的首次執(zhí)行時(shí)間和該其他任務(wù)各自的調(diào)度時(shí)間粒度;
步驟S403,判斷所述本任務(wù)的調(diào)度時(shí)間粒度與所述其他任務(wù)各自的調(diào)度時(shí)間粒度的關(guān)系,以及判斷所述本任務(wù)的首次執(zhí)行時(shí)間與其他任務(wù)的各自的首次執(zhí)行時(shí)間的關(guān)系;
步驟S404,以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述本任務(wù)的執(zhí)行時(shí)間。
優(yōu)選地,其中:所述獲取本任務(wù)所依賴的其他任務(wù)的各首次執(zhí)行時(shí)間的步驟包括根據(jù)所述其他任務(wù)各自的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算其他任務(wù)的各自的首次執(zhí)行時(shí)間。
優(yōu)選地,所述方法還包括在執(zhí)行本任務(wù)前,判斷所述本任務(wù)所依賴的其他任務(wù)是否分別執(zhí)行成功的步驟。
優(yōu)選地,所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
以及,優(yōu)選地,所述方法還包括:將所計(jì)算的本任務(wù)的首次執(zhí)行時(shí)間和本任務(wù)的調(diào)度時(shí)間粒度通知給依賴于本任務(wù)的其他任務(wù)的步驟。
<實(shí)施例5>
以下將根據(jù)附圖描述本發(fā)明的第五實(shí)施例,本實(shí)施例與第四實(shí)施例相同或類似的部分下文將不再贅述。圖5顯示了可以用于實(shí)現(xiàn)本發(fā)明的設(shè)備500,設(shè)備可以是網(wǎng)絡(luò)服務(wù)器、電腦主機(jī)等。如圖5所示,所述設(shè)備500包 括:本任務(wù)信息獲取裝置501,用于根據(jù)本任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算本任務(wù)的首次執(zhí)行時(shí)間;
依賴任務(wù)信息獲取裝置502,用于獲取本任務(wù)所直接或間接依賴的其他任務(wù)各自的首次執(zhí)行時(shí)間和該其他任務(wù)各自的調(diào)度時(shí)間粒度;
判斷裝置503,用于判斷所述本任務(wù)的調(diào)度時(shí)間粒度與所述其他任務(wù)各自的調(diào)度時(shí)間粒度的關(guān)系,以及判斷所述本任務(wù)的首次執(zhí)行時(shí)間與其他任務(wù)的各自的首次執(zhí)行時(shí)間的關(guān)系;
調(diào)度裝置504,用于以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述本任務(wù)的執(zhí)行時(shí)間。
優(yōu)選地,其中所述依賴任務(wù)信息獲取裝置502,用于根據(jù)所述其他任務(wù)各自的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算其他任務(wù)的各自的首次執(zhí)行時(shí)間。
優(yōu)選地,所述設(shè)備500還包括用于判斷在執(zhí)行本任務(wù)前,所述本任務(wù)所依賴的其他任務(wù)是否分別執(zhí)行成功的裝置。
更優(yōu)選地,所述調(diào)度時(shí)間粒度根據(jù)任務(wù)以年、月、日、小時(shí)或分鐘為任務(wù)調(diào)度時(shí)間粒度的計(jì)算單位,僅以該任務(wù)中存在的最粗粒度的計(jì)算單位上的任務(wù)調(diào)度次數(shù)作為該任務(wù)的調(diào)度時(shí)間粒度。
更優(yōu)選地,所述設(shè)備500還包括通知裝置505,用于將所計(jì)算的本任務(wù)的首次執(zhí)行時(shí)間和本任務(wù)的調(diào)度時(shí)間粒度通知給依賴于本任務(wù)的其他任務(wù)。
<實(shí)施例6>
與第三實(shí)施例類似第,根據(jù)本發(fā)明的第六實(shí)施例,還提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行圖4所述的方法。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在電子技術(shù)領(lǐng)域,在公開了本發(fā)明的方案的基礎(chǔ)上,可以很容易地根據(jù)需要使用軟件、硬件和/或軟件和硬件的組合來(lái)實(shí)現(xiàn)所述方案。例如,可以通過(guò)指令配置處理器來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將指令存儲(chǔ)在ROM中,并且當(dāng)啟動(dòng)設(shè)備時(shí),將指令從ROM讀取到可編程器件中來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將各個(gè)單元固化到專用器件(例如ASIC)中。可以將各個(gè)單元分成相互獨(dú)立的單元,或者可以將它 們合并在一起實(shí)現(xiàn)。所述單元可以通過(guò)上述各種實(shí)現(xiàn)方式中的一種來(lái)實(shí)現(xiàn),或者可以通過(guò)上述各種實(shí)現(xiàn)方式中的兩種或更多種方式的組合來(lái)實(shí)現(xiàn)。
<實(shí)施例7>
根據(jù)本發(fā)明的第七實(shí)施例,如圖6所示,提供一種為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的方法,在所述網(wǎng)絡(luò)中包括多個(gè)任務(wù)流水線,每個(gè)任務(wù)流水線包括起始節(jié)點(diǎn)任務(wù)和依賴于所述起始節(jié)點(diǎn)任務(wù)的一個(gè)或多個(gè)其他任務(wù),所述任務(wù)流水線內(nèi)的任務(wù)具有相同的調(diào)度時(shí)間和調(diào)度時(shí)間粒度,網(wǎng)絡(luò)需要解決的問題是,根據(jù)當(dāng)前時(shí)間,確認(rèn)每一個(gè)任務(wù)的正確執(zhí)行時(shí)間。根據(jù)本實(shí)施例的方法:從每一個(gè)有調(diào)度時(shí)間的流水線的起始節(jié)點(diǎn)任務(wù)開始,用調(diào)度時(shí)間根據(jù)當(dāng)前時(shí)間產(chǎn)生的執(zhí)行時(shí)間為數(shù)據(jù)流,均勻的流向其所有下游依賴節(jié)點(diǎn)。包括如下步驟:
S601,確定各個(gè)流水線內(nèi)的任務(wù)之間的依賴關(guān)系,以及流水線之間的任務(wù)的依賴關(guān)系;
S602,根據(jù)各流水線內(nèi)任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間;
S603,將所確定的流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間和流水線內(nèi)任務(wù)的調(diào)度時(shí)間粒度分別逐級(jí)發(fā)送給直接或間接依賴于流水線內(nèi)各個(gè)任務(wù)的其他流水線中的任務(wù);
S604,為每個(gè)任務(wù),判斷該任務(wù)的調(diào)度時(shí)間粒度和所獲取的任務(wù)的調(diào)度時(shí)間粒度之間的關(guān)系、以及判斷該任務(wù)的首次執(zhí)行時(shí)間與所獲取的任務(wù)的首次執(zhí)行時(shí)間的關(guān)系;
S605,以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述該任務(wù)的執(zhí)行時(shí)間。
<例子4>
根據(jù)本發(fā)明第七實(shí)施例的具體實(shí)例將在下面進(jìn)行描述,圖7示出了流水線pipeline 4、2和1及其中的任務(wù)之間的依賴關(guān)系。
流水線Pipeline 4中包括三個(gè)任務(wù)Task 1、2和3,流水線Pipeline 4的調(diào)度時(shí)間是0****。任務(wù)Task2、3依賴于任務(wù)Task1。
流水線Pipeline 2中包括三個(gè)任務(wù)Task 7、8和9,流水線Pipeline 2的 調(diào)度時(shí)間是12***。任務(wù)Task8、9依賴于任務(wù)Task7、任務(wù)Task7依賴于流水線Pipeline 4中的Task3以及任務(wù)Task9依賴于流水線Pipeline 1中的Task6。
流水線Pipeline 1中包括三個(gè)任務(wù)Task 4、5和6,流水線Pipeline 1的調(diào)度時(shí)間是11***。任務(wù)Task5、6依賴于任務(wù)Task4、任務(wù)Task6依賴于流水線Pipeline 2中的Task8。
假定當(dāng)前時(shí)間:2015-09-3002:10:09
第一步,如圖8所示,以Task1為網(wǎng)絡(luò)流起始點(diǎn),調(diào)度時(shí)間是0****,根據(jù)當(dāng)前時(shí)間產(chǎn)生執(zhí)行時(shí)間run_time:201509300200,以Task1為流源,流向其所有下游節(jié)點(diǎn):
第二步,如圖9所示,以Task7為網(wǎng)絡(luò)流起始點(diǎn),調(diào)度時(shí)間是12***,根據(jù)當(dāng)前時(shí)間產(chǎn)生執(zhí)行時(shí)間run_time:201509300201,以Task7為流源,流向其所有下游節(jié)點(diǎn):
第三部,如圖10所示,以Task4為網(wǎng)絡(luò)流起始點(diǎn),調(diào)度時(shí)間是11***,根據(jù)當(dāng)前時(shí)間產(chǎn)生執(zhí)行時(shí)間run_time:201509300101,以Task4為流源,流向其所有下游節(jié)點(diǎn):
通過(guò)三個(gè)獨(dú)立網(wǎng)絡(luò)中的流水線,可以獲得每一個(gè)Task流過(guò)的執(zhí)行時(shí)間列表:
Task1:201509300200(粒度24)
Task2:201509300200(粒度24)
Task3:201509300200(粒度24)
Task4:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)
Task5:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)
Task6:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)
Task7:201509300200(粒度24),201509300201(粒度1)
Task8:201509300200(粒度24),201509300201(粒度1)
Task9:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)
Task1,Task2,Task3的執(zhí)行時(shí)間只有一個(gè),則無(wú)需根據(jù)規(guī)則選擇正確執(zhí)行時(shí)間。Task4,Task5,Task6,Task7,Task8,Task9根據(jù)圖6所述的方法所述粗粒度任務(wù)優(yōu)先級(jí)高于細(xì)粒度,粒度相同則第一個(gè)調(diào)度時(shí)間越大優(yōu)先級(jí)越高,這些任務(wù)選擇執(zhí)行時(shí)間是201509300201。
<實(shí)施例8>
以下將根據(jù)附圖描述本發(fā)明的第八實(shí)施例,本實(shí)施例與第七實(shí)施例相同或類似的部分下文將不再贅述。根據(jù)本發(fā)明的第八實(shí)施例,如圖11所示,提供一種為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的設(shè)備1100,在所述網(wǎng)絡(luò)中包括多個(gè)任務(wù)流水線,每個(gè)任務(wù)流水線包括起始節(jié)點(diǎn)任務(wù)和依賴于所述起始節(jié)點(diǎn)任務(wù)的一個(gè)或多個(gè)其他任務(wù),所述任務(wù)流水線內(nèi)的任務(wù)具有相同的調(diào)度時(shí)間和調(diào)度時(shí)間粒度,包括:
用于確定各個(gè)流水線內(nèi)的任務(wù)之間的依賴關(guān)系,以及流水線之間的任務(wù)的依賴關(guān)系的裝置1101;
用于根據(jù)各流水線內(nèi)任務(wù)的調(diào)度時(shí)間和當(dāng)前時(shí)間計(jì)算流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間的裝置1102;
用于將所確定的流水線內(nèi)任務(wù)的首次執(zhí)行時(shí)間和流水線內(nèi)任務(wù)的調(diào)度時(shí)間粒度分別逐級(jí)發(fā)送給直接或間接依賴于流水線內(nèi)各個(gè)任務(wù)的其他流水線中的任務(wù)的裝置1103;
用于為每個(gè)任務(wù),判斷該任務(wù)的調(diào)度時(shí)間粒度和所獲取的任務(wù)的調(diào)度時(shí)間粒度之間的關(guān)系、以及判斷該任務(wù)的首次執(zhí)行時(shí)間與所獲取的任務(wù)的首次執(zhí)行時(shí)間的關(guān)系的裝置1104;以及
用于以調(diào)度時(shí)間粒度最粗的任務(wù)中首次執(zhí)行時(shí)間最晚的任務(wù)的首次執(zhí)行時(shí)間作為所述該任務(wù)的執(zhí)行時(shí)間的裝置1105。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在電子技術(shù)領(lǐng)域,在公開了本發(fā)明的方案的基礎(chǔ)上,可以很容易地根據(jù)需要使用軟件、硬件和/或軟件和硬件的組合來(lái)實(shí)現(xiàn)所述方案。而且,在網(wǎng)絡(luò)環(huán)境中,雖然本實(shí)施例披露的為在網(wǎng)絡(luò)中的每個(gè)任務(wù)確定任務(wù)執(zhí)行時(shí)間的設(shè)備,但是應(yīng)當(dāng)理解,本實(shí)施例的設(shè)備可 以不必須地表現(xiàn)為一臺(tái)具體的設(shè)備,其可以是在網(wǎng)絡(luò)中分布的不同步驟或不同裝置,由網(wǎng)絡(luò)中的不同節(jié)點(diǎn)來(lái)協(xié)同配合或共同執(zhí)行的軟件、硬件和/或軟件和硬件的組合。
<實(shí)施例9>
與第三實(shí)施例類似地,根據(jù)本發(fā)明的第九實(shí)施例,還提供一種可編程設(shè)備,包括存儲(chǔ)器和處理器,其中,所述存儲(chǔ)器用于存儲(chǔ)指令,所述指令用于控制所述處理器進(jìn)行操作以執(zhí)行圖6所述的方法。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在電子技術(shù)領(lǐng)域,在公開了本發(fā)明的方案的基礎(chǔ)上,可以很容易地根據(jù)需要使用軟件、硬件和/或軟件和硬件的組合來(lái)實(shí)現(xiàn)所述方案。例如,可以通過(guò)指令配置處理器來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將指令存儲(chǔ)在ROM中,并且當(dāng)啟動(dòng)設(shè)備時(shí),將指令從ROM讀取到可編程器件中來(lái)實(shí)現(xiàn)各個(gè)單元。例如,可以將各個(gè)單元固化到專用器件(例如ASIC)中。可以將各個(gè)單元分成相互獨(dú)立的單元,或者可以將它們合并在一起實(shí)現(xiàn)。所述單元可以通過(guò)上述各種實(shí)現(xiàn)方式中的一種來(lái)實(shí)現(xiàn),或者可以通過(guò)上述各種實(shí)現(xiàn)方式中的兩種或更多種方式的組合來(lái)實(shí)現(xiàn)。
通過(guò)本發(fā)明各實(shí)施例的方法和設(shè)備,可以解決分布式調(diào)度系統(tǒng)的核心調(diào)度問題,讓復(fù)雜的依賴關(guān)系通過(guò)調(diào)度,變得簡(jiǎn)單、可行、高效而且正確。
本發(fā)明的設(shè)備和方法可以通過(guò)程序產(chǎn)品體現(xiàn)。程序產(chǎn)品可以包括可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的可讀程序指令。
可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備??勺x存儲(chǔ)介質(zhì)例如可以是――但不限于――電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無(wú)線電波或者其他自由傳播的電磁波、通過(guò)波導(dǎo)或其他傳輸 媒介傳播的電磁波(例如,通過(guò)光纖電纜的光脈沖)、或者通過(guò)電線傳輸?shù)碾娦盘?hào)。
這里所描述的可讀程序指令可以從可讀存儲(chǔ)介質(zhì)下載到各個(gè)電子設(shè)備,或者通過(guò)網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無(wú)線網(wǎng)下載到外部電子設(shè)備或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無(wú)線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)電子設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收可讀程序指令,并轉(zhuǎn)發(fā)該可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的可讀存儲(chǔ)介質(zhì)中。
用于執(zhí)行本發(fā)明操作的程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語(yǔ)言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語(yǔ)言包括面向?qū)ο蟮木幊陶Z(yǔ)言—諸如Smalltalk、C++等,以及常規(guī)的過(guò)程式編程語(yǔ)言—諸如“C”語(yǔ)言或類似的編程語(yǔ)言??勺x程序指令可以完全地在用戶電子設(shè)備上執(zhí)行、部分地在用戶電子設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶電子設(shè)備上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶電子設(shè)備,或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。在一些實(shí)施例中,通過(guò)利用可讀程序指令的狀態(tài)信息來(lái)個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。
這里參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由可讀程序指令實(shí)現(xiàn)。
這些可讀程序指令可以提供給電子設(shè)備的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過(guò)電子設(shè)備的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些可讀程序指令存儲(chǔ)在可讀存儲(chǔ)介質(zhì)中,這些指令使得電子設(shè)備以特定方式工作, 從而,存儲(chǔ)有指令的可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
也可以把可讀程序指令加載到電子設(shè)備上,使得在電子設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生指令實(shí)現(xiàn)的過(guò)程,從而使得在電子設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的裝置和方法的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與指令的組合來(lái)實(shí)現(xiàn)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)公知的是,通過(guò)硬件方式實(shí)現(xiàn)、通過(guò)軟件方式實(shí)現(xiàn)以及通過(guò)軟件和硬件結(jié)合的方式實(shí)現(xiàn)都是等價(jià)的。
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說(shuō)明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說(shuō)明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見的。本文中所用術(shù)語(yǔ)的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。本發(fā)明的范圍由所附權(quán)利要求來(lái)限定。