一種在多節(jié)點(diǎn)網(wǎng)絡(luò)中執(zhí)行作業(yè)任務(wù)的方法
【專利說明】一種在多節(jié)點(diǎn)網(wǎng)絡(luò)中執(zhí)行作業(yè)任務(wù)的方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及計算機(jī)技術(shù),特別涉及一種在多節(jié)點(diǎn)網(wǎng)絡(luò)中執(zhí)行作業(yè)任務(wù)的方法。
【背景技術(shù)】
[0003]現(xiàn)有計算機(jī)系統(tǒng)中,多節(jié)點(diǎn)網(wǎng)絡(luò)中所有節(jié)點(diǎn)彼此相互連接,為了緩解單個節(jié)點(diǎn)上存儲元數(shù)據(jù)的負(fù)載負(fù)擔(dān),將各個節(jié)點(diǎn)上分別存有一個或多個元數(shù)據(jù),因此,當(dāng)某一節(jié)點(diǎn)執(zhí)行作業(yè)任務(wù)時,經(jīng)常需要訪問其他節(jié)點(diǎn)以獲得所需的一個或多個元數(shù)據(jù)。然而現(xiàn)有技術(shù)中當(dāng)某一節(jié)點(diǎn)出現(xiàn)故障時會出現(xiàn)其上存儲的元數(shù)據(jù)不能被繼續(xù)訪問的問題。另一方面,當(dāng)某一節(jié)點(diǎn)需要完成作業(yè)時,如果所述作業(yè)任務(wù)過大會造成某一節(jié)點(diǎn)的負(fù)載過重,導(dǎo)致不能及時完成。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明引入獨(dú)創(chuàng)的多級備份技術(shù)以及全新的負(fù)載均衡技術(shù),提出了一種在多節(jié)點(diǎn)網(wǎng)絡(luò)中執(zhí)行作業(yè)任務(wù)的方法,所述多節(jié)點(diǎn)網(wǎng)絡(luò)中包括彼此相互連接的多個網(wǎng)絡(luò)節(jié)點(diǎn),按照網(wǎng)段將所述多個網(wǎng)絡(luò)節(jié)點(diǎn)劃分到多個節(jié)點(diǎn)分組,每個節(jié)點(diǎn)分組中包括多個服務(wù)節(jié)點(diǎn)和多個成員節(jié)點(diǎn);其中每一個成員節(jié)點(diǎn)中存儲有多個元數(shù)據(jù),每個元數(shù)據(jù)冗余存儲在同一節(jié)點(diǎn)分組中的多個成員節(jié)點(diǎn)中;每一個服務(wù)節(jié)點(diǎn)中存儲有所述多個元數(shù)據(jù)的存儲位置的存儲信息表,并且所述多個服務(wù)節(jié)點(diǎn)互為備份并同步更新,所述方法包括:所述多節(jié)點(diǎn)網(wǎng)絡(luò)中的當(dāng)前節(jié)點(diǎn)接收作業(yè)任務(wù);所述當(dāng)前節(jié)點(diǎn)將所述作業(yè)任務(wù)分解為多個子作業(yè)任務(wù);對于每一個子作業(yè)任務(wù),所述當(dāng)前節(jié)點(diǎn)執(zhí)行以下步驟:確定所述當(dāng)前子作業(yè)任務(wù)所需要訪問的一個或多個元數(shù)據(jù);請求與所述當(dāng)前節(jié)點(diǎn)屬于同一節(jié)點(diǎn)分組的具有最小負(fù)載的服務(wù)節(jié)點(diǎn)提供所述一個或多個元數(shù)據(jù)的存儲位置信息,并接收所述具有最小負(fù)載的服務(wù)節(jié)點(diǎn)反饋的所述一個或多個元數(shù)據(jù)的存儲位置信息;如果未能獲得所有元數(shù)據(jù)的存儲位置信息,則請求其他節(jié)點(diǎn)分組的服務(wù)節(jié)點(diǎn)提供未能獲得的存儲位置信息,直至獲得所有元數(shù)據(jù)的存儲位置信息;如果所述一個或多個元數(shù)據(jù)均來自同一存儲位置,則將所述當(dāng)前子作業(yè)任務(wù)發(fā)送至所述同一存儲位置所在的節(jié)點(diǎn)并由所述同一存儲位置所在的節(jié)點(diǎn)完成所述當(dāng)前子作業(yè)任務(wù),否則所述當(dāng)前節(jié)點(diǎn)根據(jù)所獲得的所有元數(shù)據(jù)的存儲位置信息獲取所有需要訪問的元數(shù)據(jù)并完成所述當(dāng)前子作業(yè)任務(wù);所述當(dāng)前節(jié)點(diǎn)匯總所述多個子作業(yè)任務(wù)的執(zhí)行結(jié)果并得到總體作業(yè)任務(wù)結(jié)果,并通過用戶交互界面進(jìn)行顯示,并通過用戶交互界面進(jìn)行顯示。
[0005]優(yōu)選地,所述每個元數(shù)據(jù)冗余存儲在同一節(jié)點(diǎn)分組中的多個成員節(jié)點(diǎn)中包括:實時記錄所述每個元數(shù)據(jù)的被訪問日志,所述訪問日志至少包括所述每個元數(shù)據(jù)的標(biāo)識符和被訪問的時間信息;周期性地計算所述每個元數(shù)據(jù)的單位時間訪問量以及同一節(jié)點(diǎn)分組內(nèi)所有元數(shù)據(jù)的單位時間平均訪問量;將單位時間訪問量大于單位時間平均訪問量的元數(shù)據(jù)冗余存儲在同一節(jié)點(diǎn)分組中的M個成員節(jié)點(diǎn)中,將單位時間訪問量小于或等于單位時間平均訪問量的元數(shù)據(jù)冗余存儲在同一節(jié)點(diǎn)分組中的N個成員節(jié)點(diǎn)中,其中M>N。
[0006]優(yōu)選地,所述請求與所述當(dāng)前節(jié)點(diǎn)屬于同一節(jié)點(diǎn)分組的具有最小負(fù)載的服務(wù)節(jié)點(diǎn)提供所述一個或多個元數(shù)據(jù)的存儲位置信息包括:將所述一個或多個元數(shù)據(jù)的標(biāo)識符打包并發(fā)送給與所述當(dāng)前節(jié)點(diǎn)屬于同一節(jié)點(diǎn)分組的具有最小負(fù)載的服務(wù)節(jié)點(diǎn);所述與所述當(dāng)前節(jié)點(diǎn)屬于同一節(jié)點(diǎn)分組的具有最小負(fù)載的服務(wù)節(jié)點(diǎn)查詢存儲信息表,并將匹配成功的一個或多個存儲位置信息打包并發(fā)送給所述當(dāng)前節(jié)點(diǎn)。
[0007]優(yōu)選地于,所述請求其他節(jié)點(diǎn)分組的服務(wù)節(jié)點(diǎn)提供未能獲得的存儲位置信息包括:將未能獲得存儲位置信息的一個或多個元數(shù)據(jù)的標(biāo)識符打包并發(fā)送給與所述當(dāng)前節(jié)點(diǎn)所在節(jié)點(diǎn)分組網(wǎng)段距離最近的節(jié)點(diǎn)分組中具有最小負(fù)載的服務(wù)節(jié)點(diǎn);所述與所述當(dāng)前節(jié)點(diǎn)所在節(jié)點(diǎn)分組網(wǎng)段距離最近的節(jié)點(diǎn)分組中具有最小負(fù)載的服務(wù)節(jié)點(diǎn)查詢存儲信息表,并將匹配成功的一個或多個存儲位置信息打包并發(fā)送給所述當(dāng)前節(jié)點(diǎn)。
[0008]優(yōu)選地,每個節(jié)點(diǎn)分組中的服務(wù)節(jié)點(diǎn)的數(shù)量為3。
[0009]優(yōu)選地,M為3,N為2。
[0010]優(yōu)選地,在步驟所述當(dāng)前節(jié)點(diǎn)匯總所述多個子作業(yè)任務(wù)的執(zhí)行結(jié)果并得到總體作業(yè)任務(wù)結(jié)果之前還包括:接收其他節(jié)點(diǎn)發(fā)送的子作業(yè)任務(wù)的執(zhí)行結(jié)果。
[0011]優(yōu)選地,在執(zhí)行將所述當(dāng)前子作業(yè)任務(wù)發(fā)送至所述同一存儲位置所在的節(jié)點(diǎn)并由所述同一存儲位置所在的節(jié)點(diǎn)完成所述當(dāng)前子作業(yè)任務(wù)期間,如果發(fā)現(xiàn)所述同一存儲位置所在的節(jié)點(diǎn)負(fù)載超過預(yù)先設(shè)置的閾值,則將所有需要訪問的元數(shù)據(jù)以及所述當(dāng)前子作業(yè)任務(wù)發(fā)送給所述當(dāng)前節(jié)點(diǎn),并由所述當(dāng)前節(jié)點(diǎn)完成所述當(dāng)前子作業(yè)任務(wù)。
[0012]優(yōu)選地,所述當(dāng)前節(jié)點(diǎn)將所有需要所述當(dāng)前節(jié)點(diǎn)完成的子作業(yè)任務(wù)暫存在隊列中,并根據(jù)所述當(dāng)前節(jié)點(diǎn)依次執(zhí)行所述隊列中的子作業(yè)任務(wù);其中,所述當(dāng)前節(jié)點(diǎn)根據(jù)負(fù)載情況確定并發(fā)執(zhí)行所述隊列中的子作業(yè)任務(wù)的數(shù)量。
[0013]優(yōu)選地,如果所述當(dāng)前節(jié)點(diǎn)中的隊列中的子作業(yè)任務(wù)的數(shù)量超過預(yù)先設(shè)置的數(shù)量,則將后續(xù)需要加入隊列的子作業(yè)任務(wù)及相關(guān)元數(shù)據(jù)發(fā)送給與所述當(dāng)前節(jié)點(diǎn)在同一節(jié)點(diǎn)分組中的其他成員節(jié)點(diǎn)執(zhí)行。
[0014]優(yōu)選地,所述將后續(xù)需要加入隊列的子作業(yè)任務(wù)及相關(guān)元數(shù)據(jù)發(fā)送給與所述當(dāng)前節(jié)點(diǎn)在同一節(jié)點(diǎn)分組中的其他成員節(jié)點(diǎn)執(zhí)行包括:將所述后續(xù)需要加入隊列的子作業(yè)任務(wù)及相關(guān)元數(shù)據(jù)打包成待發(fā)送數(shù)據(jù),將所述待發(fā)送數(shù)據(jù)發(fā)送給所述當(dāng)前節(jié)點(diǎn)在同一節(jié)點(diǎn)分組中的負(fù)載最小的其他成員節(jié)點(diǎn)。
[0015]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
通過在服務(wù)節(jié)點(diǎn)上保存存儲信息表并將多個元數(shù)據(jù)分別存儲在多個成員節(jié)點(diǎn)上,使得避免單個成員節(jié)點(diǎn)上存儲元數(shù)據(jù)的負(fù)擔(dān)。
[0016]通過設(shè)置多個服務(wù)節(jié)點(diǎn),從而實現(xiàn)在多個服務(wù)節(jié)點(diǎn)上備份保存存儲信息表,使得避免因服務(wù)節(jié)點(diǎn)故障造成的無法讀取存儲信息表的問題。
[0017]通過根據(jù)元數(shù)據(jù)被訪問的熱度分別設(shè)置冗余備份的數(shù)量,使得盡量減少節(jié)點(diǎn)冗余備份的負(fù)擔(dān)。
[0018]通過將作業(yè)任務(wù)分解并將子作業(yè)任務(wù)盡可能分配到其它節(jié)點(diǎn)執(zhí)行,使得減少單個節(jié)點(diǎn)的負(fù)載負(fù)擔(dān)。
【附圖說明】
[0019]圖1是根據(jù)本發(fā)明實施例的動態(tài)生成提醒信息的方法的流程圖。
[0020]圖2是根據(jù)本發(fā)明實施例的執(zhí)行每一個子作業(yè)任務(wù)的流程圖。
【具體實施方式】
[0021]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細(xì)描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
[0022]根據(jù)本發(fā)明的實施例,所述多節(jié)點(diǎn)網(wǎng)絡(luò)中包括彼此相互連接的多個網(wǎng)絡(luò)節(jié)點(diǎn),按照網(wǎng)段將所述多個網(wǎng)絡(luò)節(jié)點(diǎn)劃分到多個節(jié)點(diǎn)分組,每個節(jié)點(diǎn)分組中包括多個服務(wù)節(jié)點(diǎn)和多個成員節(jié)點(diǎn);其中每一個成員節(jié)點(diǎn)中存儲有多個元數(shù)據(jù),每個元數(shù)據(jù)冗余存儲在同一節(jié)點(diǎn)分組中的多個成員節(jié)點(diǎn)中;每一個服務(wù)節(jié)點(diǎn)中存儲有所述多個元數(shù)據(jù)的存儲位置的存儲信息表,并且所述多個服務(wù)節(jié)點(diǎn)互為備份并同步更新。例如,每個節(jié)點(diǎn)分組中的服務(wù)節(jié)點(diǎn)的數(shù)量為3。每個節(jié)點(diǎn)分組中的成員節(jié)點(diǎn)的數(shù)量根據(jù)網(wǎng)段容量及網(wǎng)段內(nèi)實際節(jié)點(diǎn)數(shù)量確定。
[0023]圖1示出根據(jù)本發(fā)明實施例的在多節(jié)點(diǎn)網(wǎng)絡(luò)中執(zhí)行作業(yè)任務(wù)的方法的流程圖。在步驟I中,所述多節(jié)點(diǎn)網(wǎng)絡(luò)中的當(dāng)前節(jié)點(diǎn)接收作業(yè)任務(wù)。所述當(dāng)前節(jié)點(diǎn)是所述多節(jié)點(diǎn)網(wǎng)絡(luò)中的任意一個成員節(jié)點(diǎn)。
[0024]在步驟2中、所述當(dāng)前節(jié)點(diǎn)將所述作業(yè)任務(wù)分解為多個子作業(yè)任務(wù)。所述多個子作業(yè)任務(wù)可分別進(jìn)行執(zhí)行,包括順序執(zhí)行和并行執(zhí)行。
[0025]在步驟3中、執(zhí)行每一個子作業(yè)任務(wù)。如圖2所示,對于每一個子作業(yè)任務(wù),所述當(dāng)前節(jié)點(diǎn)執(zhí)行以下步驟:在步驟3.1中,確定所述當(dāng)前子作業(yè)任務(wù)所需要訪問的一個或多個元數(shù)據(jù)。在步驟3.2中,請求與所述當(dāng)前節(jié)點(diǎn)屬于同一節(jié)點(diǎn)分組的具有最小負(fù)載的服務(wù)節(jié)點(diǎn)提供所述一個或多個元數(shù)據(jù)的存儲位置信息,并接收所述具有最小負(fù)載的服務(wù)節(jié)點(diǎn)反饋的所述一個或多個元數(shù)據(jù)的存儲位置信息,被請求的服務(wù)節(jié)點(diǎn)在其上保存的存儲信息表中查找所述一個或多個元數(shù)據(jù)的存儲位置信息,并將能夠查詢到的存儲位置信息打包發(fā)送給當(dāng)前節(jié)點(diǎn)。如果未能獲得所有元數(shù)據(jù)的存儲位置信息,則請求其他節(jié)點(diǎn)分組的服務(wù)節(jié)點(diǎn)提供未能獲得的存儲位置信息,直至獲得所有元數(shù)據(jù)的存儲位置信息。也就是說如果被請求的服務(wù)節(jié)點(diǎn)不能提供所有元數(shù)據(jù)的存儲位置信息,則需要向其他節(jié)點(diǎn)分組中的服務(wù)節(jié)點(diǎn)請求未能獲得的元數(shù)據(jù)的存儲位置信息。在步驟3.3中,如果所述一個或多個元數(shù)據(jù)均來自同一存儲位置,則將所述當(dāng)前子作業(yè)任務(wù)發(fā)送至所述同一存儲位置所在的節(jié)點(diǎn)并由所述同一存儲位置所在的節(jié)點(diǎn)完成所述當(dāng)前子作業(yè)任務(wù),否則所述當(dāng)前節(jié)點(diǎn)根據(jù)所獲得的所有元數(shù)據(jù)的存儲位置信息獲取所有需要訪問的元數(shù)據(jù)并完成所述當(dāng)前子作業(yè)任務(wù);也就是說,如果當(dāng)前節(jié)點(diǎn)中某一子任務(wù)作業(yè)所需的所有元數(shù)據(jù)均來自與該某一子作業(yè)任務(wù)處于同一節(jié)點(diǎn)分組的另一成員節(jié)點(diǎn),則有所述另一成員節(jié)點(diǎn)完成所述子作業(yè)任務(wù),否則由當(dāng)前節(jié)點(diǎn)完成所述子作業(yè)任務(wù)。
[0026]在步驟4中、所述當(dāng)前節(jié)點(diǎn)匯總所述多個子作業(yè)任務(wù)的執(zhí)行結(jié)果并得到總體作業(yè)任務(wù)結(jié)果,并通過用戶交互界面進(jìn)行顯示