本發(fā)明涉及云計算應(yīng)用技術(shù)領(lǐng)域,更具體地說,涉及一種云操作系統(tǒng)的任務(wù)調(diào)度方法及裝置。
背景技術(shù):
云計算是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴展且經(jīng)常是虛擬化的資源。目前云計算的存儲及處理的數(shù)據(jù)量已遠遠超出了人們的想象,對應(yīng)的云操作系統(tǒng)架構(gòu)面臨越來越大的挑戰(zhàn)。
隨著云操作系統(tǒng)中云數(shù)據(jù)中心管理平臺功能的不斷新增,系統(tǒng)處理的任務(wù)也相應(yīng)的增加,如果采用傳統(tǒng)的單節(jié)點部署模式,所有的任務(wù)都將在一個節(jié)點上執(zhí)行,勢必會造成任務(wù)的擁塞,執(zhí)行效率低等問題,因此分布式操作系統(tǒng)應(yīng)運而生?,F(xiàn)有技術(shù)中利用分布式系統(tǒng)實現(xiàn)任務(wù)的處理,通常是在接收到多個任務(wù)時,將這多個任務(wù)平均分配到不同的節(jié)點上,如果這多個任務(wù)不能同時處理,則由多個任務(wù)中隨機選取出可以被處理的數(shù)量的任務(wù)進行處理,但是發(fā)明人發(fā)現(xiàn),如果能夠同時被處理的任務(wù)均對應(yīng)同一操作類型,如均為對對應(yīng)計算機進行關(guān)閉,則這種單一操作的任務(wù)過多的情況占據(jù)過多節(jié)點資源,就會導(dǎo)致其他的用戶操作一直處于等待狀態(tài)。
綜上所述,現(xiàn)有技術(shù)中用于實現(xiàn)任務(wù)調(diào)度的方法存在由于單一操作類型對應(yīng)任務(wù)過多而將其他操作類型的任務(wù)阻塞的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種云操作系統(tǒng)的任務(wù)調(diào)度方法及裝置,以解決現(xiàn)有技術(shù)中用于實現(xiàn)任務(wù)調(diào)度的方法存在的由于單一操作類型對應(yīng)任務(wù)過多而將其他操作類型的任務(wù)阻塞的問題。
為了實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種云操作系統(tǒng)的任務(wù)處理方法,包括:
步驟1:接收待處理的多個第一任務(wù);
步驟2:將所述多個第一任務(wù)中對應(yīng)相同操作類型的任務(wù)劃分至同一任務(wù)集;
步驟3:利用多個線程池對多個所述任務(wù)集中包含的第一任務(wù)進行處理,其中,所述線程池與所述任務(wù)集一一對應(yīng)。
優(yōu)選的,還包括:
接收待處理的多個第二任務(wù),所述多個第二任務(wù)對應(yīng)同一操作類型;
如果與所述第二任務(wù)對應(yīng)的線程池中存在N個第一任務(wù)處理完畢,則由多個第二任務(wù)中選取出優(yōu)先級最高的N個第二任務(wù)放入對應(yīng)線程池中進行處理,其中,N同時小于所述第一任務(wù)的總數(shù)量及所述第二任務(wù)的總數(shù)量。
優(yōu)選的,還包括:
將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,并指示每個節(jié)點對分配到的所述第一任務(wù)執(zhí)行所述步驟2和步驟3。
優(yōu)選的,還包括:
預(yù)先設(shè)定N個分配基數(shù),所述N個分配基數(shù)包括0至N-1,并將該N個分配基數(shù)平均分配給每個節(jié)點,其中N大于節(jié)點數(shù)量;
對應(yīng)的,將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,包括:
將每個所述第一任務(wù)的ID號除以N得到對應(yīng)的余數(shù),并將每個所述第一任務(wù)分配至具有與其余數(shù)相同的分配基數(shù)的節(jié)點進行處理。
優(yōu)選的,還包括:
如果所述分布式系統(tǒng)中出現(xiàn)故障節(jié)點,則將所述故障節(jié)點的分配基數(shù)按照平均原則分配至該分布式系統(tǒng)中的其他節(jié)點,確定該故障節(jié)點當前正在處理的第一任務(wù)處理失敗,并將所述故障節(jié)點未開始處理的第一任務(wù)作為新的任務(wù)等待下一次被分配。
優(yōu)選的,還包括:
如果所述分布式系統(tǒng)中出現(xiàn)新增節(jié)點,則將該分布式系統(tǒng)中每個節(jié)點具有的分配基數(shù)按照平均原則分配至該新增節(jié)點。
一種云操作系統(tǒng)的任務(wù)處理裝置,包括:
第一接收模塊,用于接收待處理的多個第一任務(wù);
劃分模塊,用于將所述多個第一任務(wù)中對應(yīng)相同操作類型的任務(wù)劃分至同一任務(wù)集;
處理模塊,用于利用多個線程池對多個所述任務(wù)集中包含的第一任務(wù)進行處理,其中,所述線程池與所述任務(wù)集一一對應(yīng)。
優(yōu)選的,還包括:
第二接收模塊,用于接收待處理的多個第二任務(wù),所述多個第二任務(wù)對應(yīng)同一操作類型;
選取模塊,用于如果與所述第二任務(wù)對應(yīng)的線程池中存在N個第一任務(wù)處理完畢,則由多個第二任務(wù)中選取出優(yōu)先級最高的N個第二任務(wù)放入對應(yīng)線程池中進行處理,其中,N同時小于所述第一任務(wù)的總數(shù)量及所述第二任務(wù)的總數(shù)量。
優(yōu)選的,還包括:
分配模塊,用于將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,并指示每個節(jié)點對分配到的所述第一任務(wù)利用所述劃分模塊及處理模塊實現(xiàn)對應(yīng)的操作。
優(yōu)選的,還包括:
預(yù)設(shè)模塊,用于預(yù)先設(shè)定N個分配基數(shù),所述N個分配基數(shù)包括0至N-1,并將該N個分配基數(shù)平均分配給每個節(jié)點,其中N大于節(jié)點數(shù)量;
所述分配模塊包括:
分配單元,用于:將每個所述第一任務(wù)的ID號除以N得到對應(yīng)的余數(shù),并將每個所述第一任務(wù)分配至具有與其余數(shù)相同的分配基數(shù)的節(jié)點進行處理。
本發(fā)明提供了一種云操作系統(tǒng)的任務(wù)處理方法及裝置,其中該方法包括:接收待處理的多個第一任務(wù);將所述多個第一任務(wù)中對應(yīng)相同操作類型的任務(wù)劃分至同一任務(wù)集;利用多個線程池對多個所述任務(wù)集中包含的第一任務(wù)進行處理,其中,所述線程池與所述任務(wù)集一一對應(yīng)。本申請公開的技術(shù)方案中,獲取到多個第一任務(wù)時,將同一操作類型的第一任務(wù)劃分至一個任務(wù)集,由此,得到多個與不同操作類型分別對應(yīng)的任務(wù)集,進而利用多個線程池以一一對應(yīng)的關(guān)系對其對應(yīng)的任務(wù)集包含的全部第一任務(wù)進行處理,從而能夠使得不同操作類型的任務(wù)能夠同時得到處理,避免了現(xiàn)有技術(shù)中由于單一操作類型對應(yīng)任務(wù)過多而降其他操作類型的任務(wù)阻塞的情況發(fā)生。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法的流程圖;
圖2為本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,其示出了本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法的流程圖,可以包括:
S11:接收待處理的多個第一任務(wù)。
其中需要說明的是,第一任務(wù)中的“第一”和下文中的“第二”互相區(qū)分,用于表示不同批次的任務(wù),無其他實質(zhì)意義。
S12:將多個第一任務(wù)中對應(yīng)相同操作類型的任務(wù)劃分至同一任務(wù)集。
確定出多個第一任務(wù)中具有相同操作類型的任務(wù),如操作類型可以包括開機、關(guān)機、創(chuàng)建虛擬機等,具體可以根據(jù)實際需要進行確定,將具有相同操作類型的任務(wù)劃分至同一任務(wù)集,由此可以得到多個任務(wù)集,每個任務(wù)集中的任務(wù)均對應(yīng)同一操作類型。
S13:利用多個線程池對多個任務(wù)集中包含的第一任務(wù)進行處理,其中,線程池與任務(wù)集一一對應(yīng)。
設(shè)置多個線程池,每個線程池對應(yīng)一種操作類型,也即對應(yīng)一個任務(wù)集,由此,利用多個線程池同時對其對應(yīng)的任務(wù)集進行處理,從而使得不同操作類型的任務(wù)能夠同時得到處理。
本申請公開的技術(shù)方案中,獲取到多個第一任務(wù)時,將同一操作類型的第一任務(wù)劃分至一個任務(wù)集,由此,得到多個與不同操作類型分別對應(yīng)的任務(wù)集,進而利用多個線程池以一一對應(yīng)的關(guān)系對其對應(yīng)的任務(wù)集包含的全部第一任務(wù)進行處理,從而能夠使得不同操作類型的任務(wù)能夠同時得到處理,避免了現(xiàn)有技術(shù)中由于單一操作類型對應(yīng)任務(wù)過多而降其他操作類型的任務(wù)阻塞的情況發(fā)生。
另外需要說明的是,線程池的創(chuàng)建可以是與Spring結(jié)合的,在配置文件中配置線程池最大工作隊列緩存工作數(shù)、異步工作線程池的大小、回調(diào)執(zhí)行的線程池大小及任務(wù)持久化處理器等。對于不同的操作類型,可以通過配置線程池的創(chuàng)建策略實現(xiàn),可以是ByClass也可以是ByMethod,如果配置成ByClass,標識該操作類型中的所有任務(wù)都加入該線程池中處理,如果配置成ByMethod,標識只有該操作的任務(wù)會加入相應(yīng)的線程池中處理,具體來說,操作類型如對多個計算機關(guān)機,對應(yīng)的操作如對任一指定的計算機關(guān)機,也即本申請中可以將同一操作類型的任務(wù)均放入同一線程池進行處理,進一步的還可以將同一操作的任務(wù)放入同一線程池(該線程池可以為操作類型對應(yīng)線程池的子線程池)進行處理,具體可以根據(jù)實際需要進行設(shè)定,均在本發(fā)明的保護范圍之內(nèi)。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法,還可以包括:
接收待處理的多個第二任務(wù),多個第二任務(wù)對應(yīng)同一操作類型;
如果與第二任務(wù)對應(yīng)的線程池中存在N個第一任務(wù)處理完畢,則由多個第二任務(wù)中選取出優(yōu)先級最高的N個第二任務(wù)放入對應(yīng)線程池中進行處理,其中,N同時小于第一任務(wù)的總數(shù)量及第二任務(wù)的總數(shù)量。
如果接收到多個第二任務(wù),且該多個第二任務(wù)對應(yīng)的操作類型對應(yīng)線程池中正常處理第一任務(wù),則判斷是否存在N個第一任務(wù)處理完畢,如果是,則由第二任務(wù)中選取優(yōu)先級最高的N個第二任務(wù)處理,否則,則等待直至存在處理完畢的第一任務(wù),由此基于任務(wù)優(yōu)先級確定出任務(wù)的執(zhí)行順序,能夠保證優(yōu)先級高的任務(wù)優(yōu)先執(zhí)行,提高了響應(yīng)質(zhì)量。另外需要說明的是,不同任務(wù)的優(yōu)先級可以是請求對任務(wù)進行處理的一方預(yù)先根據(jù)實際需要進行設(shè)定的,在此不做具體限定。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法,還可以包括:
將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,并指示每個節(jié)點對分配到的所述第一任務(wù)執(zhí)行所述步驟S12和步驟S13。
其中,將第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,從而有效提高了任務(wù)的執(zhí)行效率。另外,對于任務(wù)的分配具體可以基于預(yù)先設(shè)定的負載均衡策略實現(xiàn),在此不做具體限定。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法,還可以包括:
預(yù)先設(shè)定N個分配基數(shù),所述N個分配基數(shù)包括0至N-1,并將該N個分配基數(shù)平均分配給每個節(jié)點,其中N大于節(jié)點數(shù)量;
對應(yīng)的,將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,可以包括:
將每個所述第一任務(wù)的ID號除以N得到對應(yīng)的余數(shù),并將每個所述第一任務(wù)分配至具有與其余數(shù)相同的分配基數(shù)的節(jié)點進行處理。
其中,每個節(jié)點可以具有一個或者多個分配基數(shù),具體來說,每個節(jié)點包含的分配基數(shù)的個數(shù)通常是基本相同的,如N為10時則是將0至9這幾個分配基數(shù)平均分配給每個節(jié)點;從而將每個任務(wù)分配至具有與其余數(shù)具有相同分配基數(shù)的節(jié)點上,實現(xiàn)任務(wù)的平均分配,舉例說明上述步驟:節(jié)點的數(shù)量為3個(分別表示為A、B、C),分配給每個節(jié)點的分配基數(shù)可以為:A=0、1、2;B=3、4、5;C=6、7、8、9。第一任務(wù)的數(shù)量為10個,ID號分別為1至10,以ID號為9進行說明,9除以10的余數(shù)為9,因此將其分配到具有分配基數(shù)9的節(jié)點C上,以此類推。
另外需要說明的是,對應(yīng)可以設(shè)置有任務(wù)主體表,任務(wù)在該表中具有int自增類型的主鍵ID。
另外需要說明的是,將任務(wù)分配到節(jié)點上以后,該節(jié)點可以由數(shù)據(jù)庫中獲取需處理的數(shù)據(jù),將該數(shù)據(jù)組裝成可以執(zhí)行的對象,進而將該對象分配到對應(yīng)線程池中進行處理,也即實現(xiàn)任務(wù)的分配。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法,還可以包括:
如果所述分布式系統(tǒng)中出現(xiàn)故障節(jié)點,則將所述故障節(jié)點的分配基數(shù)按照平均原則分配至該分布式系統(tǒng)中的其他節(jié)點,確定該故障節(jié)點當前正在處理的第一任務(wù)處理失敗,并將所述故障節(jié)點未開始處理的第一任務(wù)作為新的任務(wù)等待下一次被分配。
需要說明的是,將故障節(jié)點的分配基數(shù)按照平均原則分配至該分布式系統(tǒng)中的其他節(jié)點也即使得此次分配完成后除故障節(jié)點外每個節(jié)點包括的分配基數(shù)的個數(shù)基本相同,如節(jié)點的數(shù)量為3個(分別表示為A、B、C),分配給每個節(jié)點的分配基數(shù)可以為:A=0、1、2;B=3、4、5;C=6、7、8、9;如果故障節(jié)點為A,則將0和1分配給節(jié)點B,將2分配給節(jié)點C。通過這種分配方式保證了各節(jié)點所分配任務(wù)數(shù)量的平均性。另外,還可以記錄每個任務(wù)執(zhí)行的具體情況,以在任務(wù)執(zhí)行成功或者執(zhí)行失敗時返回對應(yīng)的信息,方便獲知;還可以將任務(wù)取消、暫?;蛘叨〞r執(zhí)行等,均可以根據(jù)實際需要進行設(shè)定。其中將任務(wù)定時執(zhí)行可以是與Spring的quartz結(jié)合,定時掃描數(shù)據(jù)庫中定點執(zhí)行的任務(wù),將任務(wù)添加到任務(wù)池中,開始執(zhí)行任務(wù),從而實現(xiàn)定時執(zhí)行的功能。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法,還可以包括:
如果所述分布式系統(tǒng)中出現(xiàn)新增節(jié)點,則將該分布式系統(tǒng)中每個節(jié)點具有的分配基數(shù)按照平均原則分配至該新增節(jié)點。
對于刪除節(jié)點的情況可以按照上述將被刪除的節(jié)點看做故障節(jié)點實現(xiàn)分配基數(shù)的分配;將該分布式系統(tǒng)中每個節(jié)點具有的分配基數(shù)按照平均原則分配至該新增節(jié)點也即分配后包括新增節(jié)點在內(nèi)的每個節(jié)點包含的分配基數(shù)的個數(shù)基本相同,如節(jié)點的數(shù)量為3個(分別表示為A、B、C),分配給每個節(jié)點的分配基數(shù)可以為:A=0、1、2;B=3、4、5;C=6、7、8、9;新增了一個節(jié)點D,則將節(jié)點A的2、節(jié)點B的3及節(jié)點C的6均分配給節(jié)點D。通過這種分配方式保證了各節(jié)點所分配任務(wù)數(shù)量的平均性。
另外需要說明的是,本申請公開的上述技術(shù)方案還可以實時對任務(wù)進行備份,從而如果出現(xiàn)系統(tǒng)崩潰的情況,當系統(tǒng)重啟時設(shè)置重新導(dǎo)入的機制,即掃描備份任務(wù)的數(shù)據(jù)庫,查看未完成的任務(wù)并將未完成的任務(wù)再次進行分配并執(zhí)行,保證了數(shù)據(jù)的一致性。還可以提供一個任務(wù)統(tǒng)一管理的交互界面,從而使得用戶可以通過該交互節(jié)點獲知每個任務(wù)的執(zhí)行的具體情況,可以包括任務(wù)執(zhí)行成功與否、任務(wù)執(zhí)行開始時間和結(jié)束時間等詳細信息。
本發(fā)明實施例還提供了一種云操作系統(tǒng)的任務(wù)處理裝置,如圖2所示,可以包括:
第一接收模塊11,用于接收待處理的多個第一任務(wù);
劃分模塊12,用于將多個第一任務(wù)中對應(yīng)相同操作類型的任務(wù)劃分至同一任務(wù)集;
處理模塊13,用于利用多個線程池對多個任務(wù)集中包含的第一任務(wù)進行處理,其中,線程池與任務(wù)集一一對應(yīng)。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置,還可以包括:
第二接收模塊,用于接收待處理的多個第二任務(wù),多個第二任務(wù)對應(yīng)同一操作類型;
選取模塊,用于如果與第二任務(wù)對應(yīng)的線程池中存在N個第一任務(wù)處理完畢,則由多個第二任務(wù)中選取出優(yōu)先級最高的N個第二任務(wù)放入對應(yīng)線程池中進行處理,其中,N同時小于第一任務(wù)的總數(shù)量及第二任務(wù)的總數(shù)量。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置,還可以包括:
分配模塊,用于將所述多個第一任務(wù)平均分配至對應(yīng)分布式系統(tǒng)的每個節(jié)點上進行并行處理,并指示每個節(jié)點對分配到的所述第一任務(wù)利用所述劃分模塊及處理模塊實現(xiàn)對應(yīng)的操作。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置,還可以包括:
預(yù)設(shè)模塊,用于預(yù)先設(shè)定N個分配基數(shù),所述N個分配基數(shù)包括0至N-1,并將該N個分配基數(shù)平均分配給每個節(jié)點,其中N大于節(jié)點數(shù)量;
所述分配模塊可以包括:
分配單元,用于:將每個所述第一任務(wù)的ID號除以N得到對應(yīng)的余數(shù),并將每個所述第一任務(wù)分配至具有與其余數(shù)相同的分配基數(shù)的節(jié)點進行處理。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置,還可以包括:
故障處理模塊,用于:如果所述分布式系統(tǒng)中出現(xiàn)故障節(jié)點,則將所述故障節(jié)點的分配基數(shù)按照平均原則分配至該分布式系統(tǒng)中的其他節(jié)點,確定該故障節(jié)點當前正在處理的第一任務(wù)處理失敗,并將所述故障節(jié)點未開始處理的第一任務(wù)作為新的任務(wù)等待下一次被分配。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置,還可以包括:
新增處理模塊,用于:如果所述分布式系統(tǒng)中出現(xiàn)新增節(jié)點,則將該分布式系統(tǒng)中每個節(jié)點具有的分配基數(shù)按照平均原則分配至該新增節(jié)點。
本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理裝置中相關(guān)部分的說明請參見本發(fā)明實施例提供的一種云操作系統(tǒng)的任務(wù)處理方法中對應(yīng)部分的詳細說明,在此不再贅述。
對所公開的實施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。