一種數(shù)據(jù)備份方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及分布式存儲(chǔ),特別設(shè)及一種數(shù)據(jù)備份方法。
【背景技術(shù)】
[0002] 數(shù)據(jù)多版本的備份可W顯著提高系統(tǒng)的運(yùn)行效率,保證存儲(chǔ)服務(wù)的可靠性W及整 個(gè)存儲(chǔ)系統(tǒng)的負(fù)載均衡。傳統(tǒng)的數(shù)據(jù)備份方法都是針對(duì)存儲(chǔ)特性為頻繁讀的網(wǎng)絡(luò)應(yīng)用,而 交互性的網(wǎng)絡(luò)應(yīng)用的用戶數(shù)量眾多,位置分布廣泛,且單次上傳數(shù)據(jù)量小,但上傳次數(shù)頻 繁。傳統(tǒng)的云存儲(chǔ)數(shù)據(jù)備份方法在支持該一類網(wǎng)絡(luò)應(yīng)用時(shí),衡量數(shù)據(jù)節(jié)點(diǎn)的標(biāo)準(zhǔn)單一,而且 處理海量數(shù)據(jù)傳輸請(qǐng)求的同時(shí)會(huì)頻繁進(jìn)行備份版本的調(diào)整,該會(huì)導(dǎo)致用戶使用體驗(yàn)的降低 及服務(wù)器端有限計(jì)算資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0003] 為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種數(shù)據(jù)備份方法,包括:
[0004] 用戶連接到分布式存儲(chǔ)系統(tǒng)的主節(jié)點(diǎn),當(dāng)用戶上傳數(shù)據(jù)資源時(shí),發(fā)送上傳數(shù)據(jù)資 源的請(qǐng)求信息,主節(jié)點(diǎn)返回距離用戶位置最近且可用的數(shù)據(jù)節(jié)點(diǎn)信息,并將最新的屬性信 息發(fā)送到一致性節(jié)點(diǎn),用戶根據(jù)主節(jié)點(diǎn)返回的信息上傳資源到數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)向用戶 返回處理的結(jié)果,并將屬性信息更新到分布式存儲(chǔ)系統(tǒng)的多個(gè)一致性節(jié)點(diǎn),一致性節(jié)點(diǎn)根 據(jù)版本策略備份數(shù)據(jù)到適當(dāng)?shù)臄?shù)據(jù)節(jié)點(diǎn),并更新備份版本標(biāo)識(shí)信息到主節(jié)點(diǎn);當(dāng)用戶對(duì)已 有數(shù)據(jù)資源進(jìn)行讀操作時(shí),用戶對(duì)主節(jié)點(diǎn)發(fā)送讀數(shù)據(jù)請(qǐng)求,主節(jié)點(diǎn)返回相匹配的屬性信息, 用戶根據(jù)主節(jié)點(diǎn)返回的信息訪問數(shù)據(jù)節(jié)點(diǎn)并發(fā)送讀數(shù)據(jù)請(qǐng)求,數(shù)據(jù)節(jié)點(diǎn)傳輸用戶請(qǐng)求的數(shù) 據(jù);當(dāng)用戶對(duì)已有數(shù)據(jù)資源進(jìn)行寫操作時(shí),用戶向主節(jié)點(diǎn)發(fā)送寫數(shù)據(jù)請(qǐng)求,主節(jié)點(diǎn)返回匹配 的屬性信息,用戶根據(jù)主節(jié)點(diǎn)返回的信息訪問數(shù)據(jù)節(jié)點(diǎn)并發(fā)送寫數(shù)據(jù)請(qǐng)求,數(shù)據(jù)節(jié)點(diǎn)傳輸 用戶請(qǐng)求的數(shù)據(jù)并更新屬性信息到一致性節(jié)點(diǎn),一致性節(jié)點(diǎn)協(xié)調(diào)各數(shù)據(jù)節(jié)點(diǎn)保持備份版本 數(shù)據(jù)一致性,一致性節(jié)點(diǎn)將更新的屬性信息傳輸?shù)街鞴?jié)點(diǎn),主節(jié)點(diǎn)返回更新結(jié)果,每次用戶 寫資源后,由一致性節(jié)點(diǎn)維護(hù)所有備份版本資源的數(shù)據(jù)一致性,主節(jié)點(diǎn)只保存已確定更新 一致性后的屬性信息。
[0005] 優(yōu)選地,所述一致性節(jié)點(diǎn)還用于保持系統(tǒng)多個(gè)數(shù)據(jù)備份版本的一致性,并且當(dāng)需 要?jiǎng)?chuàng)建備份版本時(shí),包括W下步驟:
[0006] 步驟1,用戶向主節(jié)點(diǎn)發(fā)送傳輸數(shù)據(jù)的請(qǐng)求,主節(jié)點(diǎn)將屬性信息與讀取到的用戶位 置信息發(fā)送到一致性節(jié)點(diǎn);
[0007] 步驟2, 一致性節(jié)點(diǎn)計(jì)算各個(gè)數(shù)據(jù)節(jié)點(diǎn)相對(duì)于用戶的節(jié)點(diǎn)價(jià)值度,所述數(shù)據(jù)節(jié)點(diǎn)的 價(jià)值度R的計(jì)算方式如下:
[000引R = 1/化孤X曰-BWX 0 )
[0009] 其中,U孤代表用戶與數(shù)據(jù)節(jié)點(diǎn)之間的位置距離,a代表用戶與數(shù)據(jù)節(jié)點(diǎn)之間距 離的加權(quán)比,BW代表數(shù)據(jù)節(jié)點(diǎn)接入網(wǎng)絡(luò)的帶寬,0代表數(shù)據(jù)節(jié)點(diǎn)網(wǎng)絡(luò)帶寬的加權(quán)比,并且 其中,U孤的計(jì)算方式如下;
[0010]
[0011] 其中D.X代表數(shù)據(jù)節(jié)點(diǎn)位置橫坐標(biāo),U.X代表用戶位置橫坐標(biāo),D.y代表數(shù)據(jù)節(jié)點(diǎn) 位置縱坐標(biāo),U.y代表用戶位置縱坐標(biāo);
[0012] 步驟3,創(chuàng)建備份版本,一致性節(jié)點(diǎn)維護(hù)多個(gè)上傳相同類型數(shù)據(jù)資源用戶位置的數(shù) 據(jù)集合S;怯1,S2,S3…S。},W及所有數(shù)據(jù)節(jié)點(diǎn)信息的數(shù)據(jù)集合D;化,〇2, …Dm},當(dāng)用戶上 傳資源時(shí),若該資源類型的用戶位置數(shù)據(jù)集合為空,新加入數(shù)據(jù)元素St,則依次掃描數(shù)據(jù)節(jié) 點(diǎn)位置的數(shù)據(jù)集合,選取所述價(jià)值度最高的數(shù)據(jù)節(jié)點(diǎn)作為備份版本設(shè)置待選節(jié)點(diǎn);若該數(shù) 據(jù)節(jié)點(diǎn)存儲(chǔ)有該版本的原始數(shù)據(jù),則選擇價(jià)值度最低的數(shù)據(jù)節(jié)點(diǎn)作為備份版本設(shè)置待選節(jié) 點(diǎn);若價(jià)值度最低的數(shù)據(jù)節(jié)點(diǎn)與價(jià)值度最高的數(shù)據(jù)節(jié)點(diǎn)為同一節(jié)點(diǎn),則隨機(jī)選擇一個(gè)數(shù)據(jù) 節(jié)點(diǎn)作為備份版本設(shè)置待選節(jié)點(diǎn);當(dāng)該資源類型的用戶位置數(shù)據(jù)集合非空時(shí),且只有一個(gè) 數(shù)據(jù)節(jié)點(diǎn)D。作為該集合的備份版本設(shè)置節(jié)點(diǎn)而D。上不存在數(shù)據(jù)元素St的原始數(shù)據(jù)時(shí),貝U 選擇D。為新加入數(shù)據(jù)元素St的備份版本設(shè)置待選節(jié)點(diǎn);若該數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)有St的原始數(shù) 據(jù),則從D不包括D。的集合中選擇價(jià)值度最高的數(shù)據(jù)節(jié)點(diǎn)作為備份版本設(shè)置待選節(jié)點(diǎn);當(dāng) 該資源類型的用戶位置數(shù)據(jù)集合非空時(shí),且有多個(gè)數(shù)據(jù)節(jié)點(diǎn)作為該集合的備份版本設(shè)置節(jié) 點(diǎn),依次掃描化化,町…}并做如下處理,選擇對(duì)于新加入數(shù)據(jù)元素St的價(jià)值度最高的數(shù) 據(jù)節(jié)點(diǎn)Dti作為備份版本設(shè)置待選節(jié)點(diǎn),選擇對(duì)于新加入數(shù)據(jù)元素St的價(jià)值度最低的數(shù)據(jù) 節(jié)點(diǎn)町2作為備份版本設(shè)置待選節(jié)點(diǎn);若DU與Dt2為相同節(jié)點(diǎn),且不存儲(chǔ)有St的原始數(shù)據(jù), 則只存儲(chǔ)一份備份版本;若Dti與Dt2為相同節(jié)點(diǎn),且存儲(chǔ)有St的原始數(shù)據(jù),則在不包含DU 與町2的集合中隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為備份版本設(shè)置待選節(jié)點(diǎn);若DU與Dt2為不同節(jié)點(diǎn),DU 存儲(chǔ)有St的原始數(shù)據(jù),則只選Dt2為備份版本設(shè)置待選節(jié)點(diǎn);若DU與Dt2為不同節(jié)點(diǎn),D存 儲(chǔ)有St的原始數(shù)據(jù),則只選DU為備份版本設(shè)置待選節(jié)點(diǎn);
[0013] 步驟4,檢查備份版本設(shè)置待選節(jié)點(diǎn)的存儲(chǔ)負(fù)載率是否未滿,若未滿,則選擇該待 選節(jié)點(diǎn)為備份版本設(shè)置節(jié)點(diǎn),在該節(jié)點(diǎn)設(shè)置備份版本;否則對(duì)St屏蔽該待選節(jié)點(diǎn),重新返回 步驟3,繼續(xù)尋找滿足條件的數(shù)據(jù)節(jié)點(diǎn)作為備份版本設(shè)置節(jié)點(diǎn);在返回兩個(gè)備份版本設(shè)置 待選節(jié)點(diǎn)時(shí),若存在至少一個(gè)待選節(jié)點(diǎn)的存儲(chǔ)負(fù)載率未滿則結(jié)束捜索,在符合條件的數(shù)據(jù) 節(jié)點(diǎn)上設(shè)置備份版本;
[0014] 步驟5,更新備份版本屬性信息,數(shù)據(jù)節(jié)點(diǎn)返回操作結(jié)果到一致性節(jié)點(diǎn),一致性節(jié) 點(diǎn)將集合的數(shù)據(jù)信息更新,返回最新的屬性信息到主節(jié)點(diǎn)。
[0015] 本發(fā)明相比現(xiàn)有技術(shù),具有W下優(yōu)點(diǎn):
[0016] 本發(fā)明提出了一種備份方法,不僅提高用戶的使用體驗(yàn),同時(shí)保證存儲(chǔ)系統(tǒng)的健 壯性和保持各數(shù)據(jù)節(jié)點(diǎn)負(fù)載的均衡。
【附圖說明】
[0017] 圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)備份方法的流程圖。
【具體實(shí)施方式】
[0018] 下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描 述。結(jié)合該樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán) 利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)W便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供該些細(xì)節(jié),并且無該些具體細(xì)節(jié)中 的一些或者所有細(xì)節(jié)也可W根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0019] 本發(fā)明的一方面提供了一種數(shù)據(jù)備份方法。圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)備份 方法流程圖。
[0020] 該方法基于=層架構(gòu)的分布式存儲(chǔ)系統(tǒng)。該系統(tǒng)模型由一個(gè)邏輯主節(jié)點(diǎn),多個(gè)一 致性節(jié)點(diǎn)及大量的數(shù)據(jù)節(jié)點(diǎn)組成。主節(jié)點(diǎn)是屬性信息服務(wù)器,用戶通過訪問主節(jié)點(diǎn)來獲得 數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)信息。為了防止主節(jié)點(diǎn)單點(diǎn)失效的情況,系統(tǒng)內(nèi)可W有多個(gè)備用主節(jié)點(diǎn)進(jìn) 行屬性信息的備份。主節(jié)點(diǎn)只存儲(chǔ)數(shù)據(jù)備份版本保持最后更新一致性情況下的屬性信息, 為用戶訪問數(shù)據(jù)一致性提供高可靠的保證。一致性節(jié)點(diǎn)負(fù)責(zé)保持系統(tǒng)內(nèi)數(shù)據(jù)備份版本的一 致性,它將已完成同步的備份版本的屬性信息提交給主節(jié)點(diǎn),使用戶只可W訪問到最后更 新的數(shù)據(jù)。數(shù)據(jù)節(jié)點(diǎn)是數(shù)據(jù)存儲(chǔ)服務(wù)器,存儲(chǔ)用戶的數(shù)據(jù)資源,理論上可W分布在世界上任 何適宜的地點(diǎn)??紤]到讀寫型網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)資源的特點(diǎn)多為小文件,用戶經(jīng)常使用的數(shù)據(jù) 一般不大于30M,本系統(tǒng)W32M的定長(zhǎng)數(shù)據(jù)塊來劃分用戶的數(shù)據(jù)資源。
[0021] 當(dāng)用戶上傳數(shù)據(jù)資源時(shí),用戶連接到主節(jié)點(diǎn),發(fā)送上傳數(shù)據(jù)資源的請(qǐng)求信息,主節(jié) 點(diǎn)返回距離用戶位置最近且可用的數(shù)據(jù)節(jié)點(diǎn)信息,并將最新的屬性信息發(fā)送到一致性節(jié) 點(diǎn),用戶根據(jù)主節(jié)點(diǎn)返回的信息上傳資源到數(shù)據(jù)