[0072]關(guān)于本實(shí)施例的裝置的其他細(xì)節(jié),還可參考第一實(shí)施例的方法,在此不再重復(fù)。
[0073]根據(jù)本實(shí)施例的計(jì)算任務(wù)處理裝置,通過將子流程計(jì)算所需要的輸入數(shù)據(jù)存儲(chǔ)在隊(duì)列里,從而解除了多個(gè)子流程之間的時(shí)序強(qiáng)依賴性。按照這種方式,每個(gè)任務(wù)處理線程并不需要等待前一子流程的運(yùn)算結(jié)果,因此可以提升包括多個(gè)子流程的計(jì)算任務(wù)的處理效率。
[0074]第五實(shí)施例
[0075]本實(shí)施例提供一種計(jì)算任務(wù)處理裝置,本實(shí)施例與第四實(shí)施例類似,其不同之處在于,參閱圖8,本實(shí)施例的裝置還包括:調(diào)整模塊701,用于調(diào)整所述子流程處理模塊603的并發(fā)數(shù)量??梢岳斫?,對(duì)于一個(gè)計(jì)算任務(wù),其每個(gè)子流程的需要的處理時(shí)間是不同的。以兩個(gè)子流程fl與f2為例,其處理時(shí)間分別為tl與t2,且tl〈t2。如果對(duì)子流程fl與f2分別創(chuàng)建相同數(shù)量的子流程處理模塊,很明顯,由于tl〈t2,對(duì)于整個(gè)計(jì)算任務(wù)而言,子流程Π對(duì)應(yīng)的子流程處理模塊在部分時(shí)間內(nèi)是處理空閑狀態(tài),或者說,子流程f2對(duì)應(yīng)的子流程處理模塊是處于堵塞狀態(tài)。為了解決這種狀態(tài),可以調(diào)整每個(gè)子流程對(duì)應(yīng)的子流程處理模塊的并發(fā)數(shù)量。在以上的實(shí)例中,可以減少子流程fl的子流程處理模塊的并發(fā)數(shù)量,或者增加子流程f2的子流程處理模塊的并發(fā)數(shù)量,以使兩個(gè)子流程的處理速度達(dá)成平衡狀態(tài)。
[0076]可以理解,子流程處理模塊的并發(fā)數(shù)量需要結(jié)合考慮所有的子流程,使得所有子流程的處理速度接近一致。
[0077]在一個(gè)實(shí)例中,調(diào)整是根據(jù)用戶輸入的數(shù)量進(jìn)行的。例如,計(jì)算裝置100可以提供管理子流程處理模塊并發(fā)數(shù)量調(diào)整的界面,用戶可以根據(jù)子流程的堵塞狀態(tài)設(shè)置對(duì)應(yīng)的子流程處理模塊的并發(fā)數(shù)量。然后,計(jì)算裝置100根據(jù)用戶輸入的數(shù)量調(diào)整子流程處理模塊的并發(fā)數(shù)量。
[0078]在另一個(gè)實(shí)例中,調(diào)整是由調(diào)整模塊701自動(dòng)進(jìn)行的。調(diào)整模塊701監(jiān)測(cè)與各子流程對(duì)應(yīng)的隊(duì)列的長(zhǎng)度,然后根據(jù)預(yù)定的算法重新計(jì)算各子流程的任務(wù)處理線程的數(shù)量,然后據(jù)以調(diào)整任務(wù)處理線程的并發(fā)數(shù)量。
[0079]根據(jù)本實(shí)施例的計(jì)算任務(wù)處理方法,通過調(diào)整任務(wù)處理線程的并發(fā)數(shù)量,充分利用服務(wù)器資源,以實(shí)現(xiàn)全流程更大化的處理容量的提升,提高服務(wù)器處理任務(wù)效率。
[0080]第六實(shí)施例
[0081]本實(shí)施例提供一種計(jì)算任務(wù)處理裝置,本實(shí)施例與第四實(shí)施例類似,其不同之處在于,參閱圖9,本實(shí)施例的裝置包括:
[0082]第二判斷模塊801,用于判斷數(shù)據(jù)處理是否出現(xiàn)異常;以及
[0083]緩存模塊802,用于若第二判斷模塊801的判斷結(jié)果為出現(xiàn)異常則緩存所述第一輸入數(shù)據(jù)。
[0084]第二判斷模塊801例如可以是由子流程處理模塊603拋出的異常信息觸發(fā)的,在捕獲取子流程處理模塊603的異常信息后,開始判斷數(shù)據(jù)處理是否異常。
[0085]數(shù)據(jù)處理出現(xiàn)異常是指在數(shù)據(jù)處理的過程中,遇到各種意外而導(dǎo)致數(shù)據(jù)處理沒有正常進(jìn)行的情形,例如,某個(gè)子流程所要依賴的外部資源沒有成功獲取、網(wǎng)絡(luò)錯(cuò)誤導(dǎo)致請(qǐng)求失敗、數(shù)據(jù)庫(kù)連接失敗等等。
[0086]在判斷數(shù)據(jù)處理出現(xiàn)異常后,緩存模塊802緩存第一輸入數(shù)據(jù)。此時(shí)的數(shù)據(jù)存儲(chǔ)可以是在內(nèi)存另外開辟一個(gè)空間用于存儲(chǔ)異常子流程的輸入數(shù)據(jù)。也可以將所述異常子流程的所述輸入數(shù)據(jù)直接存儲(chǔ)至對(duì)應(yīng)的隊(duì)列中,如此,輸入數(shù)據(jù)會(huì)被自動(dòng)加載處理。
[0087]上述異常子流程的輸入數(shù)據(jù)的存儲(chǔ)方式,以及存儲(chǔ)空間在實(shí)際運(yùn)用中可以根據(jù)實(shí)際情形設(shè)置最佳的存儲(chǔ),而不受任何限制。
[0088]根據(jù)本實(shí)施例的計(jì)算任務(wù)處理裝置,在子流程數(shù)據(jù)處理異常時(shí)將輸入數(shù)據(jù)緩存,從而該計(jì)算任務(wù)可以從該出現(xiàn)異常的子流程開始進(jìn)行處理,而無(wú)須從頭開始進(jìn)行計(jì)算,減少了重新進(jìn)行處理浪費(fèi)的時(shí)間,也提高了計(jì)算任務(wù)處理的容錯(cuò)率。
[0089]此外,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其內(nèi)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,上述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如為非易失性存儲(chǔ)器例如光盤、硬盤、或者閃存。上述的計(jì)算機(jī)可執(zhí)行指令用于讓計(jì)算機(jī)或者類似的運(yùn)算裝置完成上述計(jì)算任務(wù)處理方法及裝置。
[0090]以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭示如上,然而并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容做出些許更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)介修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種計(jì)算任務(wù)處理方法,其特征在于,所述方法包括以下步驟: 獲取包括多個(gè)子流程的計(jì)算任務(wù); 將所述計(jì)算任務(wù)的當(dāng)前子流程的輸入數(shù)據(jù)存入一個(gè)隊(duì)列中; 從所述隊(duì)列中獲取第一輸入數(shù)據(jù)并根據(jù)與所述當(dāng)前子流程對(duì)應(yīng)的邏輯進(jìn)行數(shù)據(jù)處理; 根據(jù)所述數(shù)據(jù)處理的結(jié)果判斷是否進(jìn)入下一個(gè)子流程; 若進(jìn)入下一個(gè)子流程則將所述數(shù)據(jù)處理的結(jié)果作為所述當(dāng)前子流程的下一子流程的輸入數(shù)據(jù)存入另一個(gè)隊(duì)列中。
2.如權(quán)利要求1所述的方法,其特征在于,所述從所述隊(duì)列中獲取第一輸入數(shù)據(jù)并根據(jù)與所述當(dāng)前子流程對(duì)應(yīng)的邏輯進(jìn)行數(shù)據(jù)處理的步驟分別在多個(gè)任務(wù)處理線程中并行進(jìn)行。
3.如權(quán)利要求2所述的方法,其特征在于,還包括:根據(jù)用戶輸入的數(shù)量調(diào)整所述多個(gè)任務(wù)處理線程數(shù)量。
4.如權(quán)利要求2所述的方法,其特征在于,還包括:根據(jù)所述另一個(gè)隊(duì)列的長(zhǎng)度動(dòng)態(tài)調(diào)整所述多個(gè)任務(wù)處理線程的數(shù)量。
5.如權(quán)利要求1所述的方法,其特征在于,在所述根據(jù)所述數(shù)據(jù)處理的結(jié)果判斷是否進(jìn)入下一個(gè)流程之前還包括:判斷數(shù)據(jù)處理是否出現(xiàn)異常,若數(shù)據(jù)處理異常則緩存所述第一輸入數(shù)據(jù)。
6.一種計(jì)算任務(wù)處理裝置,其特征在于,所述裝置包括: 獲取模塊,用于接收包括多個(gè)子流程的計(jì)算任務(wù); 第一數(shù)據(jù)預(yù)存模塊,用于將所述計(jì)算任務(wù)的當(dāng)前子流程的輸入數(shù)據(jù)存入一個(gè)隊(duì)列中; 子流程處理模塊,用于從所述隊(duì)列中獲取第一輸入數(shù)據(jù)并根據(jù)與所述當(dāng)前子流程對(duì)應(yīng)的邏輯進(jìn)行數(shù)據(jù)處理; 第一判斷模塊,用于根據(jù)數(shù)據(jù)處理的結(jié)果判斷是否進(jìn)入下一個(gè)子流程;以及 第二數(shù)據(jù)預(yù)存模塊,用于若所述第一判斷模塊的結(jié)果為進(jìn)入下一個(gè)子流程,將所述數(shù)據(jù)處理的結(jié)果作為所述當(dāng)前子流程的下一子流程的輸入數(shù)據(jù)存入另一個(gè)隊(duì)列中。
7.如權(quán)利要求6所述的計(jì)算任務(wù)處理裝置,其特征在于,所述子流程處理模塊的數(shù)量包括多個(gè),且并行運(yùn)行。
8.如權(quán)利要求7所述的計(jì)算任務(wù)處理裝置,其特征在于,還包括調(diào)整模塊,用于根據(jù)用戶輸入的數(shù)量調(diào)整所述子流程處理模塊的并發(fā)數(shù)量。
9.如權(quán)利要求7所述的計(jì)算任務(wù)處理裝置,其特征在于,還包括調(diào)整模塊,用于根據(jù)所述另一個(gè)隊(duì)列的長(zhǎng)度動(dòng)態(tài)調(diào)整所述多個(gè)子流程處理模塊并發(fā)數(shù)量。
10.如權(quán)利要求6所述的計(jì)算任務(wù)處理裝置,其特征在于,還包括: 第二判斷模塊,用于判斷數(shù)據(jù)處理是否出現(xiàn)異常;以及 緩存模塊,用于若所述第二判斷模塊的結(jié)果為出現(xiàn)異常則緩存所述第一輸入數(shù)據(jù)。
【專利摘要】本發(fā)明涉及一種計(jì)算任務(wù)處理方法及裝置,所述方法可以包括:獲取包括多個(gè)子流程的計(jì)算任務(wù);將所述計(jì)算任務(wù)的當(dāng)前子流程的輸入數(shù)據(jù)存入一個(gè)隊(duì)列中;從所述隊(duì)列中獲取第一輸入數(shù)據(jù)并根據(jù)與所述當(dāng)前子流程對(duì)應(yīng)的邏輯進(jìn)行數(shù)據(jù)處理;根據(jù)所述數(shù)據(jù)處理的結(jié)果判斷是否進(jìn)入下一個(gè)子流程;若進(jìn)入下一個(gè)子流程則將所述數(shù)據(jù)處理的結(jié)果作為所述當(dāng)前子流程的下一子流程的輸入數(shù)據(jù)存入另一個(gè)隊(duì)列中。上述的方法及裝置可提升系統(tǒng)處理任務(wù)的效率,減少計(jì)算資源的浪費(fèi)。
【IPC分類】G06F9-46, G06F9-38
【公開號(hào)】CN104778074
【申請(qǐng)?zhí)枴緾N201410015322
【發(fā)明人】周東祥
【申請(qǐng)人】騰訊科技(深圳)有限公司
【公開日】2015年7月15日
【申請(qǐng)日】2014年1月14日
【公告號(hào)】WO2015106687A1