專利名稱:一種數(shù)據(jù)處理方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)處理方法、裝置和系統(tǒng)。
背景技術(shù):
分片文件系統(tǒng)采用多份冗余和分布式等技術(shù),將文件按固定大小分布到多臺(tái)機(jī) 器的上,從而提高了數(shù)據(jù)的可靠性。分片文件系統(tǒng)一般由命名節(jié)點(diǎn)(NameNode)、數(shù)據(jù)節(jié)點(diǎn) (Datanodes)和客戶端接口(Client)三大部分組成,如下命名節(jié)點(diǎn)管理分片文件系統(tǒng)的命名空間,它可以將所有文件的元數(shù)據(jù)存儲(chǔ)在一 個(gè)文件系統(tǒng)樹中,并保存所存儲(chǔ)文件的相關(guān)信息,比如一個(gè)文件包括哪些數(shù)據(jù)塊,分布在哪 些數(shù)據(jù)節(jié)點(diǎn)上,等等。需說明的是,這些信息并不存儲(chǔ)在硬盤上,而是在系統(tǒng)啟動(dòng)的時(shí)候從 數(shù)據(jù)節(jié)點(diǎn)收集而成的。數(shù)據(jù)節(jié)點(diǎn)分片文件系統(tǒng)中存儲(chǔ)數(shù)據(jù)的地方,客戶端或者命名節(jié)點(diǎn)可以向數(shù)據(jù)節(jié) 點(diǎn)請求寫入或者讀出數(shù)據(jù)片。該數(shù)據(jù)節(jié)點(diǎn)還用于周期性地向命名節(jié)點(diǎn)上報(bào)其存儲(chǔ)的數(shù)據(jù)片 的相關(guān)信息??蛻舳私涌?客戶端可以通過該接口訪問分片文件系統(tǒng)?,F(xiàn)有技術(shù)在讀取和寫入文件到該分片文件系統(tǒng)時(shí),都需要訪問命名節(jié)點(diǎn),比如,在 讀取文件時(shí),需要調(diào)用命名節(jié)點(diǎn),以獲取需要讀取的文件的數(shù)據(jù)片信息,然后才可以根據(jù)獲 取到的數(shù)據(jù)片信息從相應(yīng)的數(shù)據(jù)塊中讀取到該需要讀取的文件;又比如,在寫入文件時(shí),需 要通知命名節(jié)點(diǎn),由命名節(jié)點(diǎn)來分配用于存儲(chǔ)該需要寫入文件的數(shù)據(jù)節(jié)點(diǎn),然后才能將該 需要寫入文件寫入分配的數(shù)據(jù)節(jié)點(diǎn)中;等等。此外,分片文件系統(tǒng)還需要將所有的數(shù)據(jù)信 息匯集到命名節(jié)點(diǎn),比如,數(shù)據(jù)節(jié)點(diǎn)需要周期性地將數(shù)據(jù)片的相關(guān)信息上報(bào)給命名節(jié)點(diǎn),等 等,命名節(jié)點(diǎn)在接收到這些數(shù)據(jù)信息后,將這些數(shù)據(jù)信息保存在命名節(jié)點(diǎn)的內(nèi)存中。在對現(xiàn)有技術(shù)的研究和實(shí)踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),由于命名節(jié)點(diǎn)是整個(gè) 分片文件系統(tǒng)的核心,所以,命名節(jié)點(diǎn)的性能直接影響到整個(gè)分片文件系統(tǒng)的性能和規(guī)模, 而由于現(xiàn)有技術(shù)中的命名節(jié)點(diǎn)的性能十分有限,所以分片文件系統(tǒng)的性能和規(guī)模也難以得 到提升。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法、裝置和系統(tǒng),可以使得分片文件系統(tǒng)的性 能和規(guī)模不受命名節(jié)點(diǎn)性能的限制,有利于提升分片文件系統(tǒng)的性能和規(guī)模。一種數(shù)據(jù)處理方法,包括獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;根據(jù)所述文件名和編號(hào)通過分布式哈希表(DHT,Distributed Hash Table)算法 計(jì)算出數(shù)據(jù)片的關(guān)鍵字(Key)值;根據(jù)計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);將數(shù)據(jù)片寫入所述數(shù)據(jù)節(jié)點(diǎn),或從所述數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。
一種數(shù)據(jù)處理方法,包括接收客戶端接口寫入的數(shù)據(jù)片,所述數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;獲取所述數(shù)據(jù)片的冗余份數(shù);根據(jù)所述冗余份數(shù)和預(yù)置的路由表,通過DHT算法將所述數(shù)據(jù)片復(fù)制到其他數(shù)據(jù) 節(jié)點(diǎn)上。一種客戶端接口,包括獲取單元,用于獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;運(yùn)算單元,用于根據(jù)獲取單元獲取到的文件名和數(shù)據(jù)片的編號(hào)通過DHT算法計(jì)算 出數(shù)據(jù)片的Key值;確定單元,用于根據(jù)運(yùn)算單元計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);處理單元,用于將數(shù)據(jù)片寫入所述數(shù)據(jù)節(jié)點(diǎn),或從所述數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。一種數(shù)據(jù)節(jié)點(diǎn),包括寫入單元,用于接收客戶端接口寫入的數(shù)據(jù)片,所述數(shù)據(jù)片由文件數(shù)據(jù)劃分而 成;獲取單元,用于獲取寫入單元寫入的數(shù)據(jù)片的冗余份數(shù);復(fù)制單元,用于根據(jù)預(yù)置的路由表和獲取單元獲取到的冗余份數(shù),通過DHT算法 將所述數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上?!N分片文件系統(tǒng),包括本發(fā)明實(shí)施例提高的任一種客戶端接口和數(shù)據(jù)節(jié)點(diǎn)。本發(fā)明實(shí)施例采用根據(jù)文件名和數(shù)據(jù)片的編號(hào),通過DHT算法計(jì)算出數(shù)據(jù)片的 Key值,然后根據(jù)計(jì)算出的Key值來確定數(shù)據(jù)節(jié)點(diǎn),以便進(jìn)行數(shù)據(jù)的讀取或?qū)懭?,避免了現(xiàn) 有技術(shù)中由命名節(jié)點(diǎn)來分配數(shù)據(jù)節(jié)點(diǎn),所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重的問題,有利于提高 系統(tǒng)的穩(wěn)定性;而且,也避免了現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所導(dǎo)致 的分片文件系統(tǒng)性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能 和規(guī)模。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖Ia是本發(fā)明實(shí)施例一提供的數(shù)據(jù)處理方法的流程圖;圖Ib本發(fā)明實(shí)施例中數(shù)據(jù)片的Key值分布示意圖;圖2是本發(fā)明實(shí)施例二提供的數(shù)據(jù)處理方法的流程圖;圖3是本發(fā)明實(shí)施例三提供的寫入數(shù)據(jù)的方法流程圖;圖4是本發(fā)明實(shí)施例一提供的讀取數(shù)據(jù)的方法流程圖;圖5a是本發(fā)明實(shí)施例提供的客戶端接口的結(jié)構(gòu)示意圖;圖5b是本發(fā)明實(shí)施例提供的客戶端接口的另一結(jié)構(gòu)示意圖;圖5c是本發(fā)明實(shí)施例提供的客戶端接口的又一結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例提供的數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法、裝置和系統(tǒng)。以下分別進(jìn)行詳細(xì)說明。實(shí)施例一、本實(shí)施例將從客戶端接口(Client)的角度進(jìn)行描述。一種數(shù)據(jù)處理方法,包括獲取文件名和數(shù)據(jù)片的編號(hào),根據(jù)獲取到的文件名和數(shù) 據(jù)片的編號(hào)通過DHT算法計(jì)算出數(shù)據(jù)片的Key值,然后根據(jù)計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn) (Datanodes),將數(shù)據(jù)片寫入該數(shù)據(jù)節(jié)點(diǎn),或從該數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片;其中,數(shù)據(jù)片由 文件數(shù)據(jù)劃分而成。參見圖la,具體流程可以如下101、獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;例如,獲取方式具體可以如下(1)在需要寫入數(shù)據(jù)片時(shí),獲取文件名以及數(shù)據(jù)片的編號(hào)的方式具體可以為創(chuàng)建文件,其中,該文件具有文件名;將需要寫入該文件中的文件數(shù)據(jù)劃分成數(shù)據(jù) 片;對該數(shù)據(jù)片進(jìn)行編號(hào),得到數(shù)據(jù)片的編號(hào)。此外,在創(chuàng)建文件時(shí),還可以發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn)(NameNode),以生成文 件元數(shù)據(jù),其中,該文件元數(shù)據(jù)包括文件名和文件大小,為了方便對文件的區(qū)分和管理,還 可以為每個(gè)文件設(shè)置一個(gè)標(biāo)識(shí),稱為文件標(biāo)識(shí),該文件標(biāo)識(shí)可以保存在命名節(jié)點(diǎn)中,所以, 該文件元數(shù)據(jù)還可以包括文件標(biāo)識(shí);當(dāng)然,該文件元數(shù)據(jù)還可以包括文件創(chuàng)建時(shí)間、文件修 改時(shí)間和/或該文件中各數(shù)據(jù)片的檢驗(yàn)值,等等;命名節(jié)點(diǎn)可以返回生成的文件元數(shù)據(jù)給 客戶端接口,但是,為了節(jié)省信令流程,一般的,命名節(jié)點(diǎn)可以只返回文件標(biāo)識(shí)給客戶端接 口,根據(jù)文件標(biāo)識(shí)可以獲取到該文件標(biāo)識(shí)所對應(yīng)的文件的其他文件元數(shù)據(jù);也就是說,該數(shù) 據(jù)處理方法還可以包括發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn),以生成文件元數(shù)據(jù);接收命名節(jié)點(diǎn)返回的文件標(biāo) 識(shí)。(2)在讀取數(shù)據(jù)片時(shí),獲取文件的文件名以及數(shù)據(jù)片的編號(hào)的方式具體可以為發(fā)送打開文件信息給命名節(jié)點(diǎn),該打開文件信息包括文件名;接收命名節(jié)點(diǎn)根據(jù) 該打開文件信息返回的文件標(biāo)識(shí),根據(jù)該文件標(biāo)識(shí)獲取數(shù)據(jù)片的編號(hào)。根據(jù)該文件標(biāo)識(shí)還可以獲取到該文件標(biāo)識(shí)所對應(yīng)的文件的其他文件元數(shù)。需說明的是,本發(fā)明實(shí)施例所說的文件名指的是需要寫入的文件或需要讀取的文 件的名稱,文件數(shù)據(jù)則指的是需要寫入文件的數(shù)據(jù)或需要從文件中讀取的數(shù)據(jù),即該文件 的具體內(nèi)容。該文件數(shù)據(jù)不同于文件元數(shù)據(jù),文件元數(shù)據(jù)指的是文件的相關(guān)信息,比如文件 標(biāo)識(shí)、文件名和文件大小等等,當(dāng)然,除此之外,文件元數(shù)據(jù)還可以包括文件創(chuàng)建時(shí)間、文件 修改時(shí)間和/或該文件中各數(shù)據(jù)片的檢驗(yàn)值,等等。102、根據(jù)步驟101中獲取到的文件名和數(shù)據(jù)片的編號(hào)通過DHT算法計(jì)算出數(shù)據(jù)片的Key值;其中,Key值為
,m為32、64或128等等,m的具體取值可以依賴系統(tǒng)的規(guī) 模而定。例如,由于哈希(Hash)函數(shù)滿足DHT算法的要求,所以具體可以根據(jù)步驟101中 獲取到的文件名和數(shù)據(jù)片的編號(hào)通過Hash函數(shù)來計(jì)算出數(shù)據(jù)片的Key值。103、根據(jù)步驟102計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);需說明的是,每個(gè)數(shù)據(jù)節(jié)點(diǎn)自身也會(huì)生成一個(gè)Key值,以此來確定其存儲(chǔ)范圍,具 體存儲(chǔ)時(shí),可以設(shè)置將所有位于數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)片保存在較小Key的數(shù)據(jù)節(jié)點(diǎn)上,也 可以設(shè)置將所有位于數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)片保存在較大Key的數(shù)據(jù)節(jié)點(diǎn)上。以設(shè)置將所有位于數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)片保存在較小Key的數(shù)據(jù)節(jié)點(diǎn)上為例,參 見圖lb,假設(shè)數(shù)據(jù)節(jié)點(diǎn)生成的Key值為實(shí)心圓點(diǎn),即點(diǎn)A、點(diǎn)B和點(diǎn)C,數(shù)據(jù)片生成的為圓圈, 即點(diǎn)1、點(diǎn)2、點(diǎn)3和點(diǎn)4。其中,點(diǎn)A為起始點(diǎn),點(diǎn)C為終點(diǎn),點(diǎn)A表示數(shù)據(jù)節(jié)點(diǎn)A,點(diǎn)B表示 數(shù)據(jù)節(jié)點(diǎn)B,點(diǎn)C表示數(shù)據(jù)節(jié)點(diǎn)C。沿圓環(huán)順時(shí)針,逐漸增大。由于點(diǎn)1處于[A,B],因此可 以將點(diǎn)1保存在數(shù)據(jù)節(jié)點(diǎn)A上。同理,由于點(diǎn)2位于在[A,B],所以可以將點(diǎn)2保存在數(shù)據(jù) 節(jié)點(diǎn)B上,而點(diǎn)3和點(diǎn)4則保存在數(shù)據(jù)節(jié)點(diǎn)C上。根據(jù)該算法,可以將所有的數(shù)據(jù)片能均勻 分布在各個(gè)數(shù)據(jù)節(jié)點(diǎn)上。104、將數(shù)據(jù)片寫入步驟103確定的數(shù)據(jù)節(jié)點(diǎn),或從步驟103確定的數(shù)據(jù)節(jié)點(diǎn)中讀 取出數(shù)據(jù)片。如果在步驟101中接收到命名節(jié)點(diǎn)返回的文件標(biāo)識(shí);則步驟104具體可以為根據(jù)接收到的文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)寫入數(shù)據(jù)片,或者,根據(jù)該文件標(biāo)識(shí)和數(shù) 據(jù)片的編號(hào)從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。由上可知,本實(shí)施例采用根據(jù)文件名和數(shù)據(jù)片的編號(hào),通過DHT算法計(jì)算出數(shù)據(jù) 片的Key值,然后根據(jù)計(jì)算出的Key值來確定數(shù)據(jù)節(jié)點(diǎn),以便進(jìn)行數(shù)據(jù)的讀取或?qū)懭耄苊?了現(xiàn)有技術(shù)中由命名節(jié)點(diǎn)來分配數(shù)據(jù)節(jié)點(diǎn),所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重的問題,有利于 提高系統(tǒng)的穩(wěn)定性;而且,也避免了現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所 導(dǎo)致的分片文件系統(tǒng)性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的 性能和規(guī)模。實(shí)施例二、本實(shí)施例將從數(shù)據(jù)節(jié)點(diǎn)的角度進(jìn)行描述。一種數(shù)據(jù)處理方法,包括接收客戶端接口寫入的數(shù)據(jù)片;獲取該數(shù)據(jù)片的冗余 份數(shù);根據(jù)冗余份數(shù)和預(yù)置的路由表,通過DHT算法將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上,其 中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成。參見圖2,具體流程可以如下201、接收客戶端接口寫入的數(shù)據(jù)片,其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;202、獲取該寫入的數(shù)據(jù)片的冗余份數(shù);203、根據(jù)冗余份數(shù)和預(yù)置的路由表,通過DHT算法將該寫入的數(shù)據(jù)片復(fù)制到其他 數(shù)據(jù)節(jié)點(diǎn)上。例如,具體可以如下根據(jù)預(yù)置的路由表,通過DHT算法確定本數(shù)據(jù)節(jié)點(diǎn)后X個(gè)其他數(shù)據(jù)節(jié)點(diǎn)為冗余數(shù) 據(jù)節(jié)點(diǎn);將該寫入的數(shù)據(jù)片分別復(fù)制到確定的冗余數(shù)據(jù)節(jié)點(diǎn)中。
其中,X等于冗余份數(shù)與1的差值,冗余數(shù)據(jù)節(jié)點(diǎn)指的是用于保存冗余數(shù)據(jù)的數(shù)據(jù) 節(jié)點(diǎn),冗余數(shù)據(jù)指的是復(fù)制得到的數(shù)據(jù)片,比如,如果根據(jù)數(shù)據(jù)片的Key值確定需要將數(shù)據(jù) 片1保存在數(shù)據(jù)節(jié)點(diǎn)A中,而數(shù)據(jù)片1的冗余份數(shù)為2,那么,可以將數(shù)據(jù)片1復(fù)制一遍,然 后將復(fù)制的數(shù)據(jù)片1保存在數(shù)據(jù)節(jié)點(diǎn)A的后一個(gè)數(shù)據(jù)節(jié)點(diǎn)B中,則此時(shí),復(fù)制的數(shù)據(jù)片1稱 為冗余數(shù)據(jù),而數(shù)據(jù)節(jié)點(diǎn)B稱為數(shù)據(jù)片1的冗余數(shù)據(jù)節(jié)點(diǎn)。需說明的是,路由表具體可以保存在數(shù)據(jù)節(jié)點(diǎn)中,該路由表可以由維護(hù)人員按照 預(yù)置策略直接進(jìn)行設(shè)置和維護(hù),也可以由分片文件系統(tǒng)通過獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)而自行進(jìn)行 設(shè)置和維護(hù),具體可參見現(xiàn)有技術(shù)中關(guān)于設(shè)置路由表的相關(guān)技術(shù),在此不再贅述。由上可知,本實(shí)施例在寫入數(shù)據(jù)片以及對寫入數(shù)據(jù)片進(jìn)行冗余復(fù)制時(shí),不需要將 數(shù)據(jù)片的具體寫入情況上報(bào)給命名節(jié)點(diǎn),也不需要由命名節(jié)點(diǎn)來分配冗余數(shù)據(jù)節(jié)點(diǎn),而是 由數(shù)據(jù)節(jié)點(diǎn)自身根據(jù)冗余份數(shù)和預(yù)置的路由表,通過DHT算法來確定冗余數(shù)據(jù)節(jié)點(diǎn),從而 減輕了命名節(jié)點(diǎn)的負(fù)擔(dān),有利于提高系統(tǒng)的穩(wěn)定性;而且,也減少了對命名節(jié)點(diǎn)的依賴性, 避免了現(xiàn)有技術(shù)中分片文件系統(tǒng)性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片 文件系統(tǒng)的性能和規(guī)模。實(shí)施例三、在實(shí)施例二的基礎(chǔ)上,進(jìn)一步的,為了使得路由表能夠?qū)崟r(shí)且真實(shí)地反映當(dāng)前系 統(tǒng)狀況,避免處理數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤,當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),還可以對保 存的路由表進(jìn)行更新和維護(hù),即該數(shù)據(jù)處理方法還可以包括當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),在路由表中增加該新增數(shù)據(jù)節(jié)點(diǎn)的路 由信息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,得到新路由表。進(jìn)一步的,當(dāng)分片文件系統(tǒng)中的數(shù)據(jù)節(jié)點(diǎn)時(shí),還需要對數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行調(diào) 整,例如,具體可以如下(1)新增數(shù)據(jù)節(jié)點(diǎn)根據(jù)新路由表確定該新增數(shù)據(jù)節(jié)點(diǎn)的后一個(gè)數(shù)據(jù)節(jié)點(diǎn);通過DHT算法將該后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的部分非冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中, 其中,非冗余數(shù)據(jù)指的是應(yīng)保存在本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片,即根據(jù)數(shù)據(jù)片的Key值所確定 的數(shù)據(jù)節(jié)點(diǎn)來寫入的數(shù)據(jù)片,比如,如果根據(jù)數(shù)據(jù)片的Key值確定需要將數(shù)據(jù)片1保存在數(shù) 據(jù)節(jié)點(diǎn)A中,則數(shù)據(jù)片1稱為數(shù)據(jù)節(jié)點(diǎn)A中的非冗余數(shù)據(jù)。通過DHT算法將該后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的全部冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中,其 中,冗余數(shù)據(jù)為其他數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片。(2)刪減數(shù)據(jù)節(jié)點(diǎn)通過DHT算法將該刪減數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片刪除掉。比如,如 果數(shù)據(jù)節(jié)點(diǎn)B將復(fù)制的數(shù)據(jù)片2 (即數(shù)據(jù)片2的冗余數(shù)據(jù))保存在數(shù)據(jù)節(jié)點(diǎn)A中,則當(dāng)數(shù)據(jù) 節(jié)點(diǎn)B被刪除時(shí),數(shù)據(jù)節(jié)點(diǎn)A也會(huì)相應(yīng)地將該復(fù)制的數(shù)據(jù)片2刪除。根據(jù)冗余份數(shù)和新路由表,通過DHT算法重新將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn) 上。由于數(shù)據(jù)節(jié)點(diǎn)被刪除,導(dǎo)致該被刪除數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)均丟失,所以可能會(huì)導(dǎo)致各數(shù)據(jù) 片的冗余份數(shù)發(fā)生變化,所以此時(shí)需要重新確認(rèn)下當(dāng)前數(shù)據(jù)片的存儲(chǔ)位置是否合理,以及 冗余份數(shù)是否正確。由上可知,本實(shí)施例在數(shù)據(jù)節(jié)點(diǎn)發(fā)生變化時(shí),不需要由命名節(jié)點(diǎn)來重新對數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行調(diào)整,而是由數(shù)據(jù)節(jié)點(diǎn)自身進(jìn)行調(diào)整,所以減輕了命名節(jié)點(diǎn)的負(fù)擔(dān),有利于 提高系統(tǒng)的穩(wěn)定性;而且,也減少了對命名節(jié)點(diǎn)的依賴性,避免了現(xiàn)有技術(shù)中分片文件系統(tǒng) 性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能和規(guī)模。實(shí)施例四、根據(jù)前面實(shí)施例所描述的方法,以下將舉例作進(jìn)一步詳細(xì)說明。本發(fā)明實(shí)施例基于現(xiàn)有技術(shù)中分片文件系統(tǒng)的框架,做如下調(diào)整(1)命名節(jié)點(diǎn)不再接收和保存數(shù)據(jù)節(jié)點(diǎn)上報(bào)的數(shù)據(jù)片信息,比如數(shù)據(jù)片的分布信息,等等。不再為數(shù)據(jù)片分配數(shù)據(jù)節(jié)點(diǎn)。(2)數(shù)據(jù)節(jié)點(diǎn)不再需要定期向命名節(jié)點(diǎn)匯報(bào)數(shù)據(jù)片信息。在冗余復(fù)制時(shí),需要按照DHT算法來選擇冗余數(shù)據(jù)節(jié)點(diǎn),并將數(shù)據(jù)片復(fù)制到選擇 的冗余數(shù)據(jù)節(jié)點(diǎn)上。增加路由表,用于找到其他的數(shù)據(jù)節(jié)點(diǎn)。(3)客戶端接口不再依賴命名節(jié)點(diǎn)來定位數(shù)據(jù)片的存儲(chǔ)位置,而是直接通過DHT算法如采用Hash 函數(shù)來定位數(shù)據(jù)片的存儲(chǔ)位置。以下將分別從寫入數(shù)據(jù)和讀取數(shù)據(jù)兩方面對該數(shù)據(jù)處理方法進(jìn)行詳細(xì)說明,參見 圖3和圖4,其中,圖3為寫入數(shù)據(jù)的方法流程圖,圖4為讀取數(shù)據(jù)的方法流程圖,具體流程 分別可以如下(一)寫入數(shù)據(jù)A401、客戶端接口創(chuàng)建文件,該文件具有文件名,發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn)。A402、命名節(jié)點(diǎn)在接收到創(chuàng)建文件信息后,生成文件元數(shù)據(jù),其中,該文件元數(shù)據(jù) 包括文件標(biāo)識(shí)、文件名和文件大??;當(dāng)然,該文件元數(shù)據(jù)還可以包括文件創(chuàng)建時(shí)間、文件修 改時(shí)間和/或該文件中各數(shù)據(jù)片的檢驗(yàn)值,等等。A403、命名節(jié)點(diǎn)發(fā)送文件標(biāo)識(shí)給客戶端接口,如果客戶端接口可以根據(jù)該文件標(biāo) 識(shí)獲取到該文件標(biāo)識(shí)所對應(yīng)的文件的其他文件元數(shù)據(jù),比如文件大小、創(chuàng)建時(shí)間等等。A404、客戶端接口將需要寫入該文件的文件數(shù)據(jù)切分成數(shù)據(jù)片,并對數(shù)據(jù)片進(jìn)行 編號(hào),得到數(shù)據(jù)片的編號(hào)。例如,將該文件數(shù)據(jù)切分為數(shù)據(jù)片1、數(shù)據(jù)片2、數(shù)據(jù)片3和數(shù)據(jù)片4,其中,數(shù)據(jù)片 1的編號(hào)為001,數(shù)據(jù)片2的編號(hào)為002,數(shù)據(jù)片3的編號(hào)為003。A405、客戶端接口根據(jù)文件名和數(shù)據(jù)片的編號(hào)通過Hash函數(shù)計(jì)算出數(shù)據(jù)片的Key值。其中,Key值為W,2m_l],m為32、64或128等等,m的具體取值可以依賴系統(tǒng)的規(guī) 模而定,具體可參見實(shí)施例一。比如,參見圖lb,客戶端接口根據(jù)文件名和數(shù)據(jù)片1的編號(hào)001通過Hash函數(shù),可 以計(jì)算出數(shù)據(jù)片1的Key值為[A,B],數(shù)據(jù)片2的Key值為[B,C],等等。A406、客戶端接口根據(jù)步驟A405中計(jì)算得到的Key值確定數(shù)據(jù)節(jié)點(diǎn)。比如,由于在步驟A405中計(jì)算數(shù)據(jù)片1的Key值為[A,B],所以確定數(shù)據(jù)片1所對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)A,又比如,由于數(shù)據(jù)片2的Key值為[B,C],所以,所以確定數(shù) 據(jù)片2所對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)B,等等。A407、客戶端接口根據(jù)文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)將數(shù)據(jù)片寫入數(shù)據(jù)節(jié)點(diǎn),并校驗(yàn) 客戶端接口所寫入的數(shù)據(jù)片,得到數(shù)據(jù)片的校驗(yàn)值。例如,將數(shù)據(jù)片1寫入數(shù)據(jù)節(jié)點(diǎn)A,將數(shù)據(jù)片2寫入數(shù)據(jù)節(jié)點(diǎn)B,等等。當(dāng)然,在寫入完畢后,數(shù)據(jù)節(jié)點(diǎn)也可以返回表示寫入成功的響應(yīng)給客戶端接口。A408、客戶端接口通知命名節(jié)點(diǎn)數(shù)據(jù)片已寫入成功,并將數(shù)據(jù)片的校驗(yàn)值發(fā)送給 命名節(jié)點(diǎn),命名節(jié)點(diǎn)保存該校驗(yàn)值。A409、數(shù)據(jù)節(jié)點(diǎn)獲取該寫入的數(shù)據(jù)片的冗余份數(shù)X。A410、數(shù)據(jù)節(jié)點(diǎn)根據(jù)冗余份數(shù)X和預(yù)置的路由表,通過Hash函數(shù)將該寫入的數(shù)據(jù) 片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上,具體為向本數(shù)據(jù)節(jié)點(diǎn)的下“X-1 ”個(gè)數(shù)據(jù)節(jié)點(diǎn)寫入該寫入的數(shù)據(jù) 片,可選的,寫入完畢后,這些數(shù)據(jù)節(jié)點(diǎn)可以返回寫入成功的響應(yīng)給本數(shù)據(jù)節(jié)點(diǎn)。例如,以數(shù)據(jù)節(jié)點(diǎn)A為例,如果冗余份數(shù)為3的話,則數(shù)據(jù)節(jié)點(diǎn)A將數(shù)據(jù)片1復(fù)制 到下兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,即復(fù)制到數(shù)據(jù)節(jié)點(diǎn)B和數(shù)據(jù)節(jié)點(diǎn)C中,其它數(shù)據(jù)節(jié)點(diǎn)同此操作。需說明的是,客戶端接口可以逐一向數(shù)據(jù)節(jié)點(diǎn)寫入數(shù)據(jù)片,也可以同時(shí)向數(shù)據(jù)節(jié) 點(diǎn)寫入多個(gè)數(shù)據(jù)片,如果是逐一向數(shù)據(jù)節(jié)點(diǎn)寫入數(shù)據(jù)片的話,則可以循環(huán)執(zhí)行步驟A405 A410,直至所有數(shù)據(jù)片寫入完畢。A411、客戶端接口將需要寫入的數(shù)據(jù)片全部寫入到數(shù)據(jù)節(jié)點(diǎn)后,客戶端接口請求 命名節(jié)點(diǎn)關(guān)閉文件,命名節(jié)點(diǎn)可以返回關(guān)于關(guān)閉文件是否成功的響應(yīng)給客戶端,流程結(jié)束。(二)讀取數(shù)據(jù)B401、客戶端接口發(fā)送打開文件信息給命名節(jié)點(diǎn),該打開文件信息包括文件名。B402、命名節(jié)點(diǎn)根據(jù)該打開文件信息返回文件標(biāo)識(shí)給客戶端接口,客戶端接口根 據(jù)文件標(biāo)識(shí)獲取數(shù)據(jù)片的編號(hào)。B403、客戶端接口根據(jù)文件名和數(shù)據(jù)片的編號(hào)通過Hash函數(shù)計(jì)算出數(shù)據(jù)片的Key值。其中,Key值為W,2m_l],m為32、64或128等等,m的具體取值可以依賴系統(tǒng)的規(guī) 模而定,具體可參見實(shí)施例一。比如,參見圖lb,客戶端接口根據(jù)文件名和數(shù)據(jù)片1的編號(hào)001通過Hash函數(shù),可 以計(jì)算出數(shù)據(jù)片1的Key值為[A,B],數(shù)據(jù)片2的Key值為[B,C],等等。B404、客戶端接口根據(jù)步驟A403中計(jì)算得到的Key值確定數(shù)據(jù)節(jié)點(diǎn)。比如,由于在步驟A403中計(jì)算數(shù)據(jù)片1的Key值為[A,B],所以確定數(shù)據(jù)片1所 對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)A,又比如,由于數(shù)據(jù)片2的Key值為[B,C],所以,所以確定數(shù) 據(jù)片2所對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)B,等等。B405、客戶端接口獲取數(shù)據(jù)片的冗余份數(shù)X。B406、客戶端接口根據(jù)該確定的數(shù)據(jù)節(jié)點(diǎn)和冗余份數(shù)X,找到數(shù)據(jù)片相應(yīng)的冗余數(shù) 據(jù)節(jié)點(diǎn),根據(jù)隨機(jī)算法,在該確定的數(shù)據(jù)節(jié)點(diǎn)和冗余數(shù)據(jù)節(jié)點(diǎn)中挑選出一個(gè)數(shù)據(jù)節(jié)點(diǎn),以讀 取數(shù)據(jù)片。例如,以數(shù)據(jù)片1為例,根據(jù)步驟B404可以確定,數(shù)據(jù)片1所對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)為數(shù) 據(jù)節(jié)點(diǎn)A,則如果在步驟B405中獲取的冗余份數(shù)為2的話,在步驟B406中,客戶端接口可以計(jì)算出冗余數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)A的下“2-1 = 1”個(gè)數(shù)據(jù)節(jié)點(diǎn),即數(shù)據(jù)節(jié)點(diǎn)B。于是,客戶 端接口根據(jù)隨機(jī)算法,在數(shù)據(jù)節(jié)點(diǎn)A和數(shù)據(jù)節(jié)點(diǎn)B中挑選出一個(gè)數(shù)據(jù)節(jié)點(diǎn),假設(shè)該挑選出的 數(shù)據(jù)節(jié)點(diǎn)為數(shù)據(jù)節(jié)點(diǎn)A的話,則客戶端接口向數(shù)據(jù)節(jié)點(diǎn)A讀取出數(shù)據(jù)片1。B407、該挑選出的數(shù)據(jù)節(jié)點(diǎn)根據(jù)文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)查找數(shù)據(jù)片,并從命名 節(jié)點(diǎn)中獲取校驗(yàn)數(shù)值,與該查找到的數(shù)據(jù)片的校驗(yàn)數(shù)值進(jìn)行比對,若一致,則確定該查找到 的數(shù)據(jù)片正確,于是將該查找到的數(shù)據(jù)片發(fā)送給客戶端接口 ;若不一致,則確定該查找到的 數(shù)據(jù)片錯(cuò)誤,于是重新根據(jù)文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)查找數(shù)據(jù)片,直至找到正確的數(shù)據(jù)片。需說明的是,客戶端接口可以從數(shù)據(jù)節(jié)點(diǎn)中逐一讀取出數(shù)據(jù)片,也可以同時(shí)從數(shù) 據(jù)節(jié)點(diǎn)中讀取出多個(gè)數(shù)據(jù)片,如果是從數(shù)據(jù)節(jié)點(diǎn)逐一讀取出數(shù)據(jù)片的話,則可以循環(huán)執(zhí)行 步驟B403 B407,直至所有數(shù)據(jù)片讀取完畢。B408、客戶端接口讀取完需要讀取的數(shù)據(jù)片后,客戶端接口請求命名節(jié)點(diǎn)關(guān)閉文 件,命名節(jié)點(diǎn)可以返回關(guān)于關(guān)閉文件是否成功的響應(yīng)給客戶端,流程結(jié)束。進(jìn)一步的,當(dāng)分片文件系統(tǒng)中的數(shù)據(jù)節(jié)點(diǎn)時(shí),還需要對數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行調(diào) 整,例如,具體可以如下當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),數(shù)據(jù)節(jié)點(diǎn)需要在路由表中增加該新增 數(shù)據(jù)節(jié)點(diǎn)的路由信息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,以得到新路由表。以下將對新增 數(shù)據(jù)節(jié)點(diǎn)和刪減數(shù)據(jù)節(jié)點(diǎn)分別進(jìn)行說明。(1)新增數(shù)據(jù)節(jié)點(diǎn)首先,數(shù)據(jù)節(jié)點(diǎn)在路由表中增加該新增數(shù)據(jù)節(jié)點(diǎn)的路由信息,以得到新的路由表。其次,數(shù)據(jù)節(jié)點(diǎn)根據(jù)新路由表確定該新增數(shù)據(jù)節(jié)點(diǎn)的后一個(gè)數(shù)據(jù)節(jié)點(diǎn),然后,一方 面通過DHT算法將該后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的部分非冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中;另一方 面通過DHT算法將該后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的全部冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中。(2)刪減數(shù)據(jù)節(jié)點(diǎn)首先,數(shù)據(jù)節(jié)點(diǎn)在路由表中刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,以得到新的路由表。其次,如果該刪減數(shù)據(jù)節(jié)點(diǎn)上所保存的數(shù)據(jù)片存在冗余數(shù)據(jù)的話,需要將存儲(chǔ)在 其他數(shù)據(jù)節(jié)點(diǎn)上的相應(yīng)的冗余數(shù)據(jù)刪除。比如,如果數(shù)據(jù)節(jié)點(diǎn)B將復(fù)制的數(shù)據(jù)片2 (即數(shù)據(jù) 片2的冗余數(shù)據(jù))保存在數(shù)據(jù)節(jié)點(diǎn)A中,則當(dāng)數(shù)據(jù)節(jié)點(diǎn)B被刪除時(shí),數(shù)據(jù)節(jié)點(diǎn)A也會(huì)相應(yīng)地 將該復(fù)制的數(shù)據(jù)片2刪除。由于數(shù)據(jù)節(jié)點(diǎn)被刪除后,該被刪除數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)將會(huì)全部變成無效,所以可 能會(huì)導(dǎo)致各數(shù)據(jù)片的冗余份數(shù)發(fā)生變化,因此,此時(shí)可以根據(jù)冗余份數(shù)和新路由表,通過 DHT算法重新將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上,以保證分片文件系統(tǒng)中的冗余份數(shù)與實(shí) 際的冗余分?jǐn)?shù)能保持一致。由上可知,本實(shí)施例采用根據(jù)文件名和數(shù)據(jù)片的編號(hào),通過DHT算法計(jì)算出數(shù)據(jù) 片的Key值,然后根據(jù)計(jì)算出的Key值來確定數(shù)據(jù)節(jié)點(diǎn),以便進(jìn)行數(shù)據(jù)的讀取或?qū)懭?,而且?在寫入數(shù)據(jù)片以及對寫入數(shù)據(jù)片進(jìn)行冗余復(fù)制時(shí),也可以通過DHT算法來確定冗余數(shù)據(jù)節(jié) 點(diǎn),而不需要由命名節(jié)點(diǎn)來分配冗余數(shù)據(jù)節(jié)點(diǎn);進(jìn)一步的,在數(shù)據(jù)節(jié)點(diǎn)發(fā)生變化時(shí),也不需 要由命名節(jié)點(diǎn)來重新對數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行調(diào)整,而是由數(shù)據(jù)節(jié)點(diǎn)自身進(jìn)行調(diào)整,避免 了現(xiàn)有技術(shù)中由命名節(jié)點(diǎn)來分配數(shù)據(jù)節(jié)點(diǎn)、分配冗余數(shù)據(jù)節(jié)點(diǎn)以及調(diào)整數(shù)據(jù)節(jié)點(diǎn)等操作, 所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重的問題,有利于提高系統(tǒng)的穩(wěn)定性;而且,采用該方案也可以避免現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所導(dǎo)致的分片文件系統(tǒng)性能提高 受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能和規(guī)模。實(shí)施例五、為了更好地實(shí)施以上方法,本發(fā)明實(shí)施例還提供一種客戶端接口,如圖5a所示, 客戶端接口包括獲取單元501、運(yùn)算單元502、確定單元503和處理單元504 ;獲取單元501,用于獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而 成;運(yùn)算單元502,用于根據(jù)獲取單元501獲取到的文件名和數(shù)據(jù)片的編號(hào)通過DHT算 法計(jì)算出數(shù)據(jù)片的Key值;其中,Key值為
,m為32、64或128等等,m的具體取值 可以依賴系統(tǒng)的規(guī)模而定;確定單元503,用于根據(jù)運(yùn)算單元502計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);需說明的是,每個(gè)數(shù)據(jù)節(jié)點(diǎn)自身也會(huì)生成一個(gè)Key值,以此來確定其存儲(chǔ)范圍,具 體存儲(chǔ)時(shí),可以設(shè)置將所有位于數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)片保存在較小Key的數(shù)據(jù)節(jié)點(diǎn)上,也 可以設(shè)置將所有位于數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)片保存在較大Key的數(shù)據(jù)節(jié)點(diǎn)上;處理單元504,用于將數(shù)據(jù)片寫入確定單元503所確定的數(shù)據(jù)節(jié)點(diǎn),或從寫入確定 單元503所確定的數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。如圖5b所示,在需要寫入數(shù)據(jù)片時(shí),獲取單元501可以包括創(chuàng)建子單元A5011、劃 分子單元A5012和編號(hào)子單元A5013 ;創(chuàng)建子單元A5011,用于發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn),以生成文件元數(shù)據(jù);劃分子單元A5012,用于將需要寫入創(chuàng)建子單元A5011所創(chuàng)建的文件中的文件數(shù) 據(jù)劃分成數(shù)據(jù)片;編號(hào)子單元A5013,用于對劃分子單元A5012劃分得到的數(shù)據(jù)片進(jìn)行編號(hào),得到數(shù) 據(jù)片的編號(hào)。則,運(yùn)算單元502,用于根據(jù)創(chuàng)建子單元A5011得到的文件名和編號(hào)子單元A5013 得到的數(shù)據(jù)片的編號(hào)通過DHT算法計(jì)算出數(shù)據(jù)片的Key值。如圖5b所示,該客戶端接口還可以包括發(fā)送單元505和接收單元506 ;發(fā)送單元505,用于在創(chuàng)建子單元A5011創(chuàng)建文件時(shí),發(fā)送創(chuàng)建文件信息給命名節(jié) 點(diǎn),以生成文件元數(shù)據(jù),其中,文件元數(shù)據(jù)包括文件標(biāo)識(shí)、文件名和文件大??;當(dāng)然,該文件 元數(shù)據(jù)還可以包括文件創(chuàng)建時(shí)間、文件修改時(shí)間和/或該文件中各數(shù)據(jù)片的檢驗(yàn)值,等等;接收單元506,用于接收命名節(jié)點(diǎn)返回的文件標(biāo)識(shí);則處理單元504,具體用于根據(jù)接收單元506接收到的文件標(biāo)識(shí)和編號(hào)子單元 A5013得到的數(shù)據(jù)片的編號(hào)寫入數(shù)據(jù)片。如圖5c所示,在讀取數(shù)據(jù)片時(shí),獲取單元501可以包括打開子單元B5011、接收子 單元B5012和編號(hào)獲取子單元B5013 ;打開子單元B5011,用于發(fā)送打開文件信息給命名節(jié)點(diǎn);接收子單元B5012,用于接收命名節(jié)點(diǎn)根據(jù)該打開文件信息返回的文件標(biāo)識(shí);編號(hào)獲取子單元B5013,用于根據(jù)接收子單元B5012接收到的文件標(biāo)識(shí)獲取數(shù)據(jù) 片的編號(hào);則,運(yùn)算單元502,用于根據(jù)文件名和編號(hào)獲取子單元B5013得到的數(shù)據(jù)片的編號(hào)通過DHT算法計(jì)算出數(shù)據(jù)片的Key值;處理單元504,具體用于根據(jù)接收子單元B5012接收到的文件標(biāo)識(shí)和編號(hào)獲取子 單元B5013獲取到的數(shù)據(jù)片的編號(hào)從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。以上各個(gè)單元的具體實(shí)施可參見前面實(shí)施例,在此不再贅述。由上可知,本實(shí)施例的客戶端接口的運(yùn)算單元502可以根據(jù)文件名和數(shù)據(jù)片的編 號(hào),通過DHT算法計(jì)算出數(shù)據(jù)片的Key值,然后由確定單元503根據(jù)計(jì)算出的Key值來確定 數(shù)據(jù)節(jié)點(diǎn),以便處理單元504進(jìn)行數(shù)據(jù)的讀取或?qū)懭?,避免了現(xiàn)有技術(shù)中由命名節(jié)點(diǎn)來分 配數(shù)據(jù)節(jié)點(diǎn),所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重的問題,有利于提高系統(tǒng)的穩(wěn)定性;而且,也避 免了現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所導(dǎo)致的分片文件系統(tǒng)性能提高 受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能和規(guī)模。實(shí)施例六、相應(yīng)地,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)節(jié)點(diǎn),如圖6所示,該數(shù)據(jù)節(jié)點(diǎn)包括寫入單 元601、獲取單元602和復(fù)制單元603 ;寫入單元601,用于接收客戶端接口寫入的數(shù)據(jù)片,其中,該數(shù)據(jù)片由文件數(shù)據(jù)劃 分而成;獲取單元602,用于獲取寫入單元601寫入的數(shù)據(jù)片的冗余份數(shù);復(fù)制單元603,用于根據(jù)預(yù)置的路由表和獲取單元602獲取到的冗余份數(shù),通過 DHT算法將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上。例如,具體可以根據(jù)預(yù)置的路由表,通過DHT算法確定本數(shù)據(jù)節(jié)點(diǎn)后X個(gè)其他數(shù)據(jù) 節(jié)點(diǎn)為冗余數(shù)據(jù)節(jié)點(diǎn);將該寫入的數(shù)據(jù)片分別復(fù)制到確定的冗余數(shù)據(jù)節(jié)點(diǎn)中,其中,X等于 冗余份數(shù)與1的差值。路由表具體可以保存在數(shù)據(jù)節(jié)點(diǎn)中,該路由表可以由維護(hù)人員按照預(yù)置策略直接 進(jìn)行設(shè)置和維護(hù),也可以由分片文件系統(tǒng)通過獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)而自行進(jìn)行設(shè)置和維護(hù), 具體可參見現(xiàn)有技術(shù)中關(guān)于設(shè)置路由表的相關(guān)技術(shù),在此不再贅述。該數(shù)據(jù)節(jié)點(diǎn)還可以包括路由表更新單元;路由表更新單元,用于當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),在路由表中增 加該新增數(shù)據(jù)節(jié)點(diǎn)的路由信息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,得到新路由表。該數(shù)據(jù)節(jié)點(diǎn)還可以包括確定單元、第一調(diào)整單元和第二調(diào)整單元;確定單元,用于根據(jù)路由表更新單元得到的新路由表確定該新增數(shù)據(jù)節(jié)點(diǎn)的后一 個(gè)數(shù)據(jù)節(jié)點(diǎn);第一調(diào)整單元,用于通過DHT算法將確定單元確定的后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的部分非 冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中,其中,非冗余數(shù)據(jù)為應(yīng)保存在本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片;
第二調(diào)整單元,用于通過DHT算法將確定單元確定的后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的全部冗 余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中,其中,冗余數(shù)據(jù)為其他數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù) 據(jù)片。該數(shù)據(jù)節(jié)點(diǎn)還可以包括刪除單元;刪除單元,用于通過DHT算法刪除該刪減數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù) 片。由于數(shù)據(jù)節(jié)點(diǎn)被刪除后,該被刪除數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)將會(huì)全部變成無效,所以可能會(huì)導(dǎo)致各數(shù)據(jù)片的冗余份數(shù)發(fā)生變化,因此,此時(shí)可以根據(jù)冗余份數(shù)和新路由表,通過 DHT算法重新將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上,以保證分片文件系統(tǒng)中的冗余份數(shù)與實(shí) 際的冗余分?jǐn)?shù)能保持一致,即該數(shù)據(jù)節(jié)點(diǎn)還可以包括冗余更新單元;冗余更新單元,用于通過冗余份數(shù)和路由表更新單元得到的新路由表,通過DHT 算法重新將數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上。以上各個(gè)單元的具體實(shí)施可參見前面實(shí)施例,在此不再贅述。由上可知,本實(shí)施例的數(shù)據(jù)節(jié)點(diǎn)在寫入數(shù)據(jù)片以及對寫入數(shù)據(jù)片進(jìn)行冗余復(fù)制 時(shí),不需要將數(shù)據(jù)片的具體寫入情況上報(bào)給命名節(jié)點(diǎn),也不需要由命名節(jié)點(diǎn)來分配冗余數(shù) 據(jù)節(jié)點(diǎn),而是由數(shù)據(jù)節(jié)點(diǎn)的復(fù)制單元603根據(jù)冗余份數(shù)和預(yù)置的路由表,通過DHT算法來確 定冗余數(shù)據(jù)節(jié)點(diǎn),從而減輕了命名節(jié)點(diǎn)的負(fù)擔(dān)。另外,在數(shù)據(jù)節(jié)點(diǎn)發(fā)生變化時(shí),也不需要由 命名節(jié)點(diǎn)來重新對數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行調(diào)整,而是由數(shù)據(jù)節(jié)點(diǎn)的第一調(diào)整單元、第二調(diào) 整單元、刪除單元或冗余更新單元來相應(yīng)地進(jìn)行調(diào)整,所以可以進(jìn)一步減輕了命名節(jié)點(diǎn)的 負(fù)擔(dān),有利于提高系統(tǒng)的穩(wěn)定性;而且,由于采用本方案可以減少對命名節(jié)點(diǎn)的依賴性,所 以可以避免現(xiàn)有技術(shù)中分片文件系統(tǒng)性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升 分片文件系統(tǒng)的性能和規(guī)模。實(shí)施例七、相應(yīng)的,本發(fā)明實(shí)施例還提供一種分片文件系統(tǒng),該分片文件系統(tǒng)包括本發(fā)明實(shí) 施例提供的任一種客戶端接口和數(shù)據(jù)節(jié)點(diǎn);客戶端接口,用于獲取文件名以及數(shù)據(jù)片的編號(hào),根據(jù)獲取到的文件名和數(shù)據(jù)片 的編號(hào)通過DHT算法計(jì)算出數(shù)據(jù)片的Key值,然后根據(jù)計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn),將 數(shù)據(jù)片寫入該數(shù)據(jù)節(jié)點(diǎn),或從該數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片;其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而 成;Key值為
,m為32、64或128等等,m的具體取值可以依賴系統(tǒng)的規(guī)模而定;數(shù)據(jù)節(jié)點(diǎn),用于接收客戶端接口寫入的數(shù)據(jù)片;獲取該數(shù)據(jù)片的冗余份數(shù);根據(jù) 冗余份數(shù)和預(yù)置的路由表,通過DHT算法將該數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上,其中,數(shù)據(jù)片 由文件數(shù)據(jù)劃分而成。該數(shù)據(jù)節(jié)點(diǎn),還用于將保存的數(shù)據(jù)片發(fā)送給客戶端接口。其中,在需要寫入數(shù)據(jù)片時(shí),客戶端接口,具體用于創(chuàng)建文件,該文件具有文件名, 將需要寫入該文件中的文件數(shù)據(jù)劃分成數(shù)據(jù)片;對該數(shù)據(jù)片進(jìn)行編號(hào),得到數(shù)據(jù)片的編號(hào)。進(jìn)一步的,客戶端接口,還用于發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn)以生成文件元數(shù)據(jù), 其中,該文件元數(shù)據(jù)包括文件標(biāo)識(shí)、文件名和文件大??;該文件元數(shù)據(jù)還可以包括文件創(chuàng)建 時(shí)間、文件修改時(shí)間和/或該文件中各數(shù)據(jù)片的檢驗(yàn)值,等等;接收命名節(jié)點(diǎn)返回的文件標(biāo) 識(shí);根據(jù)數(shù)據(jù)片的編號(hào)和接收到的文件標(biāo)識(shí)寫入數(shù)據(jù)片。在讀取數(shù)據(jù)片時(shí),客戶端接口,具體用于發(fā)送打開文件信息給命名節(jié)點(diǎn);接收命名 節(jié)點(diǎn)根據(jù)該打開文件信息返回的文件標(biāo)識(shí),根據(jù)該文件標(biāo)識(shí)獲取數(shù)據(jù)片的編號(hào),根據(jù)文件 標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。該分片文件系統(tǒng)還可以包括命名節(jié)點(diǎn);在寫入數(shù)據(jù)時(shí),命名節(jié)點(diǎn),用于接收客戶端接口發(fā)送的創(chuàng)建文件信息,根據(jù)創(chuàng)建文 件信息生成文件元數(shù)據(jù);該命名節(jié)點(diǎn),還用于返回文件標(biāo)識(shí)給客戶端接口。在讀取數(shù)據(jù)時(shí),命名節(jié)點(diǎn),用于接收客戶端接口發(fā)送的打開文件信息,根據(jù)該打開 文件信息返回的文件標(biāo)識(shí)給客戶端接口。
當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),數(shù)據(jù)節(jié)點(diǎn)還用于在路由表中增加該新 增數(shù)據(jù)節(jié)點(diǎn)的路由信息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,以得到新路由表。進(jìn)一步的,當(dāng)分片文件系統(tǒng)中的數(shù)據(jù)節(jié)點(diǎn)時(shí),數(shù)據(jù)節(jié)點(diǎn)還用于對數(shù)據(jù)節(jié)點(diǎn)中的數(shù) 據(jù)進(jìn)行調(diào)整,具體可參見前面實(shí)施例,在此不再贅述。以上各個(gè)設(shè)備具體可參見前面實(shí)施例,在此不再贅述。由上可知,本實(shí)施例的分片文件系統(tǒng)的客戶端接口可以根據(jù)文件名和數(shù)據(jù)片的編 號(hào),通過DHT算法計(jì)算出數(shù)據(jù)片的Key值,然后根據(jù)計(jì)算出的Key值來確定數(shù)據(jù)節(jié)點(diǎn),以進(jìn) 行數(shù)據(jù)的讀取或?qū)懭?,而且,在寫入?shù)據(jù)片以及對寫入數(shù)據(jù)片進(jìn)行冗余復(fù)制時(shí),也可以由數(shù) 據(jù)節(jié)點(diǎn)通過DHT算法來確定冗余數(shù)據(jù)節(jié)點(diǎn),而不需要由命名節(jié)點(diǎn)來分配冗余數(shù)據(jù)節(jié)點(diǎn);進(jìn) 一步的,在數(shù)據(jù)節(jié)點(diǎn)發(fā)生變化時(shí),也不需要由命名節(jié)點(diǎn)來重新對數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行調(diào) 整,而是由數(shù)據(jù)節(jié)點(diǎn)自身來進(jìn)行調(diào)整,避免了現(xiàn)有技術(shù)中由命名節(jié)點(diǎn)來分配數(shù)據(jù)節(jié)點(diǎn)、分配 冗余數(shù)據(jù)節(jié)點(diǎn)以及調(diào)整數(shù)據(jù)節(jié)點(diǎn)等操作,所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重、以及對系統(tǒng)影響 較大等問題,有利于簡化命名節(jié)點(diǎn)的功能,提高系統(tǒng)的穩(wěn)定性;而且,采用該方案也可以避 免現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所導(dǎo)致的分片文件系統(tǒng)性能提高受 到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能和規(guī)模的擴(kuò)展。本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存 儲(chǔ)介質(zhì)可以包括只讀存儲(chǔ)器(ROM,Read Only Memory)、隨機(jī)存取記憶體(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實(shí)施例所提供的數(shù)據(jù)處理方法、裝置和系統(tǒng)進(jìn)行了詳細(xì)介紹,本文 中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思 想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對 本發(fā)明的限制。
權(quán)利要求
1.一種數(shù)據(jù)處理方法,其特征在于,包括獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成;根據(jù)所述文件名和編號(hào)通過分布式哈希表DHT算法計(jì)算出數(shù)據(jù)片的關(guān)鍵字Key值;根據(jù)計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);將數(shù)據(jù)片寫入所述數(shù)據(jù)節(jié)點(diǎn),或從所述數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取文件名和數(shù)據(jù)片的編號(hào)包括 創(chuàng)建文件,所述文件具有文件名;將需要寫入所述文件中的文件數(shù)據(jù)劃分成數(shù)據(jù)片; 對所述數(shù)據(jù)片進(jìn)行編號(hào),得到數(shù)據(jù)片的編號(hào)。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn),以生成文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括文件標(biāo)識(shí)、文 件名和文件大小;接收命名節(jié)點(diǎn)返回的文件標(biāo)識(shí);則所述將數(shù)據(jù)片寫入所述數(shù)據(jù)節(jié)點(diǎn)包括根據(jù)所述文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)寫入數(shù)據(jù)片。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取文件名和數(shù)據(jù)片的編號(hào)包括 發(fā)送打開文件信息給命名節(jié)點(diǎn),所述打開文件信息包括文件名;接收命名節(jié)點(diǎn)根據(jù)所述打開文件信息返回的文件標(biāo)識(shí); 根據(jù)所述文件標(biāo)識(shí)獲取數(shù)據(jù)片的編號(hào)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片包括 根據(jù)所述文件標(biāo)識(shí)和數(shù)據(jù)片的編號(hào)從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。
6.一種數(shù)據(jù)處理方法,其特征在于,包括接收客戶端接口寫入的數(shù)據(jù)片,所述數(shù)據(jù)片由文件數(shù)據(jù)劃分而成; 獲取所述數(shù)據(jù)片的冗余份數(shù);根據(jù)所述冗余份數(shù)和預(yù)置的路由表,通過分布式哈希表DHT算法將所述數(shù)據(jù)片復(fù)制到 其他數(shù)據(jù)節(jié)點(diǎn)上。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述冗余份數(shù),通過DHT算法將 所述數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上包括根據(jù)預(yù)置的路由表,通過DHT算法確定本數(shù)據(jù)節(jié)點(diǎn)后X個(gè)其他數(shù)據(jù)節(jié)點(diǎn)為冗余數(shù)據(jù)節(jié) 點(diǎn);所述X等于冗余份數(shù)與1的差值;將所述數(shù)據(jù)片分別復(fù)制到確定的冗余數(shù)據(jù)節(jié)點(diǎn)中。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,還包括當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),在路由表中增加該新增數(shù)據(jù)節(jié)點(diǎn)的路由信 息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,得到新路由表。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括 根據(jù)新路由表確定所述新增數(shù)據(jù)節(jié)點(diǎn)的后一個(gè)數(shù)據(jù)節(jié)點(diǎn);通過DHT算法將所述后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的部分非冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中,所 述非冗余數(shù)據(jù)為應(yīng)保存在本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片;通過DHT算法將所述后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的全部冗余數(shù)據(jù)轉(zhuǎn)移到新增數(shù)據(jù)節(jié)點(diǎn)中,所述冗余數(shù)據(jù)為其他數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括通過DHT算法刪除所述刪減數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片。
11.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括通過冗余份數(shù)和新路由表,通過DHT算法重新將所述數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上。
12.—種客戶端接口,其特征在于,包括獲取單元,用于獲取文件名和數(shù)據(jù)片的編號(hào),其中,數(shù)據(jù)片由文件數(shù)據(jù)劃分而成; 運(yùn)算單元,用于根據(jù)獲取單元獲取到的文件名和數(shù)據(jù)片的編號(hào)通過分布式哈希表DHT 算法計(jì)算出數(shù)據(jù)片的關(guān)鍵字Key值;確定單元,用于根據(jù)運(yùn)算單元計(jì)算出的Key值確定數(shù)據(jù)節(jié)點(diǎn);處理單元,用于將數(shù)據(jù)片寫入所述數(shù)據(jù)節(jié)點(diǎn),或從所述數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。
13.根據(jù)權(quán)利要求12所述的客戶端接口,其特征在于,所述獲取單元包括 創(chuàng)建子單元,用于創(chuàng)建文件,所述文件具有文件名;劃分子單元,用于將需要寫入創(chuàng)建子單元所創(chuàng)建的文件中的文件數(shù)據(jù)劃分成數(shù)據(jù)片; 編號(hào)子單元,用于對劃分子單元?jiǎng)澐值玫降臄?shù)據(jù)片進(jìn)行編號(hào),得到數(shù)據(jù)片的編號(hào)。
14.根據(jù)權(quán)利要求13所述的客戶端接口,其特征在于,還包括發(fā)送單元和接收單元; 發(fā)送單元,用于在創(chuàng)建子單元?jiǎng)?chuàng)建文件時(shí),發(fā)送創(chuàng)建文件信息給命名節(jié)點(diǎn),以生成文件元數(shù)據(jù),所述文件元數(shù)據(jù)包括文件標(biāo)識(shí)、文件名和文件大?。?接收單元,用于接收命名節(jié)點(diǎn)返回的文件標(biāo)識(shí);則處理單元,具體用于根據(jù)接收單元接收到的文件標(biāo)識(shí)和編號(hào)子單元得到的數(shù)據(jù)片的 編號(hào)寫入數(shù)據(jù)片。
15.根據(jù)權(quán)利要求12所述的客戶端接口,其特征在于,所述獲取單元包括打開子單元、 接收子單元和編號(hào)獲取子單元;打開子單元,用于發(fā)送打開文件信息給命名節(jié)點(diǎn); 接收子單元,用于接收命名節(jié)點(diǎn)根據(jù)所述打開文件信息返回的文件標(biāo)識(shí); 編號(hào)獲取子單元,用于根據(jù)接收子單元接收到的文件標(biāo)識(shí)獲取數(shù)據(jù)片的編號(hào); 則所述處理單元,具體用于根據(jù)接收子單元接收到的文件標(biāo)識(shí)和編號(hào)獲取子單元獲取 到的數(shù)據(jù)片的編號(hào)從數(shù)據(jù)節(jié)點(diǎn)中讀取出數(shù)據(jù)片。
16.一種數(shù)據(jù)節(jié)點(diǎn),其特征在于,包括寫入單元,用于接收客戶端接口寫入的數(shù)據(jù)片,所述數(shù)據(jù)片由文件數(shù)據(jù)劃分而成; 獲取單元,用于獲取寫入單元寫入的數(shù)據(jù)片的冗余份數(shù);復(fù)制單元,用于根據(jù)預(yù)置的路由表和獲取單元獲取到的冗余份數(shù),通過分布式哈希表 DHT算法將所述數(shù)據(jù)片復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)上。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)節(jié)點(diǎn),其特征在于,還包括路由表更新單元,用于當(dāng)分片文件系統(tǒng)中新增或刪減數(shù)據(jù)節(jié)點(diǎn)時(shí),在路由表中增加該 新增數(shù)據(jù)節(jié)點(diǎn)的路由信息或刪除該刪減數(shù)據(jù)節(jié)點(diǎn)的路由信息,得到新路由表。
18.根據(jù)權(quán)利要求17所述的數(shù)據(jù)節(jié)點(diǎn),其特征在于,還包括確定單元,用于根據(jù)路由表更新單元得到的新路由表確定所述新增數(shù)據(jù)節(jié)點(diǎn)的后一個(gè) 數(shù)據(jù)節(jié)點(diǎn);第一調(diào)整單元,用于通過DHT算法將所述后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的部分非冗余數(shù)據(jù)轉(zhuǎn)移到 新增數(shù)據(jù)節(jié)點(diǎn)中,所述非冗余數(shù)據(jù)為應(yīng)保存在本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片;第二調(diào)整單元,用于通過DHT算法將所述后一個(gè)數(shù)據(jù)節(jié)點(diǎn)中的全部冗余數(shù)據(jù)轉(zhuǎn)移到新 增數(shù)據(jù)節(jié)點(diǎn)中,所述冗余數(shù)據(jù)為其他數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片。
19.根據(jù)權(quán)利要求17所述的數(shù)據(jù)節(jié)點(diǎn),其特征在于,還包括刪除單元,用于通過DHT算法刪除所述刪減數(shù)據(jù)節(jié)點(diǎn)復(fù)制到本數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)片。
20.根據(jù)權(quán)利要求17所述的數(shù)據(jù)節(jié)點(diǎn),其特征在于,還包括冗余更新單元,用于通過冗余份數(shù)和新路由表,通過DHT算法重新將所述數(shù)據(jù)片復(fù)制 到其他數(shù)據(jù)節(jié)點(diǎn)上。
21.一種分片文件系統(tǒng),其特征在于,包括權(quán)利要求12至15中任一種客戶端接口和權(quán) 利要求16至20中任一種數(shù)據(jù)節(jié)點(diǎn)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)處理方法、裝置和系統(tǒng)。本發(fā)明實(shí)施例采用根據(jù)文件名和數(shù)據(jù)片的編號(hào),通過DHT算法計(jì)算出數(shù)據(jù)片的Key值,然后根據(jù)計(jì)算出的Key值來確定數(shù)據(jù)節(jié)點(diǎn),以便進(jìn)行數(shù)據(jù)的讀取或?qū)懭?,避免了現(xiàn)有技術(shù)中由命名節(jié)點(diǎn)來分配數(shù)據(jù)節(jié)點(diǎn),所導(dǎo)致的命名節(jié)點(diǎn)的負(fù)擔(dān)過重的問題,有利于提高系統(tǒng)的穩(wěn)定性;而且,也避免了現(xiàn)有技術(shù)中分片文件系統(tǒng)對命名節(jié)點(diǎn)的依賴性過大所導(dǎo)致的分片文件系統(tǒng)性能提高受到命名節(jié)點(diǎn)性能限制的問題,有利于提升分片文件系統(tǒng)的性能和規(guī)模。
文檔編號(hào)G06F17/30GK102004797SQ201010606318
公開日2011年4月6日 申請日期2010年12月24日 優(yōu)先權(quán)日2010年12月24日
發(fā)明者宋波 申請人:深圳市同洲電子股份有限公司