本發(fā)明涉及計(jì)算機(jī)技術(shù)。
背景技術(shù):
隨著信息技術(shù)的深入應(yīng)用,科學(xué)計(jì)算、數(shù)據(jù)分析、模擬仿真等對(duì)計(jì)算機(jī)計(jì)算效率和性能的要求越來(lái)越高。分布式計(jì)算在計(jì)算密集型領(lǐng)域得到了廣泛應(yīng)用。
目前,常用分布式計(jì)算的通用架構(gòu)如圖1,主要表現(xiàn)為:任務(wù)管理(1)+任務(wù)執(zhí)行集群(N)。這種分布式計(jì)算模型內(nèi)部包括一整套調(diào)度規(guī)則、計(jì)算任務(wù)分配規(guī)則,把真實(shí)的計(jì)算任務(wù)與分布式計(jì)算模型耦合在一起。然而,在實(shí)際的應(yīng)用中,一個(gè)大型的計(jì)算任務(wù)可能包括很多第三方的工具或者已經(jīng)存在的計(jì)算模型,在此種情況下就無(wú)法修改計(jì)算任務(wù)以滿足分布式計(jì)算系統(tǒng)的要求。另外,也不能滿足在一個(gè)團(tuán)隊(duì)中可能要求同時(shí)進(jìn)行多個(gè)計(jì)算任務(wù),并且每個(gè)計(jì)算任務(wù)可能存在計(jì)算關(guān)聯(lián)的情況。
因此,需要提供一種計(jì)算任務(wù)與分布式計(jì)算模型完全解耦的計(jì)算機(jī)制。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種支持多計(jì)算任務(wù)和多計(jì)算節(jié)點(diǎn)的計(jì)算協(xié)作方法。
本發(fā)明解決所述技術(shù)問(wèn)題采用的技術(shù)方案是,支持多計(jì)算任務(wù)和多計(jì)算節(jié)點(diǎn)的計(jì)算協(xié)作方法,其特征在于,包括下述步驟:
1)計(jì)算節(jié)點(diǎn)從服務(wù)器的數(shù)據(jù)隊(duì)列中讀取本節(jié)點(diǎn)當(dāng)前運(yùn)算任務(wù)所需的數(shù)據(jù)作為節(jié)點(diǎn)運(yùn)算的輸入數(shù)據(jù),所述數(shù)據(jù)隊(duì)列中的數(shù)據(jù)具有任務(wù)標(biāo)識(shí)符和序列標(biāo)記;
2)計(jì)算節(jié)點(diǎn)將運(yùn)算結(jié)果作為輸出數(shù)據(jù),輸出到服務(wù)器的數(shù)據(jù)隊(duì)列中;所述輸出數(shù)據(jù)具有任務(wù)標(biāo)識(shí)符和序列標(biāo)記;
所述任務(wù)標(biāo)識(shí)符表示該數(shù)據(jù)與何任務(wù)相關(guān),所述序列標(biāo)記表示該數(shù)據(jù)在相關(guān)任務(wù)中的序號(hào)。
所述序號(hào)可以為數(shù)字、字母或任何其他形式的標(biāo)識(shí)符,用于區(qū)分同一任務(wù)下的不同數(shù)據(jù)。
進(jìn)一步的,所述步驟1)為:計(jì)算節(jié)點(diǎn)在服務(wù)器的數(shù)據(jù)隊(duì)列中查詢(xún)本節(jié)點(diǎn)當(dāng)前運(yùn)算任務(wù)所需的數(shù)據(jù),若有則讀取,若無(wú)則等待后再次查詢(xún)。
或者,所述步驟1)為:計(jì)算節(jié)點(diǎn)在服務(wù)器的數(shù)據(jù)隊(duì)列中查詢(xún)本節(jié)點(diǎn)當(dāng)前運(yùn)算任務(wù)所需的數(shù)據(jù),若有則讀取,若無(wú)則執(zhí)行其他計(jì)算,其他計(jì)算完成后再次查詢(xún)。
本發(fā)明每一節(jié)點(diǎn)的輸入數(shù)據(jù)皆為該節(jié)點(diǎn)以外的其他節(jié)點(diǎn)的輸出數(shù)據(jù)。服務(wù)器的數(shù)據(jù)隊(duì)列中,每個(gè)數(shù)據(jù)都具有任務(wù)標(biāo)識(shí)符、時(shí)間戳、數(shù)據(jù)長(zhǎng)度、緩存索引、有效期。節(jié)點(diǎn)與服務(wù)器之間的通信基于加密渠道。
或者,所述步驟1)為:第一計(jì)算節(jié)點(diǎn)向請(qǐng)求本節(jié)點(diǎn)當(dāng)前運(yùn)算任務(wù)所需的數(shù)據(jù),服務(wù)器在服務(wù)器數(shù)據(jù)隊(duì)列中查詢(xún),若有則向第一計(jì)算節(jié)點(diǎn)發(fā)送所請(qǐng)求的數(shù)據(jù),若無(wú)則通知節(jié)點(diǎn)等待,直至收到其他節(jié)點(diǎn)送出的數(shù)據(jù)后發(fā)送至第一計(jì)算節(jié)點(diǎn)。
本發(fā)明通過(guò)把計(jì)算協(xié)作模型與計(jì)算任務(wù)解耦,可以同時(shí)支持多個(gè)項(xiàng)目組的不同計(jì)算任務(wù),每個(gè)計(jì)算任務(wù)的計(jì)算節(jié)點(diǎn)可以動(dòng)態(tài)擴(kuò)展,對(duì)計(jì)算節(jié)點(diǎn)數(shù)無(wú)限制,對(duì)計(jì)算任務(wù)采用何種計(jì)算模型或算法不做限制,每個(gè)節(jié)點(diǎn)只關(guān)心自身的輸入和輸出而不用關(guān)心是哪個(gè)節(jié)點(diǎn)提供的輸入和輸出到哪個(gè)節(jié)點(diǎn),解決了一個(gè)或多個(gè)研發(fā)團(tuán)隊(duì)內(nèi)部多個(gè)計(jì)算任務(wù)和多個(gè)計(jì)算節(jié)點(diǎn)協(xié)作的問(wèn)題。
附圖說(shuō)明
圖1為常見(jiàn)分布式計(jì)算模型示意圖。
圖2為本發(fā)明的計(jì)算協(xié)作平臺(tái)實(shí)施案例示意圖。
具體實(shí)施方式
本發(fā)明提供了一種支持多計(jì)算任務(wù)和多計(jì)算節(jié)點(diǎn)的計(jì)算協(xié)作平臺(tái),包括一個(gè)或多個(gè)計(jì)算任務(wù),每個(gè)計(jì)算任務(wù)包括多個(gè)計(jì)算機(jī)節(jié)點(diǎn),每個(gè)計(jì)算節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)與計(jì)算協(xié)作平臺(tái)(服務(wù)器)連接,其中:
計(jì)算任務(wù),完成一個(gè)計(jì)算模型、數(shù)據(jù)分析算法、科學(xué)計(jì)算等的過(guò)程:
計(jì)算節(jié)點(diǎn),負(fù)責(zé)計(jì)算計(jì)算任務(wù)中的某個(gè)過(guò)程,完成同一個(gè)計(jì)算任務(wù)的計(jì)算節(jié)點(diǎn)具有相同的唯一標(biāo)識(shí)符,計(jì)算節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)與計(jì)算協(xié)作平臺(tái)相連接,通過(guò)計(jì)算協(xié)作平臺(tái)與關(guān)聯(lián)計(jì)算節(jié)點(diǎn)協(xié)作;
計(jì)算協(xié)作平臺(tái),即服務(wù)器,提供安全服務(wù)為計(jì)算節(jié)點(diǎn)做統(tǒng)一安全認(rèn)證和提供數(shù)據(jù)加密協(xié)議,提供數(shù)據(jù)存儲(chǔ)和分發(fā)的能力,,響應(yīng)來(lái)自計(jì)算節(jié)點(diǎn)的提交數(shù)據(jù)和獲取數(shù)據(jù)請(qǐng)求。
本發(fā)明的詳細(xì)過(guò)程包括:
為計(jì)算任務(wù)預(yù)定義唯一標(biāo)識(shí)符(包括任務(wù)標(biāo)識(shí)符和序列標(biāo)記),計(jì)算節(jié)點(diǎn)數(shù),計(jì)算節(jié)點(diǎn)任務(wù)、輸入和輸出,特別注意在同一個(gè)計(jì)算任務(wù)中每個(gè)計(jì)算節(jié)點(diǎn)的輸出必須具有不同的標(biāo)識(shí)符,而且每個(gè)計(jì)算節(jié)點(diǎn)的輸入必須是其他計(jì)算節(jié)點(diǎn)的輸出;
啟動(dòng)計(jì)算節(jié)點(diǎn)后,計(jì)算節(jié)點(diǎn)首先與計(jì)算協(xié)作平臺(tái)建立連接,并通過(guò)安全服務(wù)獲得安全認(rèn)證和數(shù)據(jù)加密協(xié)議,然后計(jì)算節(jié)點(diǎn)開(kāi)始執(zhí)行計(jì)算任務(wù),并根據(jù)計(jì)算任務(wù)預(yù)定義的輸出要求把計(jì)算過(guò)程數(shù)據(jù)輸出到計(jì)算協(xié)作平臺(tái),同時(shí)根據(jù)計(jì)算任務(wù)預(yù)定義的輸入要求從計(jì)算協(xié)作平臺(tái)獲取輸入;
計(jì)算協(xié)作平臺(tái)的安全服務(wù)接受來(lái)自計(jì)算節(jié)點(diǎn)的接入請(qǐng)求,完成安全認(rèn)證,并返回?cái)?shù)據(jù)加密協(xié)議。
進(jìn)一步地,
計(jì)算協(xié)作平臺(tái)(服務(wù)器)接收來(lái)自計(jì)算節(jié)點(diǎn)的提交數(shù)據(jù)請(qǐng)求,解密數(shù)據(jù)并驗(yàn)證合法性后把本次數(shù)據(jù)的標(biāo)識(shí)符、時(shí)間戳、數(shù)據(jù)長(zhǎng)度、緩存索引、有效期等添加到數(shù)據(jù)隊(duì)列中,然后把數(shù)據(jù)寫(xiě)入數(shù)據(jù)緩存中,具有相同標(biāo)識(shí)符的數(shù)據(jù)被多次提交,以最近一次為準(zhǔn);
進(jìn)一步地,
計(jì)算協(xié)作平臺(tái)(服務(wù)器)接收來(lái)自多個(gè)計(jì)算節(jié)點(diǎn)的獲取數(shù)據(jù)請(qǐng)求,在數(shù)據(jù)隊(duì)列中查找被請(qǐng)求的數(shù)據(jù),并依據(jù)緩存索引信息從數(shù)據(jù)緩存中讀取數(shù)據(jù),加密數(shù)據(jù)后返回給計(jì)算節(jié)點(diǎn);
計(jì)算任務(wù)完成后,通過(guò)任意計(jì)算節(jié)點(diǎn)可刪除計(jì)算協(xié)作平臺(tái)中關(guān)于本次計(jì)算的數(shù)據(jù),如果沒(méi)有刪除,計(jì)算協(xié)作平臺(tái)將根據(jù)數(shù)據(jù)的有效期刪除數(shù)據(jù)。
實(shí)施例
如圖2所示,本發(fā)明的實(shí)施案例示意圖包括2個(gè)計(jì)算任務(wù)(T1,T2)。其中T1包括2個(gè)計(jì)算節(jié)點(diǎn)(N1,N2),N1的輸入和輸出分別是(M4,M5)和(M1,M2,M3),N2的輸入和輸出分別是(M1,M2,M3)和(M4,M5)。T2包括3個(gè)計(jì)算節(jié)點(diǎn)(S1,S2,S3),S1的輸入和輸出分別是(M2,M4)和(M1),S2的輸入和輸出分別是(M1,M5)和(M2,M3),S3的輸入和輸出分別是(M1,M2,M3)和(M4,M5)。具體內(nèi)容請(qǐng)參看表1。
其中:
計(jì)算任務(wù),被分別定義為T(mén)1和T2。T1的過(guò)程輸出數(shù)據(jù)有(M1,M2,M3,M4,M5),由(N1,N2)兩個(gè)節(jié)點(diǎn)協(xié)作完成任務(wù)。T2的過(guò)程輸出有(M1,M2,M3,M4,M5),由(S1,S2,S3)三個(gè)節(jié)點(diǎn)協(xié)作完成任務(wù);數(shù)據(jù)M1~M5具有任務(wù)標(biāo)識(shí)符和序列標(biāo)記,例如數(shù)據(jù)隊(duì)列中的數(shù)據(jù)M1的內(nèi)容為T(mén)1M102345,T1為任務(wù)標(biāo)識(shí)符,表示與任務(wù)T1有關(guān),M1為序列標(biāo)記,表示本數(shù)據(jù)為預(yù)定義的數(shù)據(jù)M1,數(shù)據(jù)M1被預(yù)定義為任務(wù)中的一個(gè)中間參量。
計(jì)算節(jié)點(diǎn),這里以執(zhí)行T1任務(wù)的N1(以T1->N1表示)為例,其他節(jié)點(diǎn)類(lèi)似。T1->N1啟動(dòng)后通過(guò)網(wǎng)絡(luò)與計(jì)算協(xié)作平臺(tái)建立連接,并通過(guò)安全認(rèn)證和獲取數(shù)據(jù)加密協(xié)議。然后,T1->N1開(kāi)始執(zhí)行自身的計(jì)算過(guò)程,并在執(zhí)行過(guò)程中輸出數(shù)據(jù)(M1,M2,M3),同時(shí)在支持過(guò)程中根據(jù)自身需要從計(jì)算協(xié)作平臺(tái)獲取輸入數(shù)據(jù)(M4,M5)。什么時(shí)刻輸入和輸出,輸入什么、輸出什么都由計(jì)算節(jié)點(diǎn)本身的算法決定,輸入可以是阻塞和非阻塞的。簡(jiǎn)而言之,T1->N1只需要把應(yīng)該輸出的數(shù)據(jù)輸出,應(yīng)該輸入的輸入,至于輸入和輸出的方式、時(shí)刻并不重要。不過(guò),輸出要越早越好,因?yàn)榭赡躎1->N2節(jié)點(diǎn)正在等待T1->N1的輸出結(jié)果;
計(jì)算協(xié)作平臺(tái),這里仍然以T1->N1為例,其他節(jié)點(diǎn)類(lèi)似。T1->N1輸出M1到計(jì)算協(xié)作平臺(tái),平臺(tái)接收數(shù)據(jù)后根據(jù)任務(wù)唯一標(biāo)識(shí)符(T1),將M1添加到相應(yīng)的(T1)數(shù)據(jù)隊(duì)列,如果數(shù)據(jù)隊(duì)列不存在將以T1為關(guān)鍵字建立一個(gè)新的數(shù)據(jù)隊(duì)列。T1->N1從計(jì)算協(xié)作平臺(tái)請(qǐng)求數(shù)據(jù)M4,如果此時(shí)M4已經(jīng)到達(dá),則返回M4數(shù)據(jù),T1->N1繼續(xù)執(zhí)行,如果數(shù)據(jù)未到達(dá)就返回空,T1->N1將根據(jù)自身算法設(shè)計(jì)決定是繼續(xù)等待該數(shù)據(jù)還是執(zhí)行其他計(jì)算。
計(jì)算任務(wù)完成后,由任意計(jì)算節(jié)點(diǎn)向計(jì)算協(xié)作平臺(tái)發(fā)起清除本次計(jì)算數(shù)據(jù)的請(qǐng)求,如果未發(fā)起該請(qǐng)求,計(jì)算協(xié)作平臺(tái)將根據(jù)數(shù)據(jù)有效期刪除數(shù)據(jù)。
表1