專利名稱:任務調度方法和裝置的制作方法
技術領域:
本申請涉及互聯網領域,具體而言,涉及一種任務調度方法和裝置。
背景技術:
目前,在計算機系統中對任務的執行都是采用,在某個具體的時間點上由調度服務器進行觸發調度以實現對任務的調度。然而,該時間點往往是采用時間表達式來體現的,這些時間表達式可以表示某個具體的時間點,甚至可以精確到秒級對任務進行觸發調度。因此,這種觸發方式可以很好的實現在特定的某個時間點對任務進行觸發調度。例如,quartz就是一種任務觸發調度集合,它主要是形成一種基本形式如“秒分時日月周年”的時間表達式。例如,對于每間隔I分鐘執行一次的任務,可以表示為:“**/1 * * * ”;在每一分鐘的第0秒對任務進行觸發調度,可以表示為:“0 */1 * * * ”。這種時間表示方法一般是精確到具體的某一秒對任務進行觸發調度。采用類似quartz表達式對任務進行觸發調度的具體步驟如圖1所示,包括:S102:確定任務的調度周期,所謂任務調度的周期就是從一次調度到下一次調度之間間隔的時間。例如,每間隔5秒調度一次,每間隔5分鐘調度一次,每間隔一小時調度一次,這就表示任務的調度周期分別是:5秒,5分鐘,一小時。S104:確定任務需要調度的時間段,例如,調度的時間段是每周一到每周五的上午9點到下午6點,就表示只在周一到周五的上午9點到下午6點這個時間范圍內才對該任務進行調度,在此時間段以外的時間不對該任務進行調度。S106:根據確定的調度周期和調度時間段信息生成quartz的觸發調度表達式。S108:調度服務 器對quartz表達式進行解析,當時間點滿足表達式中的時間點時,對該任務進行調度。然而,現有技術中,基于表達式來處理周期性任務的方法,基本都是單獨以一種表達式來表示任務需要觸發調度的時間。因為任務的執行都是在某個具體的時間點上由調度器觸發調度,在計算機中,一般精確到具體的某一秒,這樣會產生一定的問題,例如,對于具有相同調度周期的任務而言,每隔一定的周期在相同的時間點上對這些任務進行調度,這樣,在每個調度周期的某個時間點上會造成調度服務器調度的壓力過大,而調度服務器在其他時間點上可能沒有需要調度的任務,從而處于空閑狀態,導致調度服務器的調度壓力分配不勻,造成系統資源的浪費,進一步的當許多具有相同調度周期的任務集中在一個時間點進行調度的時候,也會影響調度服務器在這個時間點上的處理性能,增加調度失敗率,從而影響系統的處理效率和資源的使用效率。針對上述問題,目前還沒有提出有效的解決辦法。
發明內容
本申請的主要目的在于提供一種任務調度方法和裝置,以至少解決現有技術中多個具有相同調度周期的任務在同一時間點進行調度而造成的調度服務器的調度壓力分配不均的問題。根據本申請的一個方面,提供了一種任務調度方法,包括:獲取待調度任務的調度周期和待調度任務的調度起始時間;根據調度周期和調度起始時間生成與待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間;在調度周期到達時延遲等待時間對待調度任務進行調度。優選地,根據調度周期和調度起始時間生成與待調度任務對應的等待時間的步驟包括:在范圍
,其中,start表示等待時間,interval表示調度周期,quartz表示待調度任務的調度時間段。優選地,在調度周期到達時延遲等待時間對待調度任務進行調度的步驟包括:獲取調度時間段包括當前時間的調度信息;判斷所獲取的調度信息對應的調度周期是否到達;在判斷的調度周期到達時延遲等待時間對與獲取的調度信息對應的待調度任務進行調度。根據本申請的另一方面,提供了一種任務調度裝置,包括:獲取單元,用于獲取待調度任務的調度周期和待調度任務的調度起始時間;生成單元,用于根據調度周期和調度起始時間生成與待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間;調度單元,用于在調度周期到達時延遲等待時間對待調度任務進行調度。優選地,生成單元包括:選取模塊,用于在范圍
,其中,start表示等待時間,interval表示調度周期,quartz表示待調度任務的調度時間段。
優選地,調度單元包括:獲取模塊,用于獲取調度時間段包括當前時間的調度信息;判斷模塊,用于判斷所獲取的調度信息對應的調度周期是否到達;調度模塊,用于在判斷的調度周期到達時延遲等待時間對與獲取的調度信息對應的待調度任務進行調度。在本申請中,對具有相同調度周期的任務分配不同的等待時間,在調度周期到來的時候,延遲對應的等待時間在對該任務進行調度,從而解決了在大量任務集中在一個時間點上進行調度而造成的調度服務器的調度壓力分配不均的問題,使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:圖1是根據相關技術的任務調度方法的流程圖;圖2是根據本申請實施例的任務調度系統的一種優選結構框圖;圖3是根據本申請實施例的任務調度裝置的一種優選結構框圖;圖4是根據本申請實施例的任務調度裝置的生成單元的一種優選結構框圖;圖5是根據本申請實施例的任務調度裝置的另一種優選結構框圖;圖6是根據本申請實施例的任務調度裝置的調度單元的一種優選結構框圖;圖7是根據本申請實施例的任務調度方法的一種優選流程圖;圖8是根據本申請實施例的任務調度方法的另一種優選流程圖;圖9是根據本申請實施例的任務調度方法的又一種優選流程圖。
具體實施例方式下文中將參考附圖并結合實施例來詳細說明本申請。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。在描述本申請的各實施例的進一步細節之前,將參考圖1來描述可用于實現本申請的原理的一個合適的計算體系結構。在以下描述中,除非另外指明,否則將參考由一個或多個計算機執行的動作和操作的符號表示來描述本申請的各實施例。由此,可以理解,有時被稱為計算機執行的這類動作和操作包括計算機的處理單元對以結構化形式表示數據的電信號的操縱。這一操縱轉換了數據或在計算機的存儲器系統中的位置上維護它,這以本領域的技術人員都理解的方式重配置或改變了計算機的操作。維護數據的數據結構是具有數據的格式所定義的特定屬性的存儲器的物理位置。然而,盡管在上述上下文中描述本申請,但它并不意味著限制性的,如本領域的技術人員所理解的,后文所描述的動作和操作的各方面也可用硬件來實現。轉向附圖,其中相同的參考標號指代相同的元素,本申請的原理被示為在一個合適的計算環境中實現。以下描述基于所述的本申請的實施例,并且不應認為是關于此處未明確描述的替換實施例而限制本申請。圖2示出了可用于這些設備的一個示例計算機體系結構的示意圖。出于描述的目的,所繪的體系結構僅為合適環境的一個示例,并非對本申請的使用范圍或功能提出任何局限。也不應將該計算系統解釋為對圖2所示的任一組件或其組合具有任何依賴或需求。
本申請的原理可以使用其它通用或專用計算或通信環境或配置來操作。適用于本申請的眾所周知的計算系統、環境和配置的示例包括但不限于,個人計算機、服務器,多處理器系統、基于微處理的系統、小型機、大型計算機、以及包括任一上述系統或設備的分布式計算環境。在其最基本的配置中,圖2中的任務調度系統200至少包括:一個網站的服務器202以及一個或多個客戶端204。服務器202可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置、用于存儲數據的存儲裝置以及與客戶端通信的傳輸裝置;客戶端204可以包括:微處理器MCU、與服務器通信的傳輸裝置、與用戶交互的顯示裝置。在本說明書和權利要求書中,“任務調度系統”也可以被定義為能夠執行軟件、固件或微碼來實現功能的任何硬件組件或硬件組件的組合。任務調度系統200甚至可以是分布式的,以實現分布式功能。如本申請所使用的,術語“模塊”、“組件”或“單元”可以指在任務調度系統200上執行的軟件對象或例程。此處所描述的不同組件、模塊、單元、引擎和服務可被實現為在任務調度系統200上執行(例如,作為單獨的線程)的對象或進程。盡管此處所描述的系統和方法較佳地以軟件來實現,但是硬件或軟件和硬件的組合的實現也是可能并被構想的。實施例1圖3是根據本申請實施例任務調度裝置的一種優選的結構示意圖,優選的,本實施例中的任務調度裝置位于服務器202上或者客戶端204上。優選的,任務調度裝置可以如圖3所示,包括:獲取單元302,用于獲取待調度任務的調度周期和待調度任務的調度起始時間;生成單元304,用于根據調度周期和調度起始時間生成與待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間;調度單元306,用于在調度周期到達時延遲等待時間對待調度任務進行調度。在上述優選實施方式中,對調度周期相同的任務分配不同的等待時間,在調度周期到來的時候,延遲對應的等待時間再對該任務進行調度,從而避免了在大量任務集中在一個時間點上進行調度而造成的調度服務器的調度壓力分配不均的問題,使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。舉例而言,對于調度周期都為IOOs的3個任務:任務1、任務2以及任務3都在同一時間進行調度,調度服務器在每次調度周期到來的時間點調度壓力會很大,通過本申請的方法,可以為任務I分配IOs的等待時間、為任務2分配30s的等待時間、為任務3分配50s的等待時間,從而使得三個任務錯開調度,均衡了調度服務器的調度壓力。在本申請一個優選實施方式中,如圖4所示,生成單元304包括:選取模塊402,用于在范圍
,其中,start表示等待時間,interval表示調度周期,quartz表示待調度任務的調度時間段。例如,[(20,60),***** ],表示一個調度周期為60秒的任務,在調度服務器開始工作后,在調度周期到來時,會推遲20秒再對該任務進行調度,對于不同的任務會選擇不同的start值,從而可以保證任務不會集中在一個時間點上進行調度。在上述優選實施方式中,采用[(start, interval), quartz]格式作為任務調度表達式,從而使得任務調度服務器可以通過該表達式明確知道在什么時間段對該任務進行調度、多長時間對該任務進行一次調度以及每次調度時延遲等待的時間。同時,采用quartz表達式進行調度,可以將調度時間點精確到秒。在本申請一個優選實施方式中,如圖6所示,調度單元306包括:獲取模塊602,用于獲取調度時間段包括當前時間的調度信息;判斷模塊604,用于判斷所獲取的調度信息對應的調度周期是否到達;調度模塊606,用于在判斷的調度周期到達時延遲等待時間對與獲取的調度信息對應的待調度任務進行調度。在上述優選實施方式中,先獲取任務調度信息,當對應于任務調度信息的調度周期到達的時候,延遲調度信息中的等待時間對任務進行調度,從而使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。實施例2在圖2-圖6所示的任務調度裝置和系統的基礎上,本申請提供了一種優選的任務調度方法。如圖7所示,該任務調度方法可以包括如下步驟:S702:獲取待調度任務的調度周期和待調度任務的調度起始時間;S704:根據調度周期和調度起始時間生成與待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間;S706:在調度周期 到達時延遲等待時間對待調度任務進行調度。在上述優選實施方式中,對調度周期相同的任務分配不同的等待時間,在調度周期到來的時候,延遲對應的等待時間再對該任務進行調度,從而避免了在大量任務集中在一個時間點上進行調度而造成的調度服務器的調度壓力分配不均的問題,使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。舉例而言,對于調度周期都為IOOs的3個任務:任務1、任務2以及任務3都在同一時間進行調度,調度服務器在每次調度周期到來的時間點調度壓力會很大,通過本申請的方法,可以為任務I分配IOs的等待時間、為任務2分配30s的等待時間、為任務3分配50s的等待時間,從而使得三個任務錯開調度,均衡了調度服務器的調度壓力。在本申請一個優選實施方式中,根據調度周期和調度起始時間生成與待調度任務對應的等待時間的步驟包括:在范圍
其中,start表示等待時間,interval表示調度周期,quartz表示待調度任務的調度時間段。例如,[(20,60),***** ],表示一個調度周期為60秒的任務,在調度服務器開始工作后,在調度周期到來時,會推遲20秒再對該任務進行調度,對于不同的任務會選擇不同的start值,從而可以保證任務不會集中在一個時間點上進行調度。在上述優選實施方式中,采用[(start, interval), quartz]格式作為任務調度表達式,從而使得任務調度服務器可以通過該表達式明確知道在什么時間段對該任務進行調度、多長時間對該任務進行一次調度以及每次調度時延遲等待的時間。同時,采用quartz表達式進行調度,可以將調度時間點精確到秒。在本申請一個優選實施方式中,在調度周期到達時延遲等待時間對待調度任務進行調度的步驟可以如圖8所示,包括:S802:獲取調度時間段包括當前時間的調度信息;S804:判斷所獲取的調度信息對應的調度周期是否到達;S806:在判斷的調度周期到達時延遲等待時間對與獲取的調度信息對應的待調度任務進行調度。在上述優選實施方式中,先獲取任務調度信息,當對應于任務調度信息的調度周期到達的時候,延遲調度信息中的等待時間對任務進行調度,從而使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。實施例3本申請提供了一種優選的實施例來進一步對本申請進行解釋,但是值得注意的是,該優選實施例只是為了更好的描述本申請,并不構成對本申請不當的限定。基于上述的優選實施方式,本申請提供了一種具體的實施方式,如圖9所示,步驟包括:S902:確定任務的調度周期interval,如有4個每隔5分鐘需要調度一次的任務,分別定義為:任務1、任務2、任務3、任務4,對應的interval都是300秒。S904:確定任務的權值f,優選的,f■可以默認為I。S906:確定任務需要進行調度的時間段quartz,例如:每天上午9點到下午6點,
每周一到每周五等。S908:采用一定的算法計算出等待時間start。例如,可以采用如下公式計算出等待時間start:start = random (0, interval/f) *f,假設,在本實施例中,根據上述公式計算出任務I的等待時間為60秒、任務2的等待時間是100秒、任務3的等待時間是76秒、任務4的等待時間是232秒。優選地,也可以直接采用start = random(0, interval)計算得到等待時間。其中,random(a,b)表示區間[a, b)中的一個隨機值,對于具體的計算方法在此不做限定。S910:根據上述得到的調度周期、等待時間以及調度時間段生成調度信息表達式,優選地,可以利用[(start, interval), quartz]進行表示,從而構成本申請的方法表示。在本優選實施例中,以quartz表達式為例進行說明,但是本申請不僅限于quartz,還可以適用于其它類似于quartz的用于對任務進行調度的表達式。其中,start表示任務在調度周期到任務延遲調度的等待時間(優選的,單位為秒),也就是說,在調度周期到達時延遲等待時間對待調度任務進行調度。通過這種方式可以防止大量任務在調度服務器中集中在一起進行調度。優選的,可以只在首次調度的時候計算該任務調度信息表達式,對于以后的每次調度可以采用首次生成的等待時間進行調度。interval表示周期性任 務的調度間隔(優選的,單位秒),也就是周期性任務的調度周期。quartz表示quartz表達式,該表達式用于表示一個連續的時間段,表明該任務只有在這個時間段內才進行調度,在這個時間段以外的時間范圍內對該任務都不進行調度。S912:調度服務器根據以上表達式對任務進行調度。通過每個任務對應的不同的等待時間,在調度周期到來的時候,任調度服務器延遲60秒調度任務I再調度、延遲100秒調度任務2、延遲76秒調度任務3、延遲232秒調度任務4。每個任務通過不同的start時間,錯開調度,解決了由于在特定時間點上執行大量的調度任務所產生的性能問題,提高了資源利用率和調度服務器的處理效率例如,[(20,60),***** ],表示一個調度周期為60秒的任務,在調度服務器開始工作后,在調度周期到來時,會推遲20秒再對該任務進行調度,對于不同的任務會選擇不同的start值,從而可以保證任務不會集中在一個時間點上進行調度。在本優選的表示方法中,依賴于對start值的設定,并沒有明確指定任務在哪個時間點上調度,算法盡量保證任務平均分配到各個時間點上調度,從而避免了大量任務集中在某個時間點調度的情況。當一個周期性任務開始調度后,每隔一定的間隔,任務會再次觸發調度。為了盡量保證任務處理的時效性,延遲的start時間,應該是一個小于調度間隔的值,從而不會出現一個周期任務在先一次的調度還沒執行完,在后一次的調度已經開始執行的情況,這樣才能保證任務準確的執行。通過以上的描述可知,本申請具有以下優勢:I)通過將周期性任務的調度時段和調度間隔分離,并增加了一個等待時間(start)的屬性,使得每個任務通過不同的start時間,錯開調度,解決了由于在特定時間點上執行大量的調度任務所產生的性能問題,提高了資源利用率和調度服務器的處理效率。2)本申請提供了計算start值的算法,盡可能地保證了任務的調度均衡,同時該計算算法還可以根據任務的調度時間或者是任務的場景進行合理的改變,提高了本申請的適用性。顯然,本領域的技術人員應該明白,上述的本申請的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,并且在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本申請不限制于任何特定的硬件和軟件結合。以上僅為本申請的優選實施例而已,并不用于限制本申請,對于本領域的技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本申請的保護范圍之內。
權利要求
1.一種任務調度方法,其特征在于,包括: 獲取待調度任務的調度周期和所述待調度任務的調度起始時間; 根據所述調度周期和所述調度起始時間生成與所述待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間; 在所述調度周期到達時延遲所述等待時間對所述待調度任務進行調度。
2.根據權利要求1所述的方法,其特征在于,根據所述調度周期和所述調度起始時間生成與所述待調度任務對應的等待時間的步驟包括: 在范圍[O,調度周期)之間隨機選取N個數值,其中,N為具有相同調度周期和調度起始時間的不同待調度任務的個數; 將所選取的N個數值作為等待時間分別分配給具有相同調度周期和調度起始時間的N個不同待調度任務。
3.根據權利要求2所述的方法,其特征在于,通過如下公式在范圍[O,調度周期)之間隨機選取N個數值中的每一個數值:start = random(0, interval/f)*f 其中,start表示所述等待時間,random (a, b)表示區間[a, b)中的一個隨機值,interval表示所述調度周期,f為I至所述調度周期之間的一個整數。
4.根據權利要求1所述的方法,其特征在于,根據所述調度周期和所述調度起始時間生成與所述待調度任務對應的等待時間之后,還 包括: 采用以下方式記錄與所述待調度任務對應的調度信息:[(start, interval), quartz],其中,start表示所述等待時間,interval表示所述調度周期,quartz表示所述待調度任務的調度時間段。
5.根據權利要求4所述的方法,其特征在于,在所述調度周期到達時延遲所述等待時間對所述待調度任務進行調度的步驟包括: 獲取調度時間段包括當前時間的調度信息; 判斷所獲取的調度信息對應的調度周期是否到達; 在判斷的調度周期到達時延遲所述等待時間對與獲取的調度信息對應的待調度任務進行調度。
6.一種任務調度裝置,其特征在于,包括: 獲取單元,用于獲取待調度任務的調度周期和所述待調度任務的調度起始時間; 生成單元,用于根據所述調度周期和所述調度起始時間生成與所述待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間; 調度單元,用于在所述調度周期到達時延遲所述等待時間對所述待調度任務進行調度。
7.根據權利要求6所述的裝置,其特征在于,所述生成單元包括: 選取模塊,用于在范圍
,其中,start表示所述等待時間,interval表示所述調度周期,quartz表示所述待調度任務的調度時間段。
10.根據權利要求9所述的裝置,其特征在于,所述調度單元包括: 獲取模塊,用于獲取調度時間段 包括當前時間的調度信息; 判斷模塊,用于判斷所獲取的調度信息對應的調度周期是否到達; 調度模塊,用于在判斷的調度周期到達時延遲所述等待時間對與獲取的調度信息對應的待調度任務進行調度。
全文摘要
本申請公開了一種任務調度方法和裝置,該方法包括獲取待調度任務的調度周期和待調度任務的調度起始時間;根據調度周期和調度起始時間生成與待調度任務對應的等待時間,其中,具有相同調度周期和相同調度起始時間的不同待調度任務對應不同的等待時間;在調度周期到達時延遲等待時間對待調度任務進行調度。本申請解決了在大量任務集中在一個時間點上進行調度而造成的調度服務器的調度壓力分配不均的問題,使得任務相對均勻地分配在不同時間點進行調度,提高了調度服務器處理任務的效率,減少了資源的浪費。
文檔編號G06F9/46GK103207807SQ201210009478
公開日2013年7月17日 申請日期2012年1月12日 優先權日2012年1月12日
發明者周宇 申請人:阿里巴巴集團控股有限公司