一種基于版本的數(shù)據(jù)存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及分布式存儲(chǔ),特別設(shè)及一種基于版本的數(shù)據(jù)存儲(chǔ)方法。
【背景技術(shù)】
[0002] 數(shù)據(jù)多版本的備份可W顯著提高系統(tǒng)的運(yùn)行效率,保證存儲(chǔ)服務(wù)的可靠性W及整 個(gè)存儲(chǔ)系統(tǒng)的負(fù)載均衡。傳統(tǒng)的基于版本的數(shù)據(jù)存儲(chǔ)方法都是針對(duì)存儲(chǔ)特性為頻繁讀的網(wǎng) 絡(luò)應(yīng)用,而交互性的網(wǎng)絡(luò)應(yīng)用的用戶數(shù)量眾多,位置分布廣泛,且單次上傳數(shù)據(jù)量小,但上 傳次數(shù)頻繁。傳統(tǒng)的云存儲(chǔ)基于版本的數(shù)據(jù)存儲(chǔ)方法在支持該一類網(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ù)存儲(chǔ)方 法,包括:
[0004] W定長數(shù)據(jù)塊劃分用戶的數(shù)據(jù)資源,并存儲(chǔ)于分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)節(jié)點(diǎn)中;
[0005] 用戶通過訪問分布式存儲(chǔ)系統(tǒng)的主節(jié)點(diǎn)獲得數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)信息,所述主節(jié)點(diǎn)存 儲(chǔ)數(shù)據(jù)備份版本保持最后更新一致性情況下的屬性信息,并設(shè)置多個(gè)備用主節(jié)點(diǎn)進(jìn)行屬性 信息的備份;
[0006] 利用與所述主節(jié)點(diǎn)分別相通信的一致性節(jié)點(diǎn)來保持系統(tǒng)內(nèi)數(shù)據(jù)備份版本的一致 性,并將已完成同步的備份版本的屬性信息提交給主節(jié)點(diǎn),使用戶訪問到最后更新的數(shù)據(jù)。
[0007] 優(yōu)選地,當(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)只保存已確定更新一致性后的屬性信息;當(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ù)節(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),并更新 備份版本信息到主節(jié)點(diǎn)。
[000引優(yōu)選地,當(dāng)需要調(diào)整已備份的版本的位置時(shí),該方法包括W下步驟::
[0009] 步驟1,在偵測(cè)到數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)負(fù)載率達(dá)到預(yù)設(shè)最高闊值的情況下,一致性節(jié)點(diǎn)開 始動(dòng)態(tài)調(diào)整備份版本的位置;
[0010] 步驟2,獲取存儲(chǔ)系統(tǒng)內(nèi)所有數(shù)據(jù)節(jié)點(diǎn)的集合A; {Ai,A2,As,…A。},計(jì)算需要調(diào)整 版本的數(shù)據(jù)節(jié)點(diǎn)要減少的存儲(chǔ)量Tea;Tca=化a? (y- ?),
[0011] 其中y為版本調(diào)整前節(jié)點(diǎn)的存儲(chǔ)負(fù)載率,《為版本調(diào)整后該節(jié)點(diǎn)的存儲(chǔ)負(fù)載率, Dca為該數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)總量;若存在集合At;{Atl,At2,At3,…AJ,At為A的子集,使得下 式成立:
[001 引 Ati_ca+Tca ? nAti_ca ? y
[001 引 At2ca+Tca ? ri A t2ca ? y
[0014] At3_ca+Tca ? n 3《A t3_ca ? y
[0015] ? ? ?
[0016] Atn_ca+Tca ? n A tn_ca ? y
[0017] 則返回含有最多元素的集合At,并對(duì)備份數(shù)據(jù)進(jìn)行調(diào)整,否則結(jié)束備份版本調(diào)整; [001引其中AiCa為節(jié)點(diǎn)Ai的存儲(chǔ)量,n1,ru,ns…,n。為小于或等于1的系數(shù),且 口1+口2+口3...+口"= 1 ;
[0019] 步驟3,將存儲(chǔ)負(fù)載率到達(dá)預(yù)設(shè)最高闊值的數(shù)據(jù)節(jié)點(diǎn)上所有備份版本資源依據(jù)完 整度建立由小到大的鏈表,所述完整度的加權(quán)計(jì)算方式如下:
[0020] I = Count-R
[0021] I代表備份版本的完整度,R為數(shù)據(jù)節(jié)點(diǎn)的完整度,Count為相應(yīng)備份版本被訪問 的次數(shù);
[0022] 步驟4,基于步驟3建立的鏈表,對(duì)鏈表首部的資源依據(jù)如下策略進(jìn)行調(diào)整,直到 待調(diào)整數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)負(fù)載率處于可容許范圍內(nèi):
[002引 W步驟2確定的集合MAti,At2,At3,…人,。}作為節(jié)點(diǎn)集合,W集合中數(shù)據(jù)節(jié)點(diǎn)存 儲(chǔ)負(fù)載率達(dá)到預(yù)設(shè)最高闊值作為終結(jié)條件,首先在與待調(diào)整數(shù)據(jù)具有同類型且對(duì)于該文件 用戶價(jià)值度最高的節(jié)點(diǎn)創(chuàng)建新的備份版本,同時(shí)刪除原有版本;若沒有與待調(diào)整數(shù)據(jù)同類 型的數(shù)據(jù)節(jié)點(diǎn),則選擇任意有空余空間的節(jié)點(diǎn),當(dāng)調(diào)整備份版本節(jié)點(diǎn)的負(fù)載率處于可容許 范圍時(shí),停止版本調(diào)整;
[0024]步驟5,數(shù)據(jù)節(jié)點(diǎn)返回更新操作的信息到一致性節(jié)點(diǎn),一致性節(jié)點(diǎn)傳輸已保持一致 性數(shù)據(jù)節(jié)點(diǎn)信息到主節(jié)點(diǎn),更新主節(jié)點(diǎn)的屬性信息。
[002引本發(fā)明相比現(xiàn)有技術(shù),具有W下優(yōu)點(diǎn):
[0026] 本發(fā)明提出了一種備份方法,不僅提高用戶的使用體驗(yàn),同時(shí)保證存儲(chǔ)系統(tǒng)的健 壯性和保持各數(shù)據(jù)節(jié)點(diǎn)負(fù)載的均衡。
【附圖說明】
[0027] 圖1是根據(jù)本發(fā)明實(shí)施例的基于版本的數(shù)據(jù)存儲(chǔ)方法的流程圖。
【具體實(shí)施方式】
[002引下文與圖示本發(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ā)明。
[0029] 本發(fā)明的一方面提供了一種基于版本的數(shù)據(jù)存儲(chǔ)方法。圖1是根據(jù)本發(fā)明實(shí)施例 的基于版本的數(shù)據(jù)存儲(chǔ)方法流程圖。
[0030] 該方法基于=層架構(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的定長數(shù)