本公開涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種任務(wù)調(diào)度方法、裝置及系統(tǒng)。
背景技術(shù):
相關(guān)技術(shù)中,調(diào)度器可以用于確定待執(zhí)行任務(wù)的執(zhí)行順序。隨著數(shù)據(jù)平臺(tái)的數(shù)據(jù)處理量增加,為了能夠在某些特定時(shí)間段內(nèi)分析特定數(shù)據(jù),往往需要用到大量的定時(shí)任務(wù)。這些定時(shí)任務(wù)至關(guān)重要,需要提高這些定時(shí)任務(wù)的可用性及并發(fā)性。
技術(shù)實(shí)現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問(wèn)題,本公開提供一種任務(wù)調(diào)度方法、裝置及系統(tǒng)。
根據(jù)本公開實(shí)施例的第一方面,提供一種任務(wù)調(diào)度方法,包括:
接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù);
將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列;
將所述第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列;
對(duì)所述第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
對(duì)于上述的方法,在一種可能的實(shí)現(xiàn)方式中,接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),包括:
接收任務(wù)請(qǐng)求,所述任務(wù)請(qǐng)求包括所述待調(diào)度任務(wù)和所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間;
按照所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,存儲(chǔ)所述待調(diào)度任務(wù)。
對(duì)于上述的方法,在一種可能的實(shí)現(xiàn)方式中,將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,包括:
檢測(cè)是否存儲(chǔ)有第一待調(diào)度任務(wù),所述第一待調(diào)度任務(wù)為第二時(shí)間段內(nèi)接收的待調(diào)度任務(wù);
在檢測(cè)到存儲(chǔ)有所述第一待調(diào)度任務(wù)的情況下,按照所述第一待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第一待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
對(duì)于上述的方法,在一種可能的實(shí)現(xiàn)方式中,將所述第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,包括:
檢測(cè)所述第一任務(wù)隊(duì)列中是否存儲(chǔ)有第二待調(diào)度任務(wù),所述第二待調(diào)度任務(wù)為需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù);
在檢測(cè)到所述第一任務(wù)隊(duì)列中存儲(chǔ)有所述第二待調(diào)度任務(wù)的情況下,按照所述第二待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第二待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
對(duì)于上述的方法,在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)未執(zhí)行完成的情況下,禁止將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置;或者
在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)執(zhí)行完成的情況下,允許將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置。
對(duì)于上述的方法,在一種可能的實(shí)現(xiàn)方式中,所述待調(diào)度任務(wù)為待調(diào)度的定時(shí)任務(wù),所述定時(shí)任務(wù)為請(qǐng)求在預(yù)設(shè)時(shí)間開始執(zhí)行或者請(qǐng)求在預(yù)設(shè)時(shí)間獲得執(zhí)行結(jié)果的任務(wù)。
根據(jù)本公開實(shí)施例的第二方面,提供一種任務(wù)調(diào)度裝置,包括:
待調(diào)度任務(wù)存儲(chǔ)模塊,用于接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù);
第一加入模塊,用于將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列;
第二加入模塊,用于將所述第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列;
調(diào)度模塊,用于對(duì)所述第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
對(duì)于上述的裝置,在一種可能的實(shí)現(xiàn)方式中,所述待調(diào)度任務(wù)存儲(chǔ)模塊包括:
任務(wù)請(qǐng)求接收子模塊,用于接收任務(wù)請(qǐng)求,所述任務(wù)請(qǐng)求包括所述待調(diào)度任務(wù)和所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間;
待調(diào)度任務(wù)存儲(chǔ)子模塊,用于按照所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,存儲(chǔ)所述待調(diào)度任務(wù)。
對(duì)于上述的裝置,在一種可能的實(shí)現(xiàn)方式中,所述第一加入模塊包括:
第一待調(diào)度任務(wù)檢測(cè)子模塊,用于檢測(cè)是否存儲(chǔ)有第一待調(diào)度任務(wù),所述第一待調(diào)度任務(wù)為第二時(shí)間段內(nèi)接收的待調(diào)度任務(wù);
第一待調(diào)度任務(wù)加入子模塊,用于在檢測(cè)到存儲(chǔ)有所述第一待調(diào)度任務(wù)的情況下,按照所述第一待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第一待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
對(duì)于上述的裝置,在一種可能的實(shí)現(xiàn)方式中,所述第二加入模塊包括:
第二待調(diào)度任務(wù)檢測(cè)子模塊,用于檢測(cè)所述第一任務(wù)隊(duì)列中是否存儲(chǔ)有第二待調(diào)度任務(wù),所述第二待調(diào)度任務(wù)為需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù);
第二待調(diào)度任務(wù)加入子模塊,用于在檢測(cè)到所述第一任務(wù)隊(duì)列中存儲(chǔ)有所述第二待調(diào)度任務(wù)的情況下,按照所述第二待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第二待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
對(duì)于上述的裝置,在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
禁止調(diào)度模塊,用于在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)未執(zhí)行完成的情況下,禁止將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置;和/或
允許調(diào)度模塊,用于在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)執(zhí)行完成的情況下,允許將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置。
對(duì)于上述的裝置,在一種可能的實(shí)現(xiàn)方式中,所述待調(diào)度任務(wù)為待調(diào)度的定時(shí)任務(wù),所述定時(shí)任務(wù)為請(qǐng)求在預(yù)設(shè)時(shí)間開始執(zhí)行或者請(qǐng)求在預(yù)設(shè)時(shí)間獲得執(zhí)行結(jié)果的任務(wù)。
根據(jù)本公開實(shí)施例的第三方面,提供一種任務(wù)調(diào)度系統(tǒng),包括:
一個(gè)或者多個(gè)任務(wù)調(diào)度裝置,以及多個(gè)任務(wù)執(zhí)行裝置,其中,所述任務(wù)調(diào)度裝置為如上所述的任務(wù)調(diào)度裝置。
根據(jù)本公開實(shí)施例的第四方面,提供一種任務(wù)調(diào)度裝置,包括:
處理器;
用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;
其中,所述處理器被配置為:
接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù);
將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列;
將所述第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列;
對(duì)所述第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:通過(guò)本公開的任務(wù)調(diào)度方法、裝置及系統(tǒng),能夠接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,并將第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)調(diào)度至分布式的任務(wù)執(zhí)行裝置中進(jìn)行執(zhí)行。采用無(wú)中心模式的任務(wù)調(diào)度裝置,能夠支持負(fù)載均衡,且具有較高的可用性、并發(fā)性和實(shí)時(shí)性。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書中并構(gòu)成本說(shuō)明書的一部分,示出了符合本公開的實(shí)施例,并與說(shuō)明書一起用于解釋本公開的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種任務(wù)調(diào)度方法的流程圖。
圖2是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S101的實(shí)現(xiàn)流程圖。
圖3是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S102的實(shí)現(xiàn)流程圖。
圖4是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S103的實(shí)現(xiàn)流程圖。
圖5是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法的實(shí)現(xiàn)流程圖。
圖6是根據(jù)一示例性實(shí)施例示出的一種任務(wù)調(diào)度裝置的框圖。
圖7是根據(jù)一示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度裝置的框圖。
圖8是根據(jù)一示例性實(shí)施例示出的一種用于任務(wù)調(diào)度的裝置1900的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實(shí)施例示出的一種任務(wù)調(diào)度方法的流程圖。該任務(wù)調(diào)度方法可以用于計(jì)算機(jī),在此不作限定。如圖1所示,該任務(wù)調(diào)度方法,可以包括以下步驟。
在步驟S101中,接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)。
在一種可能的實(shí)現(xiàn)方式中,待調(diào)度任務(wù)為待調(diào)度的定時(shí)任務(wù),定時(shí)任務(wù)為請(qǐng)求在預(yù)設(shè)時(shí)間開始執(zhí)行或者請(qǐng)求在預(yù)設(shè)時(shí)間獲得執(zhí)行結(jié)果的任務(wù)。
本實(shí)施例的待調(diào)度任務(wù)可以包括需要任務(wù)調(diào)度裝置調(diào)度給任務(wù)執(zhí)行裝置進(jìn)行執(zhí)行的任務(wù)。其中,待調(diào)度任務(wù)可以由客戶端(Client)發(fā)起。本實(shí)施例不限制待調(diào)度任務(wù)的類型和數(shù)量,例如一個(gè)或者多個(gè)客戶端可以發(fā)起多個(gè)任務(wù)。
作為本實(shí)施例的一個(gè)示例,任務(wù)調(diào)度裝置可以提供一個(gè)或者多個(gè)任務(wù)寫入接口,客戶端通過(guò)調(diào)用任務(wù)寫入接口,從而完成任務(wù)的寫入。
需要說(shuō)明的是,本實(shí)施例不限制客戶端將任務(wù)寫入任務(wù)調(diào)度裝置的方式。舉例而言,在存在多個(gè)任務(wù)調(diào)度裝置接收待調(diào)度任務(wù)的情況下,可以隨機(jī)選擇一個(gè)任務(wù)調(diào)度裝置寫入任務(wù),也可以選擇當(dāng)前空閑的任務(wù)調(diào)度裝置寫入任務(wù),還可以選擇任務(wù)調(diào)度效率最高的任務(wù)調(diào)度裝置寫入任務(wù),對(duì)此不作限制。
任務(wù)調(diào)度裝置可以設(shè)置有存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)的存儲(chǔ)模塊(Job_Storage),例如分布式存儲(chǔ)工具。在任務(wù)調(diào)度裝置接收到待調(diào)度任務(wù)的情況下,可以將該待調(diào)度任務(wù)存儲(chǔ)至存儲(chǔ)模塊。進(jìn)一步地,可以設(shè)置在該待調(diào)度任務(wù)調(diào)度至任務(wù)執(zhí)行裝置(完成調(diào)度)的情況下,刪除存儲(chǔ)模塊中所存儲(chǔ)的該待調(diào)度任務(wù),也可以設(shè)置在該待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列的情況下,刪除存儲(chǔ)模塊中所存儲(chǔ)的該待調(diào)度任務(wù),對(duì)此不作限制。
在步驟S102中,將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
在本實(shí)施例中,任務(wù)調(diào)度裝置最初開始進(jìn)行任務(wù)調(diào)度時(shí),可以生成第一任務(wù)隊(duì)列。其中,第一任務(wù)隊(duì)列可以包括需要任務(wù)調(diào)度裝置進(jìn)行調(diào)度的部分或者全部待調(diào)度任務(wù)。進(jìn)一步地,可以按照第一預(yù)設(shè)頻率對(duì)第一任務(wù)隊(duì)列進(jìn)行更新。
作為本實(shí)施例的一個(gè)示例,可以每間隔一段時(shí)間(例如以第一預(yù)設(shè)頻率)對(duì)存儲(chǔ)模塊進(jìn)行檢測(cè),將存儲(chǔ)模塊中存儲(chǔ)的而第一任務(wù)隊(duì)列中沒(méi)有存儲(chǔ)的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
在步驟S103中,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
在本實(shí)施例中,任務(wù)調(diào)度裝置最初開始進(jìn)行任務(wù)調(diào)度時(shí),可以在已經(jīng)生成的第一任務(wù)隊(duì)列的基礎(chǔ)上生成第二任務(wù)隊(duì)列。第二任務(wù)隊(duì)列可以包括需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)。進(jìn)一步地,可以按照第二預(yù)設(shè)頻率對(duì)第二任務(wù)隊(duì)列進(jìn)行更新。
作為本實(shí)施例的一個(gè)示例,可以通過(guò)定時(shí)器監(jiān)控所述待調(diào)度任務(wù)的請(qǐng)求執(zhí)行時(shí)間,從第一任務(wù)隊(duì)列中選取需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,并可以從第一任務(wù)隊(duì)列中刪除已加入第二任務(wù)隊(duì)列的待調(diào)度任務(wù)。
本實(shí)施例不限制第一時(shí)間段的時(shí)間長(zhǎng)度,在實(shí)際應(yīng)用的過(guò)程中,可以根據(jù)工程需要進(jìn)行設(shè)定。
作為本實(shí)施例的一個(gè)示例,第一時(shí)間段可以根據(jù)當(dāng)前系統(tǒng)時(shí)間以及第一預(yù)設(shè)值確定。例如,當(dāng)前系統(tǒng)時(shí)間為12:00,第一預(yù)設(shè)值為10分鐘,則第一時(shí)間段為12:00至12:10,從而可以將第一任務(wù)隊(duì)列中需要在12:00至12:10中調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
在步驟S104中,對(duì)第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
通過(guò)本實(shí)施例的任務(wù)調(diào)度方法,能夠接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,并將第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)調(diào)度至分布式的任務(wù)執(zhí)行裝置中進(jìn)行執(zhí)行。采用無(wú)中心模式的任務(wù)調(diào)度裝置,能夠支持負(fù)載均衡,且具有較高的可用性、并發(fā)性和實(shí)時(shí)性。
圖2是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S101的實(shí)現(xiàn)流程圖。如圖2所示,接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),可以包括以下步驟。
在步驟S201中,接收任務(wù)請(qǐng)求,任務(wù)請(qǐng)求包括待調(diào)度任務(wù)和待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間。
本實(shí)施例的任務(wù)請(qǐng)求可以由客戶端(Client)發(fā)起。其中,任務(wù)請(qǐng)求可以包括一個(gè)或者多個(gè)待調(diào)度任務(wù)和各項(xiàng)待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí);或者,任務(wù)請(qǐng)求可以包括一個(gè)或者多個(gè)待調(diào)度任務(wù)和各項(xiàng)待調(diào)度任務(wù)對(duì)應(yīng)的請(qǐng)求執(zhí)行時(shí)間;或者,任務(wù)請(qǐng)求可以包括一個(gè)或者多個(gè)待調(diào)度任務(wù),以及各項(xiàng)待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和請(qǐng)求執(zhí)行時(shí)間。
其中,優(yōu)先級(jí)可以為待調(diào)度任務(wù)進(jìn)行調(diào)度的優(yōu)先級(jí)別,請(qǐng)求執(zhí)行時(shí)間可以為請(qǐng)求任務(wù)執(zhí)行裝置開始執(zhí)行或者請(qǐng)求獲得執(zhí)行結(jié)果的時(shí)間。一般而言,優(yōu)先級(jí)越高的待調(diào)度任務(wù),或者請(qǐng)求執(zhí)行時(shí)間越早的待調(diào)度任務(wù)越優(yōu)先進(jìn)行調(diào)度。
需要說(shuō)明的是,任務(wù)的實(shí)際調(diào)度時(shí)間可以為任務(wù)調(diào)度裝置將任務(wù)調(diào)度至任務(wù)執(zhí)行裝置的時(shí)間,任務(wù)的請(qǐng)求執(zhí)行時(shí)間可以為請(qǐng)求任務(wù)執(zhí)行裝置開始執(zhí)行或者請(qǐng)求在預(yù)設(shè)時(shí)間獲得執(zhí)行結(jié)果的時(shí)間,任務(wù)的實(shí)際執(zhí)行時(shí)間可以為任務(wù)執(zhí)行裝置實(shí)際開始執(zhí)行或者獲得執(zhí)行結(jié)果的時(shí)間。
在步驟S202中,按照待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,存儲(chǔ)待調(diào)度任務(wù)。
在本實(shí)施例中,可以將各項(xiàng)待調(diào)度任務(wù)有序存儲(chǔ)在存儲(chǔ)裝置。本實(shí)施例不限定有序存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)的方式,例如可以按照各項(xiàng)待調(diào)度任務(wù)的調(diào)度順序存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)。
作為本實(shí)施例的一個(gè)示例,在任務(wù)請(qǐng)求包括優(yōu)先級(jí)的情況下,任務(wù)調(diào)度裝置可以根據(jù)各項(xiàng)待調(diào)度任務(wù)的優(yōu)先級(jí)確定調(diào)度的先后順序。其中,具有較高優(yōu)先級(jí)的待調(diào)度任務(wù)可以優(yōu)先由任務(wù)調(diào)度裝置進(jìn)行調(diào)度。
作為本實(shí)施例的另一個(gè)示例,在任務(wù)請(qǐng)求包括請(qǐng)求執(zhí)行時(shí)間的情況下,任務(wù)調(diào)度裝置可以根據(jù)各項(xiàng)待調(diào)度任務(wù)的請(qǐng)求執(zhí)行時(shí)間確定調(diào)度的先后順序。其中,具有較早的請(qǐng)求執(zhí)行時(shí)間的待調(diào)度任務(wù)可以優(yōu)先由任務(wù)調(diào)度裝置進(jìn)行調(diào)度。
作為本實(shí)施例的另一個(gè)示例,在任務(wù)請(qǐng)求包括優(yōu)先級(jí)和請(qǐng)求執(zhí)行時(shí)間的情況下,任務(wù)調(diào)度裝置可以根據(jù)各項(xiàng)待調(diào)度任務(wù)的優(yōu)先級(jí)和請(qǐng)求執(zhí)行時(shí)間確定調(diào)度的先后順序。舉例而言,同等優(yōu)先級(jí)的各項(xiàng)待調(diào)度任務(wù),具有較早的請(qǐng)求執(zhí)行時(shí)間的待調(diào)度任務(wù)可以優(yōu)先由任務(wù)調(diào)度裝置進(jìn)行調(diào)度。不同優(yōu)先級(jí)的各項(xiàng)待調(diào)度任務(wù),具有較高優(yōu)先級(jí)的待調(diào)度任務(wù)可以優(yōu)先由任務(wù)調(diào)度裝置進(jìn)行調(diào)度。
圖3是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S102的實(shí)現(xiàn)流程圖。如圖3所示,將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,可以包括以下步驟。
在步驟S301中,檢測(cè)是否存儲(chǔ)有第一待調(diào)度任務(wù),第一待調(diào)度任務(wù)為第二時(shí)間段內(nèi)接收的待調(diào)度任務(wù)。
第一任務(wù)隊(duì)列可以包括需要任務(wù)調(diào)度裝置進(jìn)行調(diào)度的部分或者全部待調(diào)度任務(wù)。進(jìn)一步地,可以按照第一預(yù)設(shè)頻率對(duì)第一任務(wù)隊(duì)列進(jìn)行更新。
本實(shí)施例不限定第二時(shí)間段的時(shí)間長(zhǎng)度,在實(shí)際應(yīng)用的過(guò)程中,可以根據(jù)工程需要進(jìn)行設(shè)定。
作為本實(shí)施例的一個(gè)示例,第二時(shí)間段可以根據(jù)當(dāng)前系統(tǒng)時(shí)間以及第二預(yù)設(shè)值確定。例如,當(dāng)前系統(tǒng)時(shí)間為11:00,第二預(yù)設(shè)值為20分鐘,則第二時(shí)間段為10:40至11:00。在該示例中,可以每隔20分鐘對(duì)存儲(chǔ)模塊進(jìn)行檢測(cè),將存儲(chǔ)模塊中存儲(chǔ)的而第一任務(wù)隊(duì)列中沒(méi)有存儲(chǔ)的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
在步驟S302中,在檢測(cè)到存儲(chǔ)有第一待調(diào)度任務(wù)的情況下,按照第一待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將第一待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
作為本實(shí)施例的一個(gè)示例,存儲(chǔ)裝置存儲(chǔ)有待調(diào)度任務(wù)C(請(qǐng)求執(zhí)行時(shí)間:12:00),第一任務(wù)隊(duì)列包括待調(diào)度任務(wù)A(請(qǐng)求執(zhí)行時(shí)間:12:30)和待調(diào)度任務(wù)B(請(qǐng)求執(zhí)行時(shí)間:11:30)。在檢測(cè)到存儲(chǔ)裝置存儲(chǔ)有待調(diào)度任務(wù)C(第一待調(diào)度任務(wù))的情況下,將待調(diào)度任務(wù)C加入第一任務(wù)隊(duì)列。進(jìn)一步地,根據(jù)各項(xiàng)待調(diào)度任務(wù)對(duì)應(yīng)的請(qǐng)求執(zhí)行時(shí)間,可以確定任務(wù)調(diào)度裝置進(jìn)行調(diào)度的順序?yàn)槿蝿?wù)B、任務(wù)C和任務(wù)A,即第一任務(wù)隊(duì)列所包括的待調(diào)度任務(wù)的排列順序可以為任務(wù)B、任務(wù)C和任務(wù)A。
圖4是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法中步驟S103的實(shí)現(xiàn)流程圖。如圖4所示,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,可以包括以下步驟。
在步驟S401中,檢測(cè)第一任務(wù)隊(duì)列中是否存儲(chǔ)有第二待調(diào)度任務(wù),第二待調(diào)度任務(wù)為需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù)。
第二任務(wù)隊(duì)列可以包括需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù)。進(jìn)一步地,可以按照第二預(yù)設(shè)頻率對(duì)第二任務(wù)隊(duì)列進(jìn)行更新。
作為本實(shí)施例的一個(gè)示例,可以按照第二預(yù)設(shè)頻率對(duì)第一任務(wù)隊(duì)列進(jìn)行檢測(cè),將第一任務(wù)隊(duì)列中存儲(chǔ)的需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。本實(shí)施例不限定第二預(yù)設(shè)頻率的大小,在實(shí)際應(yīng)用的過(guò)程中,可以根據(jù)工程需要進(jìn)行設(shè)定。
在步驟S402中,在檢測(cè)到第一任務(wù)隊(duì)列中存儲(chǔ)有第二待調(diào)度任務(wù)的情況下,按照第二待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將第二待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
作為本實(shí)施例的一個(gè)示例,第一時(shí)間段為11:00-12:00,第一任務(wù)隊(duì)列包括的待調(diào)度任務(wù)B(請(qǐng)求執(zhí)行時(shí)間:11:30)、待調(diào)度任務(wù)C(請(qǐng)求執(zhí)行時(shí)間:12:00)和待調(diào)度任務(wù)A(請(qǐng)求執(zhí)行時(shí)間:12:30)。在檢測(cè)到第一任務(wù)隊(duì)列中存儲(chǔ)有待調(diào)度任務(wù)B和待調(diào)度任務(wù)C(第二待調(diào)度任務(wù),需要在11:00-12:00調(diào)度的待調(diào)度任務(wù))的情況下,將待調(diào)度任務(wù)B和待調(diào)度任務(wù)C從第一任務(wù)隊(duì)列加入第二任務(wù)隊(duì)列。
圖5是根據(jù)示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度方法的實(shí)現(xiàn)流程圖。如圖5所示,該任務(wù)調(diào)度方法,可以包括以下步驟。
在步驟S501中,接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)。
對(duì)該步驟的描述可以參見步驟S101。
在步驟S502中,將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
對(duì)該步驟的描述可以參見步驟S102。
在步驟S503中,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
對(duì)該步驟的描述可以參見步驟S103。
在步驟S504中,對(duì)第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
對(duì)該步驟的描述可以參見步驟S104。
在步驟S505中,檢測(cè)任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)是否完成,在檢測(cè)到該任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)未執(zhí)行完成的情況下,執(zhí)行步驟S506,在該檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)執(zhí)行完成的情況下,執(zhí)行步驟S507。
在步驟S506中,禁止將其他的待調(diào)度任務(wù)調(diào)度至該任務(wù)執(zhí)行裝置。
在步驟S507中,允許將其他的待調(diào)度任務(wù)調(diào)度至該任務(wù)執(zhí)行裝置。
一般而言,對(duì)于某些正由任務(wù)執(zhí)行裝置執(zhí)行的任務(wù),如果分配給其單獨(dú)占用任務(wù)執(zhí)行裝置的時(shí)間已經(jīng)用完,而任務(wù)還沒(méi)有執(zhí)行完成的情況下,按照操作規(guī)則需要將該正在執(zhí)行的任務(wù)換下。在這種情況下,可能會(huì)中斷當(dāng)前正在執(zhí)行的任務(wù),損害系統(tǒng)的穩(wěn)定性。
在本實(shí)施例中,可以給任務(wù)調(diào)度裝置加鎖,從而禁止針對(duì)正在執(zhí)行任務(wù)的任務(wù)執(zhí)行裝置進(jìn)行任務(wù)調(diào)度。進(jìn)一步地,在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)執(zhí)行完成的情況下,給任務(wù)調(diào)度裝置開鎖,則允許任務(wù)調(diào)度裝置針對(duì)已經(jīng)完成任務(wù)的任務(wù)執(zhí)行裝置進(jìn)行任務(wù)調(diào)度。通過(guò)上述方法,可以使得某個(gè)任務(wù)保持對(duì)任務(wù)執(zhí)行裝置的控制權(quán),不管是否有優(yōu)先級(jí)更高或者請(qǐng)求執(zhí)行時(shí)間更早的任務(wù)進(jìn)入了就緒態(tài),都要等到這個(gè)任務(wù)完成后再進(jìn)行調(diào)度。
通過(guò)本實(shí)施例的任務(wù)調(diào)度方法,能夠接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,并將第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)調(diào)度至分布式的任務(wù)執(zhí)行裝置中進(jìn)行執(zhí)行。采用無(wú)中心模式的任務(wù)調(diào)度裝置,能夠支持負(fù)載均衡,且具有較高的可用性、并發(fā)性和實(shí)時(shí)性。此外,本實(shí)施例的任務(wù)調(diào)度方法具有分布式協(xié)調(diào)協(xié)同功能,例如為任務(wù)調(diào)度裝置進(jìn)行加鎖。進(jìn)一步地,通過(guò)給任務(wù)調(diào)度裝置進(jìn)行加鎖,可以保證任務(wù)的有序執(zhí)行,實(shí)現(xiàn)輕量級(jí)且與業(yè)務(wù)隔離,使得系統(tǒng)具有較高的穩(wěn)定性。
圖6是根據(jù)一示例性實(shí)施例示出的一種任務(wù)調(diào)度裝置的框圖。參照?qǐng)D6,該裝置包括待調(diào)度任務(wù)存儲(chǔ)模塊11,第一加入模塊13、第二加入模塊15和調(diào)度模塊17。
其中,待調(diào)度任務(wù)存儲(chǔ)模塊11被配置為接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù)。第一加入模塊13被配置為將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。第二加入模塊15被配置為將所述第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。調(diào)度模塊17被配置為對(duì)所述第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度。
圖7是根據(jù)一示例性實(shí)施例的一個(gè)示例示出的一種任務(wù)調(diào)度裝置的框圖。參照?qǐng)D7:
在一種可能的實(shí)現(xiàn)方式中,所述待調(diào)度任務(wù)存儲(chǔ)模塊11包括任務(wù)請(qǐng)求接收子模塊111和待調(diào)度任務(wù)存儲(chǔ)子模塊113。
其中,任務(wù)請(qǐng)求接收子模塊111被配置為接收任務(wù)請(qǐng)求,所述任務(wù)請(qǐng)求包括所述待調(diào)度任務(wù)和所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間。待調(diào)度任務(wù)存儲(chǔ)子模塊113被配置為按照所述待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,存儲(chǔ)所述待調(diào)度任務(wù)。
在一種可能的實(shí)現(xiàn)方式中,所述第一加入模塊13包括第一待調(diào)度任務(wù)檢測(cè)子模塊131和第一待調(diào)度任務(wù)加入子模塊133。
其中,第一待調(diào)度任務(wù)檢測(cè)子模塊131被配置為檢測(cè)是否存儲(chǔ)有第一待調(diào)度任務(wù),所述第一待調(diào)度任務(wù)為第二時(shí)間段內(nèi)接收的待調(diào)度任務(wù)。第一待調(diào)度任務(wù)加入子模塊133被配置為在檢測(cè)到存儲(chǔ)有所述第一待調(diào)度任務(wù)的情況下,按照所述第一待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第一待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列。
在一種可能的實(shí)現(xiàn)方式中,所述第二加入模塊15包括第二待調(diào)度任務(wù)檢測(cè)子模塊151和第二待調(diào)度任務(wù)加入子模塊153。
其中,第二待調(diào)度任務(wù)檢測(cè)子模塊151被配置為檢測(cè)所述第一任務(wù)隊(duì)列中是否存儲(chǔ)有第二待調(diào)度任務(wù),所述第二待調(diào)度任務(wù)為需要在第一時(shí)間段內(nèi)調(diào)度的待調(diào)度任務(wù)。第二待調(diào)度任務(wù)加入子模塊153被配置為在檢測(cè)到所述第一任務(wù)隊(duì)列中存儲(chǔ)有所述第二待調(diào)度任務(wù)的情況下,按照所述第二待調(diào)度任務(wù)對(duì)應(yīng)的優(yōu)先級(jí)和/或請(qǐng)求執(zhí)行時(shí)間,將所述第二待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列。
在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括禁止調(diào)度模塊21和/或允許調(diào)度模塊23。
其中,禁止調(diào)度模塊21被配置為在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)未執(zhí)行完成的情況下,禁止將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置。允許調(diào)度模塊23被配置為在檢測(cè)到任務(wù)執(zhí)行裝置當(dāng)前執(zhí)行的任務(wù)執(zhí)行完成的情況下,允許將其他的待調(diào)度任務(wù)調(diào)度至所述任務(wù)執(zhí)行裝置。
在一種可能的實(shí)現(xiàn)方式中,所述待調(diào)度任務(wù)為待調(diào)度的定時(shí)任務(wù),所述定時(shí)任務(wù)為請(qǐng)求在預(yù)設(shè)時(shí)間開始執(zhí)行或者請(qǐng)求在預(yù)設(shè)時(shí)間獲得執(zhí)行結(jié)果的任務(wù)。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說(shuō)明。
通過(guò)本實(shí)施例的任務(wù)調(diào)度裝置,能夠接收并存儲(chǔ)各項(xiàng)待調(diào)度任務(wù),將滿足預(yù)設(shè)條件的各項(xiàng)待調(diào)度任務(wù)加入第一任務(wù)隊(duì)列,并將第一任務(wù)隊(duì)列中需要在第一時(shí)間段內(nèi)調(diào)度的各項(xiàng)待調(diào)度任務(wù)加入第二任務(wù)隊(duì)列,以實(shí)現(xiàn)對(duì)第二任務(wù)隊(duì)列中的各項(xiàng)待調(diào)度任務(wù)進(jìn)行調(diào)度,支持負(fù)載均衡,具有較高的可用性及并發(fā)性,實(shí)時(shí)性好、輕量級(jí)且與業(yè)務(wù)隔離。
圖8是根據(jù)一示例性實(shí)施例示出的一種用于任務(wù)調(diào)度的裝置1900的框圖。例如,裝置1900可以被提供為一服務(wù)器。參照?qǐng)D8,裝置1900包括處理組件1922,其進(jìn)一步包括一個(gè)或多個(gè)處理器,以及由存儲(chǔ)器1932所代表的存儲(chǔ)器資源,用于存儲(chǔ)可由處理組件1922的執(zhí)行的指令,例如應(yīng)用程序。存儲(chǔ)器1932中存儲(chǔ)的應(yīng)用程序可以包括一個(gè)或一個(gè)以上的每一個(gè)對(duì)應(yīng)于一組指令的模塊。此外,處理組件1922被配置為執(zhí)行指令,以執(zhí)行上述方法圖1至圖5中所述的方法。
裝置1900還可以包括一個(gè)電源組件1926被配置為執(zhí)行裝置1900的電源管理,一個(gè)有線或無(wú)線網(wǎng)絡(luò)接口1950被配置為將裝置1900連接到網(wǎng)絡(luò),和一個(gè)輸入輸出(I/O)接口1958。裝置1900可以操作基于存儲(chǔ)在存儲(chǔ)器1932的操作系統(tǒng),例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM或類似。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來(lái)限制。