本發(fā)明涉及分布式任務(wù)計(jì)算,具體涉及一種基于信息中心網(wǎng)絡(luò)的分布式任務(wù)計(jì)算方法。
背景技術(shù):
隨著網(wǎng)絡(luò)的迅速發(fā)展,互聯(lián)網(wǎng)上的資源和信息量劇增,特別是移動(dòng)互聯(lián)網(wǎng)的興起,網(wǎng)絡(luò)的大部分流量都源自內(nèi)容獲取類應(yīng)用?;ヂ?lián)網(wǎng)用戶的需求從主機(jī)之間的通信演進(jìn)為主機(jī)到網(wǎng)絡(luò)的海量信息訪問(wèn)。為了適應(yīng)這一轉(zhuǎn)變,研究界提出了多種以信息/內(nèi)容為中心的新型網(wǎng)絡(luò)架構(gòu),期望能夠設(shè)計(jì)和實(shí)現(xiàn)一種更能滿足社會(huì)與人類需求的新型網(wǎng)絡(luò)。為方便起見(jiàn),以下將這類網(wǎng)絡(luò)架構(gòu)統(tǒng)稱為信息中心網(wǎng)絡(luò)(informationcentricnetworking)。
信息中心網(wǎng)絡(luò)的設(shè)計(jì)思想深深地影響了應(yīng)用程序和網(wǎng)絡(luò)設(shè)備的設(shè)計(jì)與實(shí)現(xiàn),同時(shí)也賦予了網(wǎng)絡(luò)更加豐富的功能。在傳統(tǒng)的網(wǎng)絡(luò)中,我們獲取數(shù)據(jù)時(shí)需要指定目的主機(jī)的地址和具體的數(shù)據(jù)。其實(shí),我們關(guān)心的并不是從哪里獲得數(shù)據(jù),而是數(shù)據(jù)本身,因此,在信息中心網(wǎng)絡(luò)中,內(nèi)容都有一個(gè)名字,當(dāng)我們需要從網(wǎng)絡(luò)中獲得數(shù)據(jù)時(shí),只需要向網(wǎng)絡(luò)中發(fā)送一個(gè)請(qǐng)求包即可,請(qǐng)求包中有所需內(nèi)容的名字。由于網(wǎng)絡(luò)中間節(jié)點(diǎn)均具備數(shù)據(jù)緩存的能力,我們所請(qǐng)求數(shù)據(jù)的存儲(chǔ)位置不再局限在網(wǎng)絡(luò)的邊緣節(jié)點(diǎn),此時(shí)的網(wǎng)絡(luò)成為囊括所有內(nèi)容的云。
傳統(tǒng)的分布式任務(wù)計(jì)算主要是由網(wǎng)絡(luò)邊緣的主機(jī)完成,這是因?yàn)樽畛醯木W(wǎng)絡(luò)被設(shè)計(jì)為信息的載體,只負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)。如果用戶的終端設(shè)備有一個(gè)復(fù)雜的超過(guò)其計(jì)算能力的任務(wù),用戶終端可以通過(guò)網(wǎng)絡(luò)將任務(wù)交給遠(yuǎn)程的大型計(jì)算機(jī)或者云計(jì)算平臺(tái)完成。在這個(gè)過(guò)程中,任務(wù)數(shù)據(jù)會(huì)經(jīng)過(guò)很多網(wǎng)絡(luò)設(shè)備,因此傳輸過(guò)程將消耗很多時(shí)間。而隨著硬件技術(shù)的飛速發(fā)展,我們相信在未來(lái)的網(wǎng)絡(luò)中,網(wǎng)絡(luò)的中間節(jié)點(diǎn)(即路由器)不僅具備大容量的快速存儲(chǔ)設(shè)備,還具備高性能的計(jì)算能力。如果在完成數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)的同時(shí),例如讓路由器緩存途經(jīng)該節(jié)點(diǎn)的數(shù)據(jù)并且完成額外的計(jì)算任務(wù),則可以充分的利用這些資源。并且由于這些網(wǎng)絡(luò)中間節(jié)點(diǎn)距離用戶更近,傳輸過(guò)程的時(shí)間消耗會(huì)大大較少,用戶可以更快的獲取到計(jì)算結(jié)果。
有學(xué)者借鑒信息中心網(wǎng)絡(luò)提出了命名函數(shù)網(wǎng)絡(luò)(namedfunctionnetworking),即將計(jì)算任務(wù)命名,然后由路由器完成這些計(jì)算任務(wù)。但是nfn僅用來(lái)完成λ演算,同時(shí)需要路由器對(duì)復(fù)雜的任務(wù)名字進(jìn)行解析,并且未考慮路由器自身的負(fù)載情況,這不僅限制了計(jì)算任務(wù),也可能會(huì)影響到節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)的正常轉(zhuǎn)發(fā)。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種基于信息中心網(wǎng)絡(luò)的分布式任務(wù)計(jì)算方法,不僅考慮計(jì)算任務(wù)的命名,還考慮了網(wǎng)絡(luò)中間節(jié)點(diǎn)的負(fù)載,通過(guò)計(jì)算任務(wù)的分割,以及將存儲(chǔ)空間和cpu等作為中間節(jié)點(diǎn)的負(fù)載度量標(biāo)準(zhǔn),網(wǎng)絡(luò)中間節(jié)點(diǎn)可以動(dòng)態(tài)地判斷是否執(zhí)行計(jì)算任務(wù),使得計(jì)算任務(wù)可以由多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)分布式地完成,同時(shí)保證了網(wǎng)絡(luò)正常的數(shù)據(jù)轉(zhuǎn)發(fā)。
技術(shù)方案:一種基于信息中心網(wǎng)絡(luò)的分布式任務(wù)計(jì)算方法,包括以下步驟:
1)用戶將計(jì)算任務(wù)分解為可獨(dú)立執(zhí)行的子任務(wù),并建立子任務(wù)之間的依賴關(guān)系,其中,每個(gè)子任務(wù)都用五元組表示,保存依賴關(guān)系的數(shù)據(jù)結(jié)構(gòu)為有向無(wú)環(huán)圖;
2)用戶按照子任務(wù)依賴關(guān)系向信息中心網(wǎng)絡(luò)發(fā)送特定格式的請(qǐng)求包,請(qǐng)求執(zhí)行子任務(wù);
3)網(wǎng)絡(luò)中間節(jié)點(diǎn)接收到計(jì)算任務(wù)請(qǐng)求包之后,根據(jù)自身當(dāng)前負(fù)載判斷是否可以執(zhí)行該任務(wù),如果可以執(zhí)行,則創(chuàng)建新的進(jìn)程來(lái)處理該計(jì)算任務(wù),并將計(jì)算結(jié)果返回給用戶;否則根據(jù)轉(zhuǎn)發(fā)策略將請(qǐng)求包轉(zhuǎn)發(fā)給下一跳;
4)對(duì)網(wǎng)絡(luò)中間節(jié)點(diǎn)未能處理的計(jì)算任務(wù),最終由服務(wù)器來(lái)完成,并且服務(wù)器將計(jì)算結(jié)果返回給用戶。
其中,所述步驟1)中的五元組為<子任務(wù)名稱,數(shù)據(jù)名稱,標(biāo)識(shí)碼,需求,等待時(shí)間>,子任務(wù)名稱為子任務(wù)的名字;數(shù)據(jù)名稱為執(zhí)行子任務(wù)所需的數(shù)據(jù)名稱;標(biāo)識(shí)碼為子任務(wù)的唯一標(biāo)識(shí);需求記錄的是完成該任務(wù)所需的存儲(chǔ)空間開(kāi)銷和cpu個(gè)數(shù);等待時(shí)間為用戶等待該任務(wù)完成的最長(zhǎng)時(shí)間,超過(guò)該時(shí)間仍未得到任務(wù)結(jié)果,用戶將重新請(qǐng)求該任務(wù)。子任務(wù)之間的依賴關(guān)系式為<x,y>,表示子任務(wù)x和子任務(wù)y之間的任務(wù)執(zhí)行依賴關(guān)系為,先執(zhí)行完子任務(wù)x才能執(zhí)行子任務(wù)y。
為了使信息中心網(wǎng)絡(luò)更好地支持計(jì)算任務(wù),本發(fā)明在原有請(qǐng)求包格式的基礎(chǔ)上添加類型字段和任務(wù)信息字段,其中,類型字段取值可以為0或1,取值為0時(shí)表示數(shù)據(jù)任務(wù)包,取值為1時(shí)表示計(jì)算任務(wù)包;任務(wù)信息字段包括標(biāo)識(shí)碼和需求,標(biāo)識(shí)碼唯一標(biāo)識(shí)一個(gè)任務(wù),需求部分按序記錄完成該任務(wù)所需的存儲(chǔ)空間開(kāi)銷和cpu個(gè)數(shù)。
并且,所述步驟2)中請(qǐng)求子任務(wù)的順序按照步驟1)中的依賴關(guān)系進(jìn)行,當(dāng)存在多個(gè)無(wú)依賴關(guān)系的子任務(wù)時(shí),同時(shí)請(qǐng)求這些子任務(wù);在請(qǐng)求子任務(wù)時(shí),根據(jù)子任務(wù)的五元組,設(shè)置請(qǐng)求包名稱為“子任務(wù)名稱+數(shù)據(jù)名稱”,請(qǐng)求包類型設(shè)置為計(jì)算任務(wù),同時(shí)設(shè)置任務(wù)信息和等待時(shí)間。
所述步驟3)中創(chuàng)建新的進(jìn)程來(lái)處理該計(jì)算任務(wù)的具體步驟如下:
31)查詢本節(jié)點(diǎn)是否緩存有執(zhí)行該計(jì)算任務(wù)所需的程序和數(shù)據(jù),如果沒(méi)有,則向網(wǎng)絡(luò)發(fā)送用于請(qǐng)求程序的請(qǐng)求包以及用于請(qǐng)求數(shù)據(jù)的請(qǐng)求包,從網(wǎng)絡(luò)獲得所述程序和數(shù)據(jù);
32)利用所得到的程序和數(shù)據(jù),執(zhí)行該任務(wù)。
進(jìn)一步地,為了確保中間節(jié)點(diǎn)能夠從網(wǎng)絡(luò)中得到執(zhí)行該計(jì)算任務(wù)的程序和數(shù)據(jù),用戶在其使用的終端設(shè)備上注冊(cè)任務(wù)內(nèi)容,所注冊(cè)任務(wù)內(nèi)容包括計(jì)算任務(wù)所需的程序和數(shù)據(jù)。并在服務(wù)器注冊(cè)計(jì)算服務(wù),以告知用戶該服務(wù)器可以提供計(jì)算功能,確保當(dāng)所有中間節(jié)點(diǎn)都沒(méi)有可用資源處理計(jì)算任務(wù)時(shí),服務(wù)器能夠完成該計(jì)算任務(wù)。
有益效果:本發(fā)明提出的基于信息中心網(wǎng)絡(luò)的分布式任務(wù)計(jì)算方法,利用了網(wǎng)絡(luò)中間節(jié)點(diǎn)的存儲(chǔ)和計(jì)算資源,在保證正常數(shù)據(jù)轉(zhuǎn)發(fā)的同時(shí),提供分布式任務(wù)計(jì)算功能。與現(xiàn)有技術(shù)相比,該方法提高了分布式任務(wù)計(jì)算的效率和網(wǎng)絡(luò)中間節(jié)點(diǎn)的利用率,同時(shí)降低中間節(jié)點(diǎn)的負(fù)載,減少對(duì)網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能的影響。
附圖說(shuō)明
圖1是信息中心網(wǎng)絡(luò)的拓?fù)鋱D;
圖2是本發(fā)明使用的請(qǐng)求包和數(shù)據(jù)包的格式;
圖3是本發(fā)明的分布式任務(wù)計(jì)算方法總體流程圖;
圖4是本發(fā)明的網(wǎng)絡(luò)中間節(jié)點(diǎn)對(duì)計(jì)算任務(wù)的處理流程圖;
圖5是用戶與網(wǎng)絡(luò)之間的交互實(shí)例1的流程圖;
圖6是用戶與網(wǎng)絡(luò)之間的交互實(shí)例2的示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步說(shuō)明。
參照?qǐng)D1,一個(gè)信息中心網(wǎng)絡(luò)包括多種用戶終端設(shè)備(智能手機(jī)、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)等)、網(wǎng)絡(luò)中間節(jié)點(diǎn)(路由器)以及服務(wù)器。服務(wù)器提供多種多樣的網(wǎng)絡(luò)服務(wù),如http服務(wù)、郵件服務(wù)、文件服務(wù)、計(jì)算服務(wù)等;終端設(shè)備接入到信息中心網(wǎng)絡(luò)之后,便可以使用信息中心網(wǎng)絡(luò)提供的服務(wù);而路由器負(fù)責(zé)各設(shè)備的連接、數(shù)據(jù)轉(zhuǎn)發(fā)以及數(shù)據(jù)包緩存等功能。在信息中心網(wǎng)絡(luò)中,服務(wù)器通過(guò)注冊(cè)內(nèi)容名字提供數(shù)據(jù),并告知相鄰的路由器,路由器通過(guò)路由協(xié)議可以找到相應(yīng)內(nèi)容。當(dāng)用戶想要通過(guò)終端設(shè)備獲取所需數(shù)據(jù)時(shí),只需向網(wǎng)絡(luò)發(fā)送請(qǐng)求包(interestpacket),便可以得到相應(yīng)的數(shù)據(jù)包(datapacket)。如果服務(wù)器提供計(jì)算任務(wù),也同樣需要注冊(cè)計(jì)算任務(wù),以便能夠處理收到的計(jì)算任務(wù)。在本發(fā)明方法中,路由器節(jié)點(diǎn)除了負(fù)責(zé)緩存和轉(zhuǎn)發(fā)包之外,還會(huì)提供一定的計(jì)算功能。另外,用于執(zhí)行任務(wù)的可執(zhí)行程序不限于某一種編程語(yǔ)言或文件類型,只要路由器和服務(wù)器支持該執(zhí)行文件,均可以用來(lái)完成計(jì)算任務(wù),也就是說(shuō),一個(gè)計(jì)算任務(wù)可以對(duì)應(yīng)多種可執(zhí)行文件,但它們的功能完全一樣。
圖2示出了本發(fā)明所使用的包的格式。我們知道,信息中心網(wǎng)絡(luò)中使用請(qǐng)求包和數(shù)據(jù)包這兩種類型的包,并規(guī)定了包的格式。為了更好地使信息中心網(wǎng)絡(luò)支持計(jì)算任務(wù),本發(fā)明在兩種包中添加了新的字段:類型字段(type)和任務(wù)信息字段(jobinfo),其中,類型字段用于區(qū)分?jǐn)?shù)據(jù)任務(wù)和計(jì)算任務(wù),取值為0表示數(shù)據(jù)任務(wù),取值為1表示計(jì)算任務(wù)。當(dāng)類型取值為1,即是計(jì)算任務(wù)包時(shí),任務(wù)信息字段記錄該計(jì)算任務(wù)的相關(guān)信息,包括任務(wù)標(biāo)識(shí)碼(jobid)和需求(requirement)。任務(wù)標(biāo)識(shí)碼是一個(gè)64位無(wú)符號(hào)整數(shù),用于唯一表示用戶請(qǐng)求的計(jì)算任務(wù),該字段采用自增長(zhǎng)的方式管理,即每發(fā)送一個(gè)計(jì)算任務(wù)請(qǐng)求,該整數(shù)都會(huì)加1,并作為新的任務(wù)標(biāo)識(shí)碼使用。需求表示執(zhí)行該任務(wù)所需的資源,包括存儲(chǔ)空間開(kāi)銷和使用的cpu個(gè)數(shù)等。
圖3示出了本發(fā)明的分布式任務(wù)計(jì)算方法總體流程圖。首先,用戶將計(jì)算任務(wù)分解為子任務(wù),并在本節(jié)點(diǎn)(即用戶使用的終端設(shè)備)注冊(cè)子任務(wù)程序和數(shù)據(jù),根據(jù)子任務(wù)依賴關(guān)系向網(wǎng)絡(luò)發(fā)送請(qǐng)求包。隨后,網(wǎng)絡(luò)中間節(jié)點(diǎn)接收到請(qǐng)求包并進(jìn)行解析,根據(jù)類型字段判斷是計(jì)算任務(wù)還是數(shù)據(jù)任務(wù),如果是數(shù)據(jù)任務(wù),則依照轉(zhuǎn)發(fā)策略進(jìn)行轉(zhuǎn)發(fā)或者丟棄處理;如果是計(jì)算任務(wù),則根據(jù)任務(wù)信息字段進(jìn)一步判斷本節(jié)點(diǎn)(即網(wǎng)絡(luò)中間節(jié)點(diǎn))是否滿足任務(wù)需求,如果滿足,則新建一個(gè)進(jìn)程來(lái)完成計(jì)算任務(wù),并返回計(jì)算結(jié)果給用戶,如果不滿足,則繼續(xù)按照轉(zhuǎn)發(fā)策略將請(qǐng)求包轉(zhuǎn)發(fā)到下一跳。下一跳具體是誰(shuí)根據(jù)轉(zhuǎn)發(fā)策略而定,可能是另一中間節(jié)點(diǎn),也可能是服務(wù)器。如果請(qǐng)求包被轉(zhuǎn)發(fā)經(jīng)過(guò)轉(zhuǎn)發(fā)路徑上的所有網(wǎng)絡(luò)中間節(jié)點(diǎn)后仍未得到處理,則最終被服務(wù)器接收,由服務(wù)器完成計(jì)算任務(wù)并返回計(jì)算結(jié)果。當(dāng)然,我們假定服務(wù)器已事先注冊(cè)了可提供計(jì)算的服務(wù)。在這個(gè)過(guò)程中,由于請(qǐng)求包中包括類型字段,可以正確地區(qū)分?jǐn)?shù)據(jù)請(qǐng)求和計(jì)算請(qǐng)求,因此,本發(fā)明的方法不會(huì)影響網(wǎng)絡(luò)中間節(jié)點(diǎn)原有的處理流程,同時(shí)根據(jù)任務(wù)的資源需求來(lái)判斷是否執(zhí)行任務(wù),可以有效減少對(duì)中間節(jié)點(diǎn)負(fù)載的影響。
圖4示出了本發(fā)明的網(wǎng)絡(luò)中間節(jié)點(diǎn)對(duì)計(jì)算任務(wù)的處理流程圖。網(wǎng)絡(luò)中間節(jié)點(diǎn)創(chuàng)建一個(gè)新的進(jìn)程后,首先查詢本節(jié)點(diǎn)是否緩存有任務(wù)的執(zhí)行程序,如果沒(méi)有則向網(wǎng)絡(luò)發(fā)送請(qǐng)求包來(lái)請(qǐng)求任務(wù)的執(zhí)行程序;然后查詢本節(jié)點(diǎn)是否緩存有任務(wù)的輸入數(shù)據(jù),如果沒(méi)有也要向網(wǎng)絡(luò)發(fā)送請(qǐng)求包來(lái)請(qǐng)求任務(wù)的輸入數(shù)據(jù)。如果中間節(jié)點(diǎn)之前曾處理過(guò)相同任務(wù),則其緩存中會(huì)存有該任務(wù)的執(zhí)行程序和數(shù)據(jù)。當(dāng)中間節(jié)點(diǎn)具備了可執(zhí)行程序和輸入數(shù)據(jù)之后,就可以執(zhí)行計(jì)算任務(wù),并將計(jì)算結(jié)果返回給用戶。
圖5和圖6示出了用戶與網(wǎng)絡(luò)之間的交互實(shí)例1和實(shí)例2。在圖5所示實(shí)施例中,服務(wù)器提供的計(jì)算服務(wù)為統(tǒng)計(jì)文件的詞頻,用戶的計(jì)算任務(wù)為統(tǒng)計(jì)一個(gè)文件的詞頻,具體的交互過(guò)程如下:
(51)服務(wù)器server首先注冊(cè)計(jì)算,表示其可以提供哪些計(jì)算任務(wù),名字是“/word-count”;
(52)用戶希望統(tǒng)計(jì)一個(gè)文件名為“/nju/dislab/file.txt”的詞頻,由于該任務(wù)簡(jiǎn)單,不需要子任務(wù),即無(wú)子任務(wù)之間的相互依賴,任務(wù)的元組為<“/word-count/file-word-count”,“/nju/dislab/file.txt”,0,“5mb,1cpu”,“1s”>,用戶期望在1秒內(nèi)完成該計(jì)算任務(wù),通過(guò)估算計(jì)算任務(wù)的復(fù)雜度,其需求為最多占用5mb存儲(chǔ)空間,使用1個(gè)cpu;
(53)用戶注冊(cè)任務(wù)內(nèi)容,名字分別為“/word-count/file-word-count”和“/nju/dislab/file.txt”,表示自己能夠提供計(jì)算任務(wù)所需的程序和數(shù)據(jù);
(54)用戶向網(wǎng)絡(luò)發(fā)送計(jì)算請(qǐng)求interest-1,請(qǐng)求名為“pn=/word-count/file-word-count&dn=/nju/dislab/file.txt”;
(55)網(wǎng)絡(luò)中間節(jié)點(diǎn)node1在收到interest-1之后,判斷自身無(wú)法計(jì)算該任務(wù),根據(jù)路由算法,轉(zhuǎn)發(fā)給下一跳node2;
(56)node2可以計(jì)算該任務(wù),但是任務(wù)的程序和代碼均未在該節(jié)點(diǎn)緩存,所以分別請(qǐng)求程序和數(shù)據(jù),發(fā)送interest-2和interest-3,名字分別為“word-count/file-word-count”和“/nju/dislab/file.txt”;
(57)node1在收到interest-2和interest-3后,由于任務(wù)數(shù)據(jù)data-3緩存在該節(jié)點(diǎn),因此緩存命中,node1發(fā)送data-3給node2,而任務(wù)的程序data-2沒(méi)有緩存在node1節(jié)點(diǎn),因此轉(zhuǎn)發(fā)interest-2;
(58)用戶收到interest-2后,發(fā)送data-2給node1,node1將data-2緩存并轉(zhuǎn)發(fā)給node2;
(59)當(dāng)node2準(zhǔn)備好可執(zhí)行程序和所需的數(shù)據(jù)后,執(zhí)行該任務(wù),然后將執(zhí)行結(jié)果data-1返回給用戶,當(dāng)data-1經(jīng)過(guò)node1時(shí),node1會(huì)緩存該數(shù)據(jù)并轉(zhuǎn)發(fā)給用戶。
以上詳細(xì)介紹了本發(fā)明方法中的絕大部分步驟,由于該例子較為簡(jiǎn)單,并未體現(xiàn)出多節(jié)點(diǎn)同時(shí)計(jì)算的能力,因此,參照?qǐng)D6進(jìn)行進(jìn)一步的說(shuō)明。如圖6所示,服務(wù)器server1和server2提供統(tǒng)計(jì)詞頻的計(jì)算任務(wù),用戶的計(jì)算需求是統(tǒng)計(jì)一個(gè)文件夾下所有文本文件的詞頻。文件夾“/nju/dislab/dir/”中有三個(gè)文件,名字分別為“/nju/dislab/dir/f1.txt”、“/nju/dislab/dir/f2.txt”、“/nju/dislab/dir/f3.txt”。需要說(shuō)明的是,信息中心網(wǎng)絡(luò)對(duì)計(jì)算任務(wù)的分配由網(wǎng)絡(luò)中間節(jié)點(diǎn)的負(fù)載和路由策略決定,不需要用戶和服務(wù)器的參與,而網(wǎng)絡(luò)中間節(jié)點(diǎn)是否提供計(jì)算計(jì)算任務(wù),則由網(wǎng)絡(luò)服務(wù)商控制。
(61)用戶對(duì)計(jì)算任務(wù)進(jìn)行分解,得到子任務(wù)與子任務(wù)之間的依賴關(guān)系,子任務(wù)為統(tǒng)計(jì)一個(gè)文件的詞頻,因此得到4個(gè)子任務(wù):j1、j2、j3、j4,j1到j(luò)3分別計(jì)算三個(gè)文件的詞頻,為了保存這些中間結(jié)果,創(chuàng)建一個(gè)新的臨時(shí)文件,“/nju/dislab/dir/t1.txt”,j4用于統(tǒng)計(jì)該臨時(shí)文件的詞頻,最后的結(jié)果就是該文件夾中所有文件的詞頻,依賴關(guān)系為<j1,j4>、<j2,j4>、<j3,j4>,可以同時(shí)執(zhí)行的任務(wù)為j1、j2和j3,等三者全部完成才能執(zhí)行j4;
(62)用戶將j1、j2、j3發(fā)送到信息中心網(wǎng)絡(luò)中,因?yàn)槿齻€(gè)任務(wù)之間沒(méi)有依賴關(guān)系,三個(gè)子任務(wù)可以同時(shí)進(jìn)行,不需要相互等待,請(qǐng)求包的名字分別為:
“pn=/word-count/file-word-count&dn=/nju/dislab/dir/f1.txt”、
“pn=/word-count/file-word-count&dn=/nju/dislab/dir/f2.txt”、
“pn=/word-count/file-word-count&dn=/nju/dislab/dir/f3.txt”;
(63)根據(jù)信息中心網(wǎng)絡(luò)中的節(jié)點(diǎn)負(fù)載和路由算法,三個(gè)任務(wù)分別交給了三個(gè)節(jié)點(diǎn)完成,分別為node3、node4和server1,各節(jié)點(diǎn)計(jì)算完成之后,將結(jié)果返回給用戶;
(64)用戶等待j1、j2、j3三個(gè)任務(wù)完成之后,才能開(kāi)始子任務(wù)j4;
(65)當(dāng)子任務(wù)j4由node1完成之后,再發(fā)送給用戶,任務(wù)計(jì)算結(jié)束。
本發(fā)明方法通過(guò)修改信息中心網(wǎng)絡(luò)包的格式和包處理流程,使得該網(wǎng)絡(luò)模型具備分布式任務(wù)計(jì)算的能力。借助信息中心網(wǎng)絡(luò)中間節(jié)點(diǎn)具備緩存數(shù)據(jù)的能力,由路由協(xié)議協(xié)助管理計(jì)算任務(wù)的分配,充分利用中間節(jié)點(diǎn)的計(jì)算和存儲(chǔ)資源,分布式任務(wù)計(jì)算過(guò)程更加的高效。因?yàn)橛?jì)算所需的程序、數(shù)據(jù),計(jì)算結(jié)果也同樣可以被網(wǎng)絡(luò)中間節(jié)點(diǎn)緩存下來(lái),將數(shù)據(jù)緩存推廣到計(jì)算緩存的方式極大地減少網(wǎng)絡(luò)傳輸時(shí)間。此外,本發(fā)明的方法不針對(duì)某一種程序開(kāi)發(fā)語(yǔ)言,任務(wù)名字設(shè)計(jì)簡(jiǎn)潔,用戶只需要將計(jì)算任務(wù)分解為多個(gè)子任務(wù),建立子任務(wù)之間的依賴關(guān)系,然后根據(jù)依賴關(guān)系將這些子任務(wù)發(fā)送給網(wǎng)絡(luò)即可。此外,本發(fā)明還考慮任務(wù)對(duì)資源的占用,只有中間節(jié)點(diǎn)所剩資源滿足任務(wù)的資源消耗,才會(huì)執(zhí)行該任務(wù),因此,該方法不僅減少對(duì)節(jié)點(diǎn)負(fù)載的影響,提高計(jì)算任務(wù)的效率,還有利于方法的使用和推廣。
以上詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種等同變換,這些等同變換均屬于本發(fā)明的保護(hù)范圍。