一種大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理,特別涉及一種大數(shù)據(jù)同步處理方法。
【背景技術(shù)】
[0002]隨著云計(jì)算技術(shù)的發(fā)展,越來越多的用戶選擇遠(yuǎn)程存儲(chǔ)服務(wù)來同步管理個(gè)人文件資源。共享場景下的文件同步傳輸,與個(gè)人文件上傳下載有很大不同。一個(gè)文件可能被共享給多個(gè)用戶的不同終端,文件數(shù)據(jù)的傳輸路徑是由中央服務(wù)器與各個(gè)客戶端連接而成的星型的拓?fù)浣Y(jié)構(gòu)。此時(shí)一次客戶端文件的修改,會(huì)帶來所有參與共享的用戶終端與集群服務(wù)器之間的文件數(shù)據(jù)同步操作。在高并發(fā)的情況下,服務(wù)器端的I/o壓力會(huì)急劇增加。并且遠(yuǎn)程存儲(chǔ)環(huán)境下,傳統(tǒng)的文件傳輸算法結(jié)合具體的傳輸環(huán)境存在很大的局限,存在進(jìn)一步優(yōu)化的必要性。
[0003]因此,針對相關(guān)技術(shù)中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理方法,包括:
[0005]根據(jù)文件的操作粒度,將文件分為文件塊、物理文件和邏輯文件,并分別定義文件塊元數(shù)據(jù)、物理文件元數(shù)據(jù)和邏輯文件元數(shù)據(jù);
[0006]將新舊兩個(gè)版本的文件元數(shù)據(jù)在服務(wù)器端進(jìn)行比較,通過存儲(chǔ)層中文件塊對相同數(shù)據(jù)進(jìn)行冗余去重,從而在客戶端與服務(wù)器端執(zhí)行新舊版本數(shù)據(jù)的差異化傳輸。
[0007]優(yōu)選地,每個(gè)所述邏輯文件關(guān)聯(lián)一個(gè)物理文件,一個(gè)物理文件被分為多個(gè)文件塊存儲(chǔ)到存儲(chǔ)層,文件塊是系統(tǒng)中最小的可操作的文件數(shù)據(jù)單元,多個(gè)邏輯文件可以關(guān)聯(lián)同一個(gè)物理文件,而多個(gè)物理文件可以共享一個(gè)文件塊。
[0008]優(yōu)選地,若客戶端上傳新版本文件到服務(wù)器,則客戶端作為發(fā)送方,集群服務(wù)器作為接收方,當(dāng)集群服務(wù)器和客戶端上都有一份原始文件的相同副本而用戶修改了客戶端原始文件副本形成更新文件時(shí),將客戶端的更新文件上傳到集群服務(wù)器上形成新版本的過程包括:
[0009]步驟①客戶端向集群服務(wù)器發(fā)起更新文件上傳請求;
[0010]步驟②集群服務(wù)器將原始文件按固定大小分成文件塊,計(jì)算每個(gè)文件塊的Hash校驗(yàn)碼和MD5校驗(yàn)碼,并將各個(gè)文件塊的兩個(gè)校驗(yàn)碼集合傳輸?shù)桨l(fā)送端。
[0011]步驟③集群服務(wù)器收到兩個(gè)校驗(yàn)碼的集合后,對更新文件開啟固定大小的滑動(dòng)窗口進(jìn)行校驗(yàn),滑動(dòng)窗口的校驗(yàn)以I字節(jié)為單次距離向前進(jìn)行,每I字節(jié)進(jìn)行一次Hash校驗(yàn)和MD5校驗(yàn),在校驗(yàn)遍歷整個(gè)文件之后,定位出更新文件和原始文件所有相同數(shù)據(jù)塊的位置,然后傳輸?shù)郊悍?wù)器的更新文件的數(shù)據(jù)塊信息;
[0012]④集群服務(wù)器收到客戶端傳輸?shù)膬?nèi)容后,將文件數(shù)據(jù)塊與更新文件的分塊元數(shù)據(jù)進(jìn)行關(guān)聯(lián),形成新版本文件,需要關(guān)聯(lián)的文件塊由兩部分組成,更新文件獨(dú)有的文件塊以及更新文件與原始文件公共的文件塊;將客戶端上傳的更新文件新增文件塊和更新文件的分塊元數(shù)據(jù)進(jìn)行關(guān)聯(lián);然后將集群服務(wù)器端已有的原始文件中定位出共同文件塊,并將其與更新文件元數(shù)據(jù)進(jìn)行關(guān)聯(lián),至此在集群服務(wù)器形成完整的更新文件,上傳文件過程結(jié)束。
[0013]優(yōu)選地,所述步驟③的滑動(dòng)窗口進(jìn)行校驗(yàn)過程進(jìn)一步包括:
[0014]首先計(jì)算滑動(dòng)窗口內(nèi)數(shù)據(jù)的散列值,并在校驗(yàn)碼集合中查找該散列值是否存在;如果不存在該散列值,則滑動(dòng)窗口向前滑動(dòng)I字節(jié);如果存在該散列值,則進(jìn)一步計(jì)算滑動(dòng)窗口內(nèi)數(shù)據(jù)的MD5值,如果MD5值在校驗(yàn)碼集合中存在,則確定目前滑動(dòng)窗口內(nèi)數(shù)據(jù)為重復(fù)數(shù)據(jù),如果不存在MD5值,則滑動(dòng)窗口向前滑動(dòng)I字節(jié);
[0015]其中所述校驗(yàn)碼每次僅計(jì)算兩次窗口之間不同的字節(jié)值,計(jì)算Hash校驗(yàn)碼時(shí)每次從磁盤讀取滑動(dòng)窗口之后的下一個(gè)字節(jié)進(jìn)內(nèi)存,與滑動(dòng)窗口第一個(gè)字節(jié)數(shù)據(jù)替換,更新滑動(dòng)窗口的校驗(yàn)碼信息。
[0016]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0017]本發(fā)明實(shí)現(xiàn)了大數(shù)據(jù)環(huán)境下的數(shù)據(jù)同步,減輕了服務(wù)器端計(jì)算壓力,提高了傳輸效率和資源利用率。
【附圖說明】
[0018]圖1是根據(jù)本發(fā)明實(shí)施例的大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理方法的流程圖。
【具體實(shí)施方式】
[0019]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0020]因此,本發(fā)明提出一種大數(shù)據(jù)環(huán)境下的數(shù)據(jù)同步方法,通過優(yōu)化服務(wù)器端內(nèi)存使用以及分?jǐn)傆?jì)算壓力給各個(gè)客戶端的方式,盡可能減少服務(wù)器端的CPU計(jì)算和I/O的開銷,使傳輸效率和集群服務(wù)器資源的利用率都更加高效。圖1是根據(jù)本發(fā)明實(shí)施例的大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理方法流程圖。
[0021]首先定義文件元數(shù)據(jù),根據(jù)文件被操作的粒度,將文件元數(shù)據(jù)分為文件塊、物理文件元數(shù)據(jù)和邏輯文件元數(shù)據(jù)。每個(gè)邏輯文件關(guān)聯(lián)一個(gè)物理文件。一個(gè)物理文件切分為多個(gè)文件塊存儲(chǔ)到存儲(chǔ)層。文件塊是系統(tǒng)中最小的可操作的文件數(shù)據(jù)單元。其中,允許出現(xiàn)多個(gè)邏輯文件關(guān)聯(lián)同一個(gè)物理文件的情況,允許出現(xiàn)多個(gè)物理文件共享一個(gè)文件塊的情況。
[0022]由于邏輯文件的操作與實(shí)際上傳下載物理文件的操作分開,架構(gòu)更清晰。分塊對于差異化傳輸更加便利。
[0023]多個(gè)客戶端組成大數(shù)據(jù)處理系統(tǒng)的應(yīng)用層;文件服務(wù)、用戶管理、設(shè)備管理等核心業(yè)務(wù)功能形成服務(wù)層;最底層是集群服務(wù)器的存儲(chǔ)層,提供可適配多個(gè)不同存儲(chǔ)設(shè)備的存儲(chǔ)接口,支持本地存儲(chǔ)和第三方遠(yuǎn)程存儲(chǔ)。文件數(shù)據(jù)傳輸主要在相鄰兩層進(jìn)行數(shù)據(jù)交互的時(shí)候發(fā)生。即在上層和中間層的網(wǎng)絡(luò)傳輸以及中間層與底層之間的存儲(chǔ)數(shù)據(jù)傳輸。
[0024]在客戶端上傳新版本文件過程中,定義客戶端為發(fā)送方,集群服務(wù)器為接收方。集群服務(wù)器和客戶端上都有一份文件file, old的相同副本。隨后當(dāng)用戶修改了客戶端file,old副本,形成file, new。因此需要將客戶端上的file, new上傳到集群服務(wù)器上形成新版本。差異化傳輸可以分為四步:
[0025]①客戶端向集群服務(wù)器發(fā)起file, new上傳請求。
[0026]②集群服務(wù)器將file, old按固定大小分成文件塊,計(jì)算每個(gè)文件塊的Hash校驗(yàn)碼和MD5校驗(yàn)碼,并將各個(gè)文件塊的兩個(gè)校驗(yàn)碼集合傳輸?shù)桨l(fā)送端。
[0027]③集群服務(wù)器收到兩個(gè)校驗(yàn)碼的集合后,對file, new文件開啟固定大小的滑動(dòng)窗口進(jìn)行校驗(yàn)。滑動(dòng)窗口的校驗(yàn)以I字節(jié)為單次距離向前進(jìn)行,每I字節(jié)進(jìn)行一次Hash校驗(yàn)和MD5校驗(yàn)。在校驗(yàn)遍歷整個(gè)文件之后,便可以定位出file, new和file, old所有相同數(shù)據(jù)塊的位置,剩余的就是需要傳輸?shù)郊悍?wù)器的file, new的數(shù)據(jù)塊信息。所以,最后客戶端需要傳輸?shù)臄?shù)據(jù)是file, new中與file, old不相同的數(shù)據(jù)塊,以及新版本file, new的分塊元數(shù)據(jù)信息。
[0028]④集群服務(wù)器收到客戶端差異化傳輸?shù)膬?nèi)容后,將文件數(shù)據(jù)塊與file, new的分塊元數(shù)據(jù)進(jìn)行關(guān)聯(lián),形成新版本文件。需要關(guān)聯(lián)的文件塊由兩部分組成,file, new獨(dú)有的文件塊以及file, new與file, old公共的文件塊。因此需要做兩步操作:①將客戶端上傳的file, new新增文件塊和file, new的分塊元數(shù)據(jù)進(jìn)行關(guān)聯(lián);②將集群服務(wù)器端已有的file,old文件中定位出共同文件塊,并將其與file, new文件元數(shù)據(jù)進(jìn)行關(guān)聯(lián)。至此,在集群服務(wù)器形成完整的file, new文件。一次上傳文件過程結(jié)束。
[0