一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括存儲(chǔ)客戶端、存儲(chǔ)服務(wù)端和存儲(chǔ)代理,存儲(chǔ)代理接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,并接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存。本發(fā)明的數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法通過存儲(chǔ)代理,實(shí)現(xiàn)在網(wǎng)絡(luò)質(zhì)量不太好的情況下,存儲(chǔ)代理能通過反糾刪算法對(duì)數(shù)據(jù)進(jìn)行恢復(fù),存儲(chǔ)客戶端對(duì)數(shù)據(jù)采用離散發(fā)送能提高數(shù)據(jù)通過反糾刪算法恢復(fù)的成功率,提高了數(shù)據(jù)傳輸?shù)男省?br>【專利說明】
一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于數(shù)據(jù)容災(zāi)存儲(chǔ)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法。
【背景技術(shù)】
[0002]在很多對(duì)數(shù)據(jù)安全可靠性要求很高的行業(yè),如金融行業(yè)、保險(xiǎn)行業(yè)、電信行業(yè)等,為了保證數(shù)據(jù)的高可靠性,通常采用數(shù)據(jù)冗余備份的方法進(jìn)行容災(zāi)。傳統(tǒng)的數(shù)據(jù)容災(zāi)方式是對(duì)原始數(shù)據(jù)進(jìn)行完全復(fù)制備份,將備份數(shù)據(jù)存儲(chǔ)在異地的存儲(chǔ)服務(wù)端上,這種容災(zāi)方式帶來的成本十分高昂。糾刪碼采用將數(shù)據(jù)分割為片段并通過糾刪算法生成冗余數(shù)據(jù)的方式來實(shí)現(xiàn)數(shù)據(jù)的冗余備份和分布式存儲(chǔ),這種存儲(chǔ)糾刪方式在實(shí)現(xiàn)數(shù)據(jù)容災(zāi)的同時(shí)也降低了成本。
[0003]現(xiàn)有的存儲(chǔ)糾刪技術(shù)通常采用C-S模式,即存儲(chǔ)客戶端加存儲(chǔ)服務(wù)端的模式,具體分為二種方式:
[0004]1、存儲(chǔ)客戶端和所有存儲(chǔ)服務(wù)端進(jìn)行直接連接,存儲(chǔ)客戶端對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算并將完成糾刪計(jì)算后的數(shù)據(jù)平均發(fā)送給每個(gè)存儲(chǔ)服務(wù)端,存儲(chǔ)服務(wù)端完成數(shù)據(jù)的存儲(chǔ)。
[0005]這種方式的主要問題是存儲(chǔ)客戶端需要和每臺(tái)存儲(chǔ)服務(wù)端都要進(jìn)行連接,增加了網(wǎng)絡(luò)對(duì)數(shù)據(jù)傳輸?shù)挠绊?,如果網(wǎng)絡(luò)質(zhì)量出現(xiàn)問題,存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端之間需要進(jìn)行大量數(shù)據(jù)重傳,嚴(yán)重時(shí)還會(huì)造成網(wǎng)絡(luò)擁塞。
[0006]2、存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端的主節(jié)點(diǎn)直接連接,存儲(chǔ)服務(wù)端的主節(jié)點(diǎn)和其他存儲(chǔ)服務(wù)端相連,存儲(chǔ)客戶端將原始數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端的主節(jié)點(diǎn),由存儲(chǔ)服務(wù)端的主節(jié)點(diǎn)完成數(shù)據(jù)的糾刪計(jì)算后再分發(fā)給其他存儲(chǔ)服務(wù)端進(jìn)行存儲(chǔ)。
[0007]這種方式的主要問題是存儲(chǔ)客戶端發(fā)出的數(shù)據(jù)沒有冗余度,在網(wǎng)絡(luò)質(zhì)量不好的情況下需要有額外的機(jī)制來保證數(shù)據(jù)的完整性,另外在這種方式中存儲(chǔ)服務(wù)端的主節(jié)點(diǎn)的開銷太大,容易成為整個(gè)系統(tǒng)的瓶頸。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的是提供一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法,以解決現(xiàn)有的存儲(chǔ)糾刪技術(shù)中數(shù)據(jù)傳輸受網(wǎng)絡(luò)質(zhì)量影響大,數(shù)據(jù)冗余度不夠等問題。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案如下:
[0010]一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)還包括存儲(chǔ)代理,其中:
[0011 ]所述存儲(chǔ)代理,用于接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,并接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存;
[0012]所述服務(wù)參數(shù)包括糾刪組模式和存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量,所述糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系。
[0013]其中,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,執(zhí)行如下操作:
[0014]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0015]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0016]本發(fā)明所述糾刪組模式表示為N= M+K,其中N為存儲(chǔ)服務(wù)端中子設(shè)備的總數(shù),M為存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備數(shù)量,K為存儲(chǔ)服務(wù)端中用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備數(shù)量,所述存儲(chǔ)客戶端在根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送數(shù)據(jù),執(zhí)行如下操作:
[0017]根據(jù)服務(wù)參數(shù)獲取原始數(shù)據(jù);
[0018]然后將獲取的原始數(shù)據(jù)劃分成至少一份;
[0019]對(duì)于劃分后的每份原始數(shù)據(jù),先將該份原始數(shù)據(jù)再平均分為M塊原始數(shù)據(jù),通過糾刪算法從M塊原始數(shù)據(jù)中計(jì)算出K塊冗余數(shù)據(jù),M塊原始數(shù)據(jù)和K塊冗余數(shù)據(jù)組成一個(gè)糾刪組,糾刪組中的每塊數(shù)據(jù)稱為一個(gè)糾刪塊;
[0020]將糾刪計(jì)算后得帶的所有糾刪組組成一個(gè)糾刪群,發(fā)送給存儲(chǔ)代理。
[0021]進(jìn)一步地,所述存儲(chǔ)客戶端還用于對(duì)糾刪計(jì)算后得到的糾刪群中的糾刪塊按照設(shè)定的離散規(guī)則進(jìn)行編號(hào),并在發(fā)送時(shí)按照糾刪塊編號(hào)順序發(fā)送給存儲(chǔ)代理。
[0022]進(jìn)一步地,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,執(zhí)行如下操作:
[0023]根據(jù)糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新排列糾刪塊,恢復(fù)成原來的糾刪群;
[0024]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0025]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0026]本發(fā)明還提出了一種存儲(chǔ)糾刪方法,所述存儲(chǔ)糾刪方法應(yīng)用于數(shù)據(jù)存儲(chǔ)系統(tǒng)中,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括存儲(chǔ)代理,所述存儲(chǔ)糾刪方法包括:
[0027]所述存儲(chǔ)代理接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,所述服務(wù)參數(shù)包括糾刪組模式和存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量,所述糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系;
[0028]所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存。
[0029]其中,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括:
[0030]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0031]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0032]進(jìn)一步地,所述存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù)為存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算生成的糾刪組數(shù)據(jù)組成的糾刪群,每個(gè)糾刪組對(duì)應(yīng)一次糾刪計(jì)算,每個(gè)糾刪組包括一次糾刪計(jì)算生成的所有糾刪塊,糾刪群中每個(gè)糾刪塊按照設(shè)定的離散規(guī)則對(duì)應(yīng)有自己的糾刪塊編號(hào)。
[0033]進(jìn)一步地,所述糾刪群中的糾刪塊按照糾刪塊編號(hào)順序發(fā)送。
[0034]進(jìn)一步地,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括:
[0035]根據(jù)糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新排列糾刪塊,恢復(fù)成原來的糾刪群;
[0036]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0037]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0038]本發(fā)明提出了一種數(shù)據(jù)存儲(chǔ)系統(tǒng)及其存儲(chǔ)糾刪方法,存儲(chǔ)客戶端對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后離散發(fā)送給存儲(chǔ)代理,在網(wǎng)絡(luò)質(zhì)量不太好的情況下,存儲(chǔ)代理能通過反糾刪算法對(duì)數(shù)據(jù)進(jìn)行恢復(fù),離散發(fā)送能提高在數(shù)據(jù)連續(xù)丟包情況下的反糾刪算法恢復(fù)數(shù)據(jù)的成功率,本發(fā)明采用的存儲(chǔ)糾刪方法和現(xiàn)有技術(shù)相比能最大限度減小網(wǎng)絡(luò)質(zhì)量對(duì)數(shù)據(jù)傳輸?shù)挠绊?,極大地減少了數(shù)據(jù)重傳的發(fā)生,提高了數(shù)據(jù)傳輸?shù)男?。本發(fā)明采用的存儲(chǔ)糾刪方法在存儲(chǔ)代理需要通過反糾刪算法對(duì)數(shù)據(jù)進(jìn)行恢復(fù)的情況下,或在不能通過反糾刪對(duì)數(shù)據(jù)進(jìn)行恢復(fù)而通知糾刪客戶端進(jìn)行數(shù)據(jù)重傳的情況下,存儲(chǔ)代理會(huì)產(chǎn)生告警,通知用戶及時(shí)進(jìn)行網(wǎng)絡(luò)故障排查,防止進(jìn)一步地丟包。
【附圖說明】
[0039]圖1為本發(fā)明數(shù)據(jù)存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖;
[0040]圖2為本發(fā)明實(shí)施例糾刪群內(nèi)的糾刪塊離散編碼示意圖;
[0041 ]圖3為本發(fā)明存儲(chǔ)糾刪方法流程圖。
【具體實(shí)施方式】
[0042]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明技術(shù)方案做進(jìn)一步詳細(xì)說明,以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。
[0043]如圖1所示,本實(shí)施例一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括存儲(chǔ)客戶端、存儲(chǔ)代理和存儲(chǔ)服務(wù)端。在存儲(chǔ)客戶端、存儲(chǔ)代理和存儲(chǔ)服務(wù)端構(gòu)架中,存儲(chǔ)客戶端與存儲(chǔ)代理、存儲(chǔ)代理與存儲(chǔ)服務(wù)端之間的數(shù)據(jù)通信受協(xié)商參數(shù)的約束,在完成參數(shù)協(xié)商之后才能進(jìn)行數(shù)據(jù)傳輸和存儲(chǔ)。
[0044]本實(shí)施例存儲(chǔ)代理用于接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端。服務(wù)參數(shù)的傳遞通過協(xié)商實(shí)現(xiàn),服務(wù)參數(shù)協(xié)商分為二部分,包括存儲(chǔ)代理和存儲(chǔ)服務(wù)端之間的服務(wù)參數(shù)協(xié)商以及存儲(chǔ)代理和存儲(chǔ)客戶端之間的服務(wù)參數(shù)協(xié)商。
[0045]服務(wù)參數(shù)包括糾刪組模式協(xié)商和存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量協(xié)商。糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系,假設(shè)存儲(chǔ)服務(wù)端中子設(shè)備的總數(shù)量為N,存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備數(shù)量為M,用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備數(shù)量為K,則糾刪模式為N=M+K,N、M、K為正整數(shù)。存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量由存儲(chǔ)服務(wù)端中每臺(tái)子設(shè)備的性能決定,存儲(chǔ)服務(wù)端中的每臺(tái)子設(shè)備將自己每次能夠?qū)懭氲淖畲髷?shù)據(jù)量上報(bào)給存儲(chǔ)代理,存儲(chǔ)代理根據(jù)每臺(tái)子設(shè)備上報(bào)的每次最大寫入數(shù)據(jù)量計(jì)算出總的存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量。本實(shí)施例中假設(shè)存儲(chǔ)服務(wù)端總共有6臺(tái)子設(shè)備,其中4臺(tái)用于存儲(chǔ)原始數(shù)據(jù),2臺(tái)用于存儲(chǔ)冗余數(shù)據(jù)。假設(shè)每臺(tái)子設(shè)備每次能夠?qū)懭氲淖畲髷?shù)據(jù)量為1M,則糾刪模式為4+2,存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量為6M。
[0046]存儲(chǔ)服務(wù)端的子設(shè)備可以是各種存儲(chǔ)設(shè)備,例如磁盤,硬盤等。
[0047]存儲(chǔ)代理和存儲(chǔ)服務(wù)端完成參數(shù)協(xié)商后,存儲(chǔ)代理將服務(wù)參數(shù)通知存儲(chǔ)客戶端,存儲(chǔ)客戶端在后續(xù)的數(shù)據(jù)處理中會(huì)利用糾刪模式和存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量來取出原始數(shù)據(jù),利用糾刪模式來對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算。
[0048]需要說明的是,如果存儲(chǔ)服務(wù)端中子設(shè)備的數(shù)量發(fā)生了改變或者某臺(tái)子設(shè)備每次能夠?qū)懭氲淖畲髷?shù)據(jù)量發(fā)生了改變,則存儲(chǔ)代理和存儲(chǔ)服務(wù)端會(huì)重新進(jìn)行參數(shù)協(xié)商,并將協(xié)商好的服務(wù)參數(shù)重新通知存儲(chǔ)客戶端。
[0049]存儲(chǔ)客戶端根據(jù)協(xié)商好的服務(wù)參數(shù)從數(shù)據(jù)庫中取出原始數(shù)據(jù),對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算并將完成糾刪計(jì)算后的數(shù)據(jù)發(fā)送給存儲(chǔ)代理。
[0050]具體地,存儲(chǔ)客戶端根據(jù)存儲(chǔ)代理發(fā)送過來的糾刪模式和存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量獲取原始數(shù)據(jù),獲取的原始數(shù)據(jù)的大小為存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量除以N再乘以M。本實(shí)施例中糾刪模式為4+2,每次能夠?qū)懭氲淖畲髷?shù)據(jù)量為6M,且需要用到糾刪碼的機(jī)制來存儲(chǔ)數(shù)據(jù),因此存儲(chǔ)客戶端通過計(jì)算,得出獲取的原始數(shù)據(jù)為4M。
[0051]存儲(chǔ)客戶端對(duì)獲取的原始數(shù)據(jù)通過糾刪算法進(jìn)行糾刪計(jì)算,生成冗余數(shù)據(jù)。在糾刪計(jì)算時(shí),可以對(duì)獲取的原始數(shù)據(jù)通過一次糾刪計(jì)算得到冗余數(shù)據(jù),也可以將取出的原始數(shù)據(jù)劃分為多份分別進(jìn)行糾刪計(jì)算,一般來說是根據(jù)存儲(chǔ)客戶端的糾刪計(jì)算能力來劃分。本實(shí)施例假設(shè)存儲(chǔ)客戶端糾刪算法要求的數(shù)據(jù)大小為1M,則將4M原始數(shù)據(jù)劃分為4份,然后存儲(chǔ)服務(wù)端對(duì)劃分后的每份原始數(shù)據(jù)進(jìn)行糾刪計(jì)算。
[0052]對(duì)于劃分后的每份原始數(shù)據(jù)再平均分為M塊原始數(shù)據(jù),存儲(chǔ)客戶端根據(jù)協(xié)商好的糾刪模型N=M+K,通過糾刪算法從M塊原始數(shù)據(jù)中計(jì)算出K塊冗余數(shù)據(jù)。
[0053]優(yōu)選地,本實(shí)施例采用RS算法進(jìn)行糾刪計(jì)算,由于本實(shí)施例中糾刪模式為4+2,因此首先將劃分后的IM原始數(shù)據(jù)平均分為4塊,將這4塊原始數(shù)據(jù)通過RS算法計(jì)算出2塊冗余數(shù)據(jù),每塊冗余數(shù)據(jù)的大小和每塊原始數(shù)據(jù)的大小相同,這4塊原始數(shù)據(jù)和通過糾刪算法算出的2塊冗余數(shù)據(jù)組成一個(gè)糾刪組,其中的每塊數(shù)據(jù)為一個(gè)糾刪塊。本次取出的4M原始數(shù)據(jù)需要進(jìn)行4次糾刪計(jì)算,總共生成4個(gè)糾刪組,這4個(gè)糾刪組稱為一個(gè)糾刪群,糾刪群的數(shù)據(jù)為6M,滿足存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量要求。
[0054]由于網(wǎng)絡(luò)丟包大多具有延續(xù)性,即網(wǎng)絡(luò)丟包會(huì)連續(xù)地丟多個(gè)相鄰的包。如果存儲(chǔ)客戶端將一組糾刪組內(nèi)的糾刪塊連續(xù)地發(fā)給存儲(chǔ)代理,則可能由于連續(xù)在一個(gè)糾刪組里丟太多的糾刪塊而超出糾刪范圍,導(dǎo)致無法通過反糾刪算法進(jìn)行數(shù)據(jù)恢復(fù)。
[0055]為此,優(yōu)選地本實(shí)施例不連續(xù)發(fā)送一個(gè)糾刪組內(nèi)的糾刪塊,而是需要將一個(gè)糾刪組內(nèi)的糾刪塊進(jìn)行離散發(fā)送,從而達(dá)到增強(qiáng)抗丟包的目的。存儲(chǔ)客戶端對(duì)糾刪群中每個(gè)糾刪塊按照設(shè)定的離散規(guī)則進(jìn)行編號(hào),然后將整個(gè)糾刪群里的糾刪塊按照糾刪塊編號(hào)順序發(fā)送給存儲(chǔ)代理。對(duì)糾刪群內(nèi)的每個(gè)糾刪組以及糾刪組內(nèi)的每個(gè)糾刪塊按照設(shè)定的離散規(guī)則進(jìn)行編號(hào),如圖2所示,糾刪組1內(nèi)的6個(gè)糾刪塊編號(hào)依次為1、5、9、13、17、21,糾刪組2內(nèi)的6個(gè)糾刪塊編號(hào)依次為2、6、10、14、18、22,糾刪組3內(nèi)的6個(gè)糾刪塊編號(hào)依次為3、7、11、15、19、23,糾刪組4內(nèi)的6個(gè)糾刪塊編號(hào)依次為4、8、12、16、20、24,然后將整個(gè)糾刪群里的糾刪塊按糾刪塊編號(hào)順序依次發(fā)送給存儲(chǔ)代理。
[0056]需要說明的是,本發(fā)明不限于糾刪算法每次能對(duì)多少數(shù)據(jù)進(jìn)行糾刪計(jì)算,因此一個(gè)糾刪群中所具有的糾刪組數(shù)量根據(jù)實(shí)際情況不同,每個(gè)糾刪組中有N個(gè)糾刪塊。并且圖2僅示出了一種編號(hào)的離散規(guī)則,本發(fā)明還可以采用其他離散規(guī)則來進(jìn)行編號(hào),例如糾刪組I內(nèi)的6個(gè)糾刪塊編號(hào)依次為1、3、5、7、9,其他依此類推,這里不再贅述。
[0057]進(jìn)一步地,對(duì)于糾刪塊中的數(shù)據(jù),也可以對(duì)糾刪塊中的數(shù)據(jù)幀進(jìn)行離散編號(hào),然后按照編號(hào)的順序發(fā)送,實(shí)現(xiàn)更加離散的發(fā)送,進(jìn)一步保證丟包不超出糾刪范圍。
[0058]存儲(chǔ)代理在收到存儲(chǔ)客戶端發(fā)送過來的數(shù)據(jù)后,進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存。
[0059]具體地,將每個(gè)糾刪塊按糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新進(jìn)行排列,恢復(fù)成原來的糾刪群。由于發(fā)送是按照糾刪塊編號(hào)順序發(fā)送的,所以存儲(chǔ)代理接收到的糾刪塊依次為1-24,重新進(jìn)行排列,將其中的1、5、9、13、17、21歸入糾刪組1,2、6、10、14、18、22歸入糾刪組2,3、7、11、15、19、23歸入糾刪組3,4、8、12、16、20、24歸入糾刪組4,則恢復(fù)成原來的糾刪群。從而在恢復(fù)成原來的糾刪群后,可以進(jìn)行是否數(shù)據(jù)發(fā)生丟失的檢查,以及后續(xù)的存儲(chǔ)。
[0060]然后存儲(chǔ)代理檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷。判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0061]具體地,對(duì)于恢復(fù)成原來的糾刪群的數(shù)據(jù),可以查看每個(gè)糾刪組里是否有糾刪塊丟失,并且檢查每個(gè)糾刪塊中是否有數(shù)據(jù)幀丟失。例如如果發(fā)現(xiàn)糾刪群內(nèi)的每個(gè)糾刪塊全部都收到了,且糾刪塊內(nèi)所有I幀、P幀、冗余數(shù)據(jù)幀都已收到,則判斷為網(wǎng)絡(luò)正常,無須反糾刪。如果發(fā)現(xiàn)糾刪群內(nèi)的有糾刪塊未收到或收到的糾刪塊內(nèi)存在I幀、P幀或冗余數(shù)據(jù)幀丟失,但未超出糾刪范圍,則判斷為網(wǎng)絡(luò)存在丟包。然后存儲(chǔ)代理將不完整的糾刪塊所在的糾刪組下的所有已收到的糾刪塊進(jìn)行拆包解析,按照幀序號(hào)重新排列,進(jìn)行反糾刪操作,進(jìn)行數(shù)據(jù)恢復(fù)。如果網(wǎng)絡(luò)丟包嚴(yán)重,超出糾刪范圍,則存儲(chǔ)代理要求存儲(chǔ)客戶端重傳丟失的數(shù)據(jù),在接收到重傳的數(shù)據(jù)后,重新檢查數(shù)據(jù)丟失情況并進(jìn)行處理。
[0062]在數(shù)據(jù)正確的情況下,存儲(chǔ)代理將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,按糾刪組模型將糾刪組中的每個(gè)糾刪塊分別發(fā)送給存儲(chǔ)服務(wù)端,即糾刪組中的原始數(shù)據(jù)塊存入4臺(tái)用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備中,糾刪組中的冗余數(shù)據(jù)塊存儲(chǔ)2臺(tái)用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備中。
[0063]下面結(jié)合本實(shí)施例糾刪模式4+2對(duì)丟失數(shù)據(jù)的幾種情況下如何進(jìn)行數(shù)據(jù)恢復(fù)進(jìn)行具體說明:
[0064]1、糾刪組中有2個(gè)及2個(gè)以下糾刪塊丟失或2個(gè)及2個(gè)以下糾刪塊中有數(shù)據(jù)丟失,且丟失的都是冗余數(shù)據(jù),這種情況下原始數(shù)據(jù)未丟失,需要恢復(fù)的是冗余數(shù)據(jù),此時(shí)存儲(chǔ)代理只要再做一次糾刪計(jì)算就可以恢復(fù)冗余數(shù)據(jù)。
[0065]2、糾刪組中有2個(gè)及2個(gè)以下糾刪塊丟失或2個(gè)及2個(gè)以下糾刪塊中有數(shù)據(jù)丟失,且丟失的都是原始數(shù)據(jù),這種情況下只需要做反糾刪計(jì)算恢復(fù)原始數(shù)據(jù)即可。
[0066]3、糾刪組中有2個(gè)及2個(gè)以下糾刪塊丟失或2個(gè)及2個(gè)以下糾刪塊中有數(shù)據(jù)丟失,且丟失的數(shù)據(jù)既有原始數(shù)據(jù)又有冗余數(shù)據(jù),這種情況下要先經(jīng)過反糾刪算法恢復(fù)丟失的原始數(shù)據(jù),然后通過原始數(shù)據(jù)進(jìn)行糾刪算法恢復(fù)丟失的冗余數(shù)據(jù)。
[0067]4、糾刪組中有2個(gè)及2個(gè)以上糾刪塊丟失或2個(gè)及2個(gè)以上糾刪塊中有數(shù)據(jù)丟失,這種情況超出了糾刪容錯(cuò)范圍,此時(shí)存儲(chǔ)代理會(huì)通知存儲(chǔ)客戶進(jìn)行數(shù)據(jù)重傳。由于存儲(chǔ)代理已經(jīng)知道具體丟失了哪些數(shù)據(jù),因此只需通知存儲(chǔ)客戶端重傳丟失部分的數(shù)據(jù)即可。
[0068]需要說明的是,存儲(chǔ)代理在檢查數(shù)據(jù)時(shí)如果發(fā)現(xiàn)糾刪群中有部分糾刪塊丟失或糾刪塊中有數(shù)據(jù)丟失,存儲(chǔ)代理會(huì)產(chǎn)生告警并向用戶上報(bào)告警,使用戶能及時(shí)進(jìn)行網(wǎng)絡(luò)故障排查,防止進(jìn)一步地丟包。
[0069]最后,存儲(chǔ)服務(wù)端對(duì)接收到的數(shù)據(jù)進(jìn)行存儲(chǔ)并將存儲(chǔ)結(jié)果反饋給存儲(chǔ)代理。
[0070]存儲(chǔ)服務(wù)端收到存儲(chǔ)代理發(fā)過來的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),如果校驗(yàn)無誤則將數(shù)據(jù)寫入子設(shè)備的存儲(chǔ)設(shè)備中,如果通過校驗(yàn)發(fā)現(xiàn)有數(shù)據(jù)丟失則會(huì)通知存儲(chǔ)代理進(jìn)行數(shù)據(jù)重傳,直到數(shù)據(jù)全部正確接收。存儲(chǔ)服務(wù)端在數(shù)據(jù)寫入完成后通知存儲(chǔ)代理數(shù)據(jù)已完成寫入,存儲(chǔ)代理在收到存儲(chǔ)服務(wù)端發(fā)送的數(shù)據(jù)寫入完成消息后清空存儲(chǔ)代理緩存中的數(shù)據(jù),同時(shí)存儲(chǔ)代理會(huì)發(fā)送消息給存儲(chǔ)客戶端,通知存儲(chǔ)客戶端數(shù)據(jù)傳輸已完成,存儲(chǔ)客戶端在收到存儲(chǔ)代理發(fā)送的數(shù)據(jù)傳輸已完成的消息后,清空自己的緩存,開始進(jìn)行下一輪數(shù)據(jù)的糾刪計(jì)算和發(fā)送。
[0071]需要說明的是為了避免存儲(chǔ)代理和存儲(chǔ)服務(wù)端之間出現(xiàn)大量的數(shù)據(jù)重傳,本實(shí)施例通過數(shù)據(jù)專線或VPN網(wǎng)絡(luò)將存儲(chǔ)代理和存儲(chǔ)服務(wù)端組成一個(gè)專網(wǎng),這樣存儲(chǔ)代理和存儲(chǔ)服務(wù)端之間的網(wǎng)絡(luò)質(zhì)量很好,不容易出現(xiàn)丟包的情況,存儲(chǔ)代理和存儲(chǔ)服務(wù)端之間基本不需要進(jìn)行數(shù)據(jù)重傳。因此即使不采用離散規(guī)則進(jìn)行編號(hào)和離散發(fā)送,在沒有連續(xù)丟包的情況下,不影響本發(fā)明的技術(shù)效果。
[0072]下面通過一個(gè)具體的應(yīng)用示例,來對(duì)本發(fā)明的數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行進(jìn)一步說明。本應(yīng)用實(shí)例中,存儲(chǔ)客戶端為視頻監(jiān)控系統(tǒng)中的網(wǎng)絡(luò)攝像機(jī)IPC,存儲(chǔ)代理和存儲(chǔ)服務(wù)端為視頻監(jiān)控系統(tǒng)中的存儲(chǔ)設(shè)備,存儲(chǔ)代理和存儲(chǔ)服務(wù)端可以位于同一個(gè)存儲(chǔ)設(shè)備中,或分別位于不同的存儲(chǔ)設(shè)備中,作為存儲(chǔ)代理的存儲(chǔ)設(shè)備位于IPC與作為存儲(chǔ)服務(wù)端的存儲(chǔ)設(shè)備之間。
[0073]在通過存儲(chǔ)代理、存儲(chǔ)服務(wù)端和IPC三者的參數(shù)協(xié)商后,IPC獲知存儲(chǔ)服務(wù)端的服務(wù)參數(shù),從而開始從緩存中取出所拍攝的原始視頻數(shù)據(jù),進(jìn)行糾刪計(jì)算后發(fā)送給存儲(chǔ)代理,由存儲(chǔ)代理進(jìn)行校驗(yàn)后發(fā)送給存儲(chǔ)服務(wù)端,進(jìn)行視頻數(shù)據(jù)的保存,從而實(shí)現(xiàn)視頻數(shù)據(jù)的冗余備份,保證了視頻監(jiān)控系統(tǒng)的數(shù)據(jù)安全。
[0074]如圖3所示,本實(shí)施例還提出了一種存儲(chǔ)糾刪方法,應(yīng)用于上述數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)代理,包括:
[0075]存儲(chǔ)代理接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,所述服務(wù)參數(shù)包括糾刪組模式和存儲(chǔ)服務(wù)端每次能夠?qū)懭氲淖畲髷?shù)據(jù)量,所述糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系;
[0076]存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存。
[0077]其中,存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括:
[0078]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0079]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0080]其中,存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù)為存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算時(shí)生成的糾刪組數(shù)據(jù)組成的糾刪群,每個(gè)糾刪組對(duì)應(yīng)一次糾刪計(jì)算,每個(gè)糾刪組包括一次糾刪計(jì)算生成的所有糾刪塊,糾刪群中每個(gè)糾刪塊按照設(shè)定的離散規(guī)則對(duì)應(yīng)有自己的糾刪塊編號(hào),這里不再贅述。
[0081]其中,存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù)中的糾刪塊按照糾刪塊編號(hào)順序發(fā)送。
[0082]優(yōu)選地,本實(shí)施例采用離散編碼,并按照按照糾刪塊編號(hào)順序發(fā)送,則上述存儲(chǔ)代理進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括:
[0083]將每個(gè)糾刪塊按糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新進(jìn)行排列,恢復(fù)成原來的糾刪群;
[0084]檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷;
[0085]判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
[0086]以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端,其特征在于,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)還包括存儲(chǔ)代理,其中: 所述存儲(chǔ)代理,用于接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,并接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存; 所述服務(wù)參數(shù)包括糾刪組模式和存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量,所述糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,執(zhí)行如下操作: 檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷; 判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述糾刪組模式表示為N= M+K,其中N為存儲(chǔ)服務(wù)端中子設(shè)備的總數(shù),M為存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備數(shù)量,K為存儲(chǔ)服務(wù)端中用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備數(shù)量,所述存儲(chǔ)客戶端在根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送數(shù)據(jù),執(zhí)行如下操作: 根據(jù)服務(wù)參數(shù)獲取原始數(shù)據(jù); 然后將獲取的原始數(shù)據(jù)劃分成至少一份; 對(duì)于劃分后的每份原始數(shù)據(jù),先將該份原始數(shù)據(jù)再平均分為M塊原始數(shù)據(jù),通過糾刪算法從M塊原始數(shù)據(jù)中計(jì)算出K塊冗余數(shù)據(jù),M塊原始數(shù)據(jù)和K塊冗余數(shù)據(jù)組成一個(gè)糾刪組,糾刪組中的每塊數(shù)據(jù)稱為一個(gè)糾刪塊; 將糾刪計(jì)算后得帶的所有糾刪組組成一個(gè)糾刪群,發(fā)送給存儲(chǔ)代理。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述存儲(chǔ)客戶端還用于對(duì)糾刪計(jì)算后得到的糾刪群中的糾刪塊按照設(shè)定的離散規(guī)則進(jìn)行編號(hào),并在發(fā)送時(shí)按照糾刪塊編號(hào)順序發(fā)送給存儲(chǔ)代理。5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,執(zhí)行如下操作: 根據(jù)糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新排列糾刪塊,恢復(fù)成原來的糾刪群; 檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷; 判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。6.—種存儲(chǔ)糾刪方法,所述存儲(chǔ)糾刪方法應(yīng)用于數(shù)據(jù)存儲(chǔ)系統(tǒng)中,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括存儲(chǔ)客戶端和存儲(chǔ)服務(wù)端,其特征在于,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)還包括存儲(chǔ)代理,所述存儲(chǔ)糾刪方法包括: 所述存儲(chǔ)代理接收存儲(chǔ)服務(wù)端上報(bào)的服務(wù)參數(shù),并將服務(wù)參數(shù)通知到存儲(chǔ)客戶端,所述服務(wù)參數(shù)包括糾刪組模式和存儲(chǔ)服務(wù)端每次寫入的最大數(shù)據(jù)量,所述糾刪組模式表示存儲(chǔ)服務(wù)端中用于存儲(chǔ)原始數(shù)據(jù)的子設(shè)備和用于存儲(chǔ)冗余數(shù)據(jù)的子設(shè)備之間的數(shù)量關(guān)系; 所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存。7.根據(jù)權(quán)利要求6所述的存儲(chǔ)糾刪方法,其特征在于,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括: 檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷; 判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。8.根據(jù)權(quán)利要求6所述的存儲(chǔ)糾刪方法,其特征在于,所述存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù)為存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算生成的糾刪組數(shù)據(jù)組成的糾刪群,每個(gè)糾刪組對(duì)應(yīng)一次糾刪計(jì)算,每個(gè)糾刪組包括一次糾刪計(jì)算生成的所有糾刪塊,糾刪群中每個(gè)糾刪塊按照設(shè)定的離散規(guī)則對(duì)應(yīng)有自己的糾刪塊編號(hào)。9.根據(jù)權(quán)利要求8所述的存儲(chǔ)糾刪方法,其特征在于,所述糾刪群中的糾刪塊按照糾刪塊編號(hào)順序發(fā)送。10.根據(jù)權(quán)利要求9所述的存儲(chǔ)糾刪方法,其特征在于,所述存儲(chǔ)代理接收存儲(chǔ)客戶端根據(jù)服務(wù)參數(shù)對(duì)原始數(shù)據(jù)進(jìn)行糾刪計(jì)算后發(fā)送的數(shù)據(jù),進(jìn)行丟包檢查和恢復(fù)處理,將處理后的數(shù)據(jù)發(fā)送給存儲(chǔ)服務(wù)端保存,包括: 根據(jù)糾刪塊編號(hào)和設(shè)定的離散規(guī)則重新排列糾刪塊,恢復(fù)成原來的糾刪群; 檢查接收的數(shù)據(jù)是否有數(shù)據(jù)丟失,如果沒有丟失則將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端,如果有數(shù)據(jù)丟失則進(jìn)行進(jìn)一步的判斷; 判斷丟失數(shù)據(jù)是否超出了設(shè)定的糾刪范圍,如果沒有超出,則進(jìn)行反糾刪計(jì)算,恢復(fù)丟失的數(shù)據(jù)后將數(shù)據(jù)按照服務(wù)參數(shù)存入存儲(chǔ)服務(wù)端;如果超出,則通知存儲(chǔ)客戶端重傳丟失的數(shù)據(jù)。
【文檔編號(hào)】G06F11/14GK105824721SQ201610143332
【公開日】2016年8月3日
【申請(qǐng)日】2016年3月14日
【發(fā)明人】申屠舒華, 楊春燕, 周斌
【申請(qǐng)人】浙江宇視科技有限公司