本申請(qǐng)涉及數(shù)據(jù)處理技術(shù),特別是涉及一種任務(wù)分配方法及系統(tǒng)。
背景技術(shù):在分布式服務(wù)器集群(如MySQL服務(wù)器集群)中,統(tǒng)計(jì)結(jié)果數(shù)據(jù)通常會(huì)在分布式計(jì)算平臺(tái)(例如Hadoop)上被計(jì)算好后,會(huì)批量地將所述計(jì)算好的數(shù)據(jù)導(dǎo)入各個(gè)MySQL服務(wù)器中,然后再進(jìn)行后續(xù)的處理。其中,所述導(dǎo)入過(guò)程是采用帶有優(yōu)先級(jí)的工作隊(duì)列實(shí)現(xiàn)的。出于容災(zāi)考慮,這些MySQL服務(wù)器分布在不同的機(jī)房,若將所述計(jì)算后的數(shù)據(jù)作為任務(wù),則處理任務(wù)的各個(gè)worker也分布在不同的機(jī)房。其中,所述worker為處理任務(wù)的進(jìn)程或線程。通常采用預(yù)先分配的方式進(jìn)行任務(wù)分配,即一個(gè)任務(wù)在進(jìn)入隊(duì)列時(shí)就為其分配了一個(gè)worker,表示由這個(gè)worker負(fù)責(zé)該任務(wù)的調(diào)度和處理。但這種分配方法存在兩個(gè)嚴(yán)重的問(wèn)題:一是各個(gè)worker處理的速度可能是不同的,若隊(duì)列中要處理的任務(wù)順序是A、B和C,他們分別是worker1、worker2和worker3的任務(wù)。由于worker1處理速度比較慢正在處理任務(wù),則A暫時(shí)不能被處理,若此時(shí)worker2和worker3是空閑的,也同樣不能處理任務(wù)B和C,這導(dǎo)致整體隊(duì)列任務(wù)的處理時(shí)間比較長(zhǎng),處理效率較低,并且浪費(fèi)資源。二是在一些異常情況下,如果處理任務(wù)的某個(gè)worker進(jìn)程退出了,或worker本身宕機(jī)了,則會(huì)導(dǎo)致分配在這個(gè)worker上的所有任務(wù)在一段時(shí)間內(nèi)都無(wú)法被及時(shí)處理,即任務(wù)“餓死”。此時(shí)往往要配合專門(mén)的監(jiān)控和再分配策略來(lái)保證工作隊(duì)列的正常運(yùn)行。綜上所述,現(xiàn)有技術(shù)中的任務(wù)分配方法任務(wù)的處理時(shí)間比較長(zhǎng),處理效率較低,并且浪費(fèi)資源,甚至可能導(dǎo)致任務(wù)“餓死”的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)?zhí)峁┮环N任務(wù)分配方法及系統(tǒng),以解決現(xiàn)有技術(shù)中的任務(wù)分配方法任務(wù)的處理時(shí)間比較長(zhǎng),處理效率較低,并且浪費(fèi)資源,甚至可能導(dǎo)致任務(wù)“餓死”的問(wèn)題。為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種任務(wù)分配方法,包括:任務(wù)進(jìn)入工作隊(duì)列,并分配所述任務(wù)的目標(biāo)服務(wù)器;當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)服務(wù)器上存在空閑worker,則由所述空閑worker搶占并處理所述任務(wù);若目標(biāo)服務(wù)器上不存在空閑worker,則在所有服務(wù)器中查找與所述任務(wù)的目標(biāo)服務(wù)器距離最近的空閑worker,由所述空閑worker搶占并處理所述任務(wù),其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。相應(yīng)的,本申請(qǐng)還公開(kāi)了一種任務(wù)分配系統(tǒng),包括:分配服務(wù)器模塊,用于任務(wù)進(jìn)入工作隊(duì)列,并分配所述任務(wù)的目標(biāo)服務(wù)器;第一搶占模塊,用于當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)服務(wù)器上存在空閑worker,則由所述空閑worker搶占并處理所述任務(wù);第二搶占模塊,用于若目標(biāo)服務(wù)器上不存在空閑worker,則在所有服務(wù)器中查找與所述任務(wù)的目標(biāo)服務(wù)器距離最近的空閑worker,由所述空閑worker搶占并處理所述任務(wù),其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):首先,本申請(qǐng)采用預(yù)先分配和worker搶占相結(jié)合的方式進(jìn)行任務(wù)的分配處理,在任務(wù)進(jìn)入工作隊(duì)列時(shí),會(huì)分配所述任務(wù)目標(biāo)處理位置,即當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)處理位置上存在空閑worker,則由該空閑worker搶占并處理所述任務(wù)。否則,由空閑worker進(jìn)行搶占來(lái)處理任務(wù),即查找各個(gè)機(jī)房中處理位置距離所述任務(wù)的目標(biāo)處理位置最近的空閑worker,由該空閑worker搶占并處理所述任務(wù),其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。這使得所有任務(wù)都會(huì)有處理的worker,從而避免任務(wù)了“餓死”情況的出現(xiàn)。并且任務(wù)從任務(wù)隊(duì)列中出隊(duì)后就有空閑worker進(jìn)行處理,有效的縮短了處理時(shí)間,提高了處理效率,同時(shí)根據(jù)所述距離選取空閑worker可以減少資源的浪費(fèi)。其次,本申請(qǐng)進(jìn)一步可以通過(guò)計(jì)算各個(gè)機(jī)房?jī)?nèi)空閑worker所在的服務(wù)器標(biāo)識(shí)與所述任務(wù)的目標(biāo)服務(wù)器標(biāo)識(shí)之間的距離,將所有空閑worker按照所述距離由小到大的順序進(jìn)行排列,距離最小的worker搶占到所述任務(wù)并進(jìn)行處理。此時(shí)可以最大化的減少任務(wù)傳輸對(duì)資源的浪費(fèi),提高資源的利用率,進(jìn)一步提高任務(wù)的處理效率。再次,本申請(qǐng)還可以用于多任務(wù)同時(shí)處理的情況,當(dāng)多個(gè)任務(wù)同時(shí)從工作隊(duì)列中出隊(duì)之后,可以將所有任務(wù)按照優(yōu)先級(jí)由高到低的排列順序分配對(duì)應(yīng)的處理順序,對(duì)于優(yōu)先級(jí)相同的任務(wù),針對(duì)每個(gè)任務(wù),分別計(jì)算各個(gè)worker的執(zhí)行位置與所述任務(wù)預(yù)期的執(zhí)行位置之間的距離,其中距離最小的worker搶占到所述任務(wù)并進(jìn)行處理。使得多任務(wù)同時(shí)處理是能夠更好的分配各個(gè)任務(wù),針對(duì)預(yù)期的執(zhí)行位置相同的幾個(gè)任務(wù)不必進(jìn)行等待,使得任務(wù)分配更加合理,并且加快了處理速度。附圖說(shuō)明圖1是本申請(qǐng)實(shí)施例所述一種任務(wù)分配方法流程圖;圖2是本申請(qǐng)實(shí)施例所述一種任務(wù)分配方法中空閑worker搶占任務(wù)流程圖;圖3是本申請(qǐng)優(yōu)選實(shí)施例所述一種任務(wù)分配方法流程圖;圖4是本申請(qǐng)實(shí)施例所述多任務(wù)同時(shí)等待分配示意圖;圖5是本申請(qǐng)實(shí)施例所述一種任務(wù)分配系統(tǒng)結(jié)構(gòu)圖。具體實(shí)施方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。在分布式服務(wù)器集群(本申請(qǐng)實(shí)施例以MySQL服務(wù)器為例進(jìn)行說(shuō)明,但不限于MySQL服務(wù)器集群)中,統(tǒng)計(jì)結(jié)果數(shù)據(jù)在分布式計(jì)算平臺(tái)上被計(jì)算好,批量地將所述計(jì)算好的數(shù)據(jù)導(dǎo)入各個(gè)MySQL服務(wù)器中,然后再進(jìn)行后續(xù)的處理。其中,所述計(jì)算好的數(shù)據(jù)可以以文本文件的形式導(dǎo)入,并且所述導(dǎo)入過(guò)程是采用帶有優(yōu)先級(jí)的工作隊(duì)列實(shí)現(xiàn)的。出于容災(zāi)考慮,這些MySQL服務(wù)器分布在不同的機(jī)房,若將所述計(jì)算后的數(shù)據(jù)作為任務(wù),則處理任務(wù)的各個(gè)worker也分布在不同的機(jī)房。針對(duì)分布在不同機(jī)房的服務(wù)器,現(xiàn)有技術(shù)中的任務(wù)分配方法為預(yù)先分配方法,即一個(gè)任務(wù)在進(jìn)入隊(duì)列時(shí)就為其分配了一個(gè)worker,表示由這個(gè)worker負(fù)責(zé)該任務(wù)的調(diào)度和處理。但是這種分配方法任務(wù)的處理時(shí)間比較長(zhǎng),處理效率較低,并且浪費(fèi)資源,甚至可能導(dǎo)致任務(wù)“餓死”的問(wèn)題。本申請(qǐng)采用預(yù)先分配和worker搶占相結(jié)合的方式進(jìn)行任務(wù)的分配處理,可以避免任務(wù)了“餓死”情況的出現(xiàn),并且任務(wù)從任務(wù)隊(duì)列中出隊(duì)后就有空閑worker進(jìn)行處理,有效的縮短了處理時(shí)間,提高了處理效率,同時(shí)根據(jù)所述距離選取空閑worker可以減少資源的浪費(fèi)。參照?qǐng)D1,其給出了本申請(qǐng)實(shí)施例所述一種任務(wù)分配方法流程圖。步驟11,任務(wù)進(jìn)入工作隊(duì)列,并分配所述任務(wù)的目標(biāo)服務(wù)器;一個(gè)任務(wù)在建立時(shí)設(shè)置了對(duì)應(yīng)的屬性,如任務(wù)標(biāo)識(shí)、任務(wù)優(yōu)先級(jí)等,本申請(qǐng)還在任務(wù)的屬性中設(shè)置了所述任務(wù)的目標(biāo)服務(wù)器。所述目標(biāo)服務(wù)器是預(yù)先設(shè)定的處理所述任務(wù)的服務(wù)器。但在本申請(qǐng)中所述任務(wù)可以不由目標(biāo)服務(wù)器進(jìn)行處理。因此在任務(wù)進(jìn)入工作隊(duì)列時(shí),會(huì)根據(jù)屬性中的設(shè)定,分配所述任務(wù)的目標(biāo)服務(wù)器。具體實(shí)施中,可以將服務(wù)器的IP地址作為服務(wù)器標(biāo)識(shí),用于唯一標(biāo)識(shí)一個(gè)服務(wù)器,因此,針對(duì)所述任務(wù)記錄對(duì)應(yīng)的服務(wù)器標(biāo)識(shí)。為了易于存儲(chǔ),可以將對(duì)應(yīng)的IP地址轉(zhuǎn)化為一個(gè)整數(shù)。當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)服務(wù)器上存在空閑worker,則執(zhí)行步驟12,若目標(biāo)服務(wù)器上不存在空閑worker,執(zhí)行步驟13。步驟12,由所述空閑worker搶占并處理所述任務(wù);步驟13,在所有服務(wù)器中查找與所述任務(wù)的目標(biāo)服務(wù)器最近的空閑worker,由所述空閑worker搶占并處理所述任務(wù)。每個(gè)任務(wù)都預(yù)先分配了對(duì)應(yīng)的目標(biāo)服務(wù)器,因此,當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),會(huì)檢測(cè)各個(gè)服務(wù)器上是否存在空閑worker。若目標(biāo)服務(wù)器上存在空閑worker,則所述空閑worker搶占并處理所述任務(wù);否則,查找在其他服務(wù)器的空閑worker,選擇與所述任務(wù)的目標(biāo)服務(wù)器最近的空閑worker來(lái)?yè)屨疾⑻幚硭鋈蝿?wù)。其中,若目標(biāo)服務(wù)器中存在多個(gè)worker,則選擇其中最后處理完任務(wù)的空閑worker搶占并處理當(dāng)前任務(wù)。其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。參照?qǐng)D2,其給出了本申請(qǐng)實(shí)施例所述一種任務(wù)分配方法中空閑worker搶占任務(wù)流程圖。其中,空閑worker搶占任務(wù)的具體方法包括:步驟131,分別計(jì)算空閑worker所在的服務(wù)器與所述任務(wù)的目標(biāo)服務(wù)器之間的距離;若目標(biāo)服務(wù)器中不存在空閑worker,則此時(shí)需要查找其他服務(wù)器中的空閑worker來(lái)處理任務(wù)。因此,分別計(jì)算所有空閑worker所在的服務(wù)器,與所述任務(wù)的目標(biāo)服務(wù)器的距離。若使用IP地址計(jì)算的某一整數(shù)值表示服務(wù)器標(biāo)識(shí),例如worker11所在服務(wù)器的標(biāo)識(shí)為123,worker22所在的服務(wù)器標(biāo)識(shí)為144,任務(wù)的目標(biāo)服務(wù)器標(biāo)識(shí)為134。則worker11所在的服務(wù)器與所述任務(wù)的目標(biāo)服務(wù)器之間的距離為|123-134|=11。Worker22所在的服務(wù)器與所述任務(wù)的目標(biāo)服務(wù)器之間的距離為|144-134|=10。步驟132,將所有空閑worker按照所述距離由小到大的順序進(jìn)行排序;上述計(jì)算了各個(gè)空閑worker所在的服務(wù)器與所述任務(wù)的目標(biāo)服務(wù)器之間的距離,將所有空閑worker按照所述距離由小到大的順序進(jìn)行排序,就可以知道各個(gè)空閑worker針對(duì)所述任務(wù)距離遠(yuǎn)近的排序了。例如,步驟131所述的例子中,空閑worker按照所述距離由小到大的排列順序即為:worker22<worker11。步驟133,按照所述距離的排序,由距離最小的空閑worker搶占所述任務(wù)并進(jìn)行處理?,F(xiàn)有技術(shù)的預(yù)先分配中,會(huì)為任務(wù)指定worker,所述任務(wù)只能由指定的worker來(lái)執(zhí)行。而本申請(qǐng)僅指定了目標(biāo)服務(wù)器,并且若目標(biāo)服務(wù)器中的worker都沒(méi)有空閑,則所述任務(wù)可有其他服務(wù)器搶占并處理?,F(xiàn)有技術(shù)中也存在由worker搶占任務(wù)的方法,但是該搶占方法中,任務(wù)處理的比較快的worker通常能夠搶占到任務(wù)。但是由于任務(wù)的搶占沒(méi)有具體的限定,可能搶占到任務(wù)的worker所在的服務(wù)器與任務(wù)的距離非常遠(yuǎn),因此,通常資源消耗比較大,因此會(huì)導(dǎo)致任務(wù)的處理成本升高,并且系統(tǒng)的穩(wěn)定系比較低。綜上所述,首先,本申請(qǐng)采用預(yù)先分配和worker搶占相結(jié)合的方式進(jìn)行任務(wù)的分配處理,在任務(wù)進(jìn)入工作隊(duì)列時(shí),會(huì)分配所述任務(wù)目標(biāo)處理位置,即當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)處理位置上存在空閑worker,則由該空閑worker搶占并處理所述任務(wù)。否則,由空閑worker進(jìn)行搶占來(lái)處理任務(wù),即查找各個(gè)機(jī)房中處理位置距離所述任務(wù)的目標(biāo)處理位置最近的空閑worker,由該空閑worker搶占并處理所述任務(wù),其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。使得所有任務(wù)都會(huì)有處理的worker,從而避免任務(wù)了“餓死”情況的出現(xiàn)。并且任務(wù)從任務(wù)隊(duì)列中出隊(duì)后就有空閑worker進(jìn)行處理,有效的縮短了處理時(shí)間,提高了處理效率,同時(shí)根據(jù)所述距離選取空閑worker可以減少資源的浪費(fèi)。其次,本申請(qǐng)進(jìn)一步可以通過(guò)計(jì)算各個(gè)機(jī)房?jī)?nèi)空閑worker所在的服務(wù)器標(biāo)識(shí)與所述任務(wù)的目標(biāo)服務(wù)器標(biāo)識(shí)之間的距離,將所有空閑worker按照所述距離由小到大的順序進(jìn)行排列,距離最小的worker搶占到所述任務(wù)并進(jìn)行處理。此時(shí)可以最大化的減少任務(wù)傳輸對(duì)資源的浪費(fèi),提高資源的利用率,進(jìn)一步提高任務(wù)的處理效率。具體地,在分布式MySQL集群中,統(tǒng)計(jì)結(jié)果數(shù)據(jù)在Hadoop上被計(jì)算好后,批量地將所述計(jì)算好的數(shù)據(jù)導(dǎo)入各個(gè)MySQL服務(wù)器中,因此實(shí)際處理中,同時(shí)有多個(gè)工作隊(duì)列執(zhí)行數(shù)據(jù)導(dǎo)入的任務(wù),因此可能會(huì)存在同時(shí)有多個(gè)任務(wù)等待被分配的情況,此時(shí)具體做法如下:參照?qǐng)D3,給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種任務(wù)調(diào)度方法流程圖。步驟21,任務(wù)進(jìn)入工作隊(duì)列,以所述任務(wù)的屬性為參數(shù)計(jì)算一個(gè)數(shù)值,并采用所述數(shù)值標(biāo)識(shí)任務(wù)的目標(biāo)服務(wù)器;任務(wù)進(jìn)入工作隊(duì)列時(shí),會(huì)查看所述任務(wù)的屬性,屬性中存儲(chǔ)了任務(wù)的目標(biāo)服務(wù)器標(biāo)識(shí),例如,目標(biāo)服務(wù)器的IP地址,則可以采用某種方法將所述IP地址計(jì)算為一個(gè)整數(shù)值,本申請(qǐng)對(duì)于將IP地址轉(zhuǎn)換為整數(shù)值的方法不做限定。然后使用所述整數(shù)值標(biāo)識(shí)所述任務(wù)的目標(biāo)服務(wù)器。步驟22,當(dāng)任務(wù)從工作隊(duì)列中出隊(duì),并且若干個(gè)任務(wù)同時(shí)等待被分配時(shí),將所有任務(wù)按照優(yōu)先級(jí)由高到低的順序進(jìn)行排序;任務(wù)的屬性中還會(huì)標(biāo)識(shí)任務(wù)的優(yōu)先級(jí),因此,當(dāng)若干個(gè)任務(wù)同時(shí)從工作隊(duì)列中出隊(duì)等待被分配時(shí),首先將所有任務(wù)按照優(yōu)先級(jí)由高到低的順序進(jìn)行排序。例如,任務(wù)01、任務(wù)02、任務(wù)03和任務(wù)04同時(shí)從工作隊(duì)列中出隊(duì)等待被分配,對(duì)應(yīng)的優(yōu)先級(jí)分別是高、低、中和高,將所有任務(wù)按照優(yōu)先級(jí)由高到低的順序進(jìn)行排序,則對(duì)應(yīng)的優(yōu)先級(jí)順序?yàn)椋喝蝿?wù)01=任務(wù)04>任務(wù)03>任務(wù)02。步驟23,按照所述優(yōu)先級(jí)的順序排序分配對(duì)應(yīng)任務(wù)的處理順序;上例中優(yōu)先級(jí)順序?yàn)槿蝿?wù)01=任務(wù)04>任務(wù)03>任務(wù)02,則最先處理的任務(wù)為任務(wù)01和任務(wù)04,然后可以處理任務(wù)3,最后處理任務(wù)02。步驟24,針對(duì)優(yōu)先級(jí)相同的若干個(gè)任務(wù),分別計(jì)算空閑worker所在的服務(wù)器與每個(gè)任務(wù)的目標(biāo)服務(wù)器之間的距離;按照優(yōu)先級(jí)分配任務(wù)的處理順序后,需要針對(duì)優(yōu)先級(jí)相同的若干個(gè)任務(wù),分配處理所述任務(wù)的空閑worker。此時(shí)針對(duì)每個(gè)任務(wù),分別計(jì)算空閑worker所在的服務(wù)器與每個(gè)任務(wù)的目標(biāo)服務(wù)器之間的距離。例如,上述優(yōu)先級(jí)均為高的任務(wù)01和任務(wù)04,分別計(jì)算worker11和worker22所在的服務(wù)器與每個(gè)任務(wù)的目標(biāo)服務(wù)器之間的距離,則任務(wù)01與worker11的距離為23,任務(wù)01與worker22的距離為0,任務(wù)02與worker11的距離為2,任務(wù)02與worker22的距離為13。此時(shí)說(shuō)明worker22是任務(wù)01的目標(biāo)服務(wù)器。具體實(shí)施中,可以不單獨(dú)的檢測(cè)任務(wù)的目標(biāo)服務(wù)器,而直接計(jì)算所述任務(wù)的目標(biāo)服務(wù)器與所有空閑worker所在的服務(wù)器之間的距離,若某一空閑worker所在的服務(wù)器為任務(wù)的目標(biāo)服務(wù)器,則距離為0,即距離最近。步驟25,針對(duì)每個(gè)任務(wù),將所有空閑worker按照所述距離由小到大的順序進(jìn)行排序。例如,針對(duì)任務(wù)01,空閑worker按照所述距離由小到大的排列順序?yàn)閣orker22>worker11。針對(duì)任務(wù)02,空閑worker按照所述距離由小到大的排列順序?yàn)閣orker11>worker22。步驟26,按照所述距離的排序,由距離最小的空閑worker搶占所述任務(wù)并進(jìn)行處理。按照所述距離的排序,由距離最小的空閑worker搶占所述任務(wù)并進(jìn)行處理。則任務(wù)01由worker22搶占并進(jìn)行處理,任務(wù)02由worker11搶占并進(jìn)行處理。綜上所述,本申請(qǐng)還可以用于多任務(wù)同時(shí)處理的情況,當(dāng)多個(gè)任務(wù)同時(shí)從工作隊(duì)列中出隊(duì)之后,可以將所有任務(wù)按照優(yōu)先級(jí)由高到低的排列順序分配對(duì)應(yīng)的處理順序,對(duì)于優(yōu)先級(jí)相同的任務(wù),針對(duì)每個(gè)任務(wù),分別計(jì)算各個(gè)worker的執(zhí)行位置與所述任務(wù)預(yù)期的執(zhí)行位置之間的距離,其中距離最小的worker搶占到所述任務(wù)并進(jìn)行處理。使得多任務(wù)同時(shí)處理是能夠更好的分配各個(gè)任務(wù),針對(duì)預(yù)期的執(zhí)行位置相同的幾個(gè)任務(wù)不必進(jìn)行等待,使得任務(wù)分配更加合理,并且加快了處理速度。參照?qǐng)D4,其給出了本申請(qǐng)實(shí)施例所述多任務(wù)同時(shí)等待分配示意圖。圖4中將各個(gè)任務(wù)和worker看作是平面坐標(biāo)系中的點(diǎn),任務(wù)t1-t7用四邊形表示,其中實(shí)心四邊形t1、t3、t6和t7代表優(yōu)先級(jí)高,空心四邊形t2、t4和t5代表優(yōu)先級(jí)低。圓點(diǎn)表示worker1和worker2。任務(wù)t1-t7為同時(shí)出隊(duì)并等待被分配的任務(wù),首先判斷個(gè)任務(wù)的優(yōu)先級(jí),則t1、t3、t6和t7為優(yōu)先級(jí)高,t2、t4和t5為優(yōu)先級(jí)低。因此首先處理t1、t3、t6和t7,此時(shí)任務(wù)t1-t7的目標(biāo)服務(wù)器均不空閑,并且worker1和worker2均為空閑,計(jì)算worker1和worker2與任務(wù)t1、t3、t6和t7之間的距離,則worker1首先搶占并處理任務(wù)t3,worker2首先搶占并處理任務(wù)t6。若任務(wù)t1-t7的目標(biāo)服務(wù)器都一直處于忙碌狀態(tài),并且worker1和worker2處理任務(wù)的時(shí)間相同,則在任務(wù)t3處理完后,worker會(huì)搶占并處理任務(wù)t1,任務(wù)t6處理完后,worker2會(huì)搶占并處理任務(wù)t7。以此類(lèi)推,worker1會(huì)搶占并處理t4,worker2會(huì)搶占并處理t5,再然后worker1會(huì)搶占到t2。上述過(guò)程僅簡(jiǎn)要介紹任務(wù)的搶占方法,具體處理中,不同的情況可能會(huì)存在不同的處理過(guò)程,此處不應(yīng)理解為是對(duì)本申請(qǐng)的限制。其中,若任務(wù)t1-t7中任一任務(wù)的目標(biāo)服務(wù)器中存在空閑worker,則由其目標(biāo)服務(wù)器中的空閑worker處理。參照?qǐng)D5,其給出了本申請(qǐng)實(shí)施例所述一種任務(wù)分配系統(tǒng)結(jié)構(gòu)圖。相應(yīng)的,本申請(qǐng)還提供了一種任務(wù)分配系統(tǒng),包括分配服務(wù)器模塊11,優(yōu)先級(jí)排序模塊12,分配處理順序模塊13,第一搶占模塊14和第二搶占模塊15,其中,分配服務(wù)器模塊11,用于任務(wù)進(jìn)入工作隊(duì)列,并分配所述任務(wù)的目標(biāo)服務(wù)器;第一搶占模塊14,用于當(dāng)任務(wù)從工作隊(duì)列中出隊(duì)時(shí),若目標(biāo)服務(wù)器上存在空閑worker,則由所述空閑worker搶占并處理所述任務(wù);第二搶占模塊15,用于若目標(biāo)服務(wù)器上不存在空閑worker,則在所有服務(wù)器中查找與所述任務(wù)的目標(biāo)服務(wù)器距離最近的空閑worker,由所述空閑worker搶占并處理所述任務(wù),其中,所述worker為處理任務(wù)的進(jìn)程或處理任務(wù)的線程。所述第二搶占模塊15,包括:計(jì)算距離子模塊151,用于分別計(jì)算空閑worker所在的服務(wù)器與所述任務(wù)的目標(biāo)服務(wù)器之間的距離;距離排序子模塊152,用于將所有空閑worker按照所述距離由小到大的順序進(jìn)行排序。搶占子模塊153,用于按照所述距離的排序,由距離最小的空閑worker搶占所述任務(wù)并進(jìn)行處理。優(yōu)選的,所述的系統(tǒng)還包括:優(yōu)先級(jí)排序模塊12,用于將所有任務(wù)按照優(yōu)先級(jí)由高到低的順序進(jìn)行排序;分配處理順序模塊13,用于按照所述優(yōu)先級(jí)的順序排序分配對(duì)應(yīng)任務(wù)的處理順序。優(yōu)選的,所述分配服務(wù)器模塊,還用于以所述任務(wù)的屬性為參數(shù)計(jì)算一個(gè)數(shù)值,并采用所述數(shù)值標(biāo)識(shí)任務(wù)的目標(biāo)處理位置。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)......”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。以上對(duì)本申請(qǐng)所提供的一種任務(wù)分配方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。