欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于糾刪碼的部分寫入方法及裝置、存儲介質(zhì)、設(shè)備與流程

文檔序號:12063499閱讀:259來源:國知局
基于糾刪碼的部分寫入方法及裝置、存儲介質(zhì)、設(shè)備與流程

本發(fā)明涉及存儲技術(shù),尤其涉及一種基于糾刪碼的部分寫入方法及裝置。



背景技術(shù):

糾刪碼(EC,Erasure Coding)起源于通信傳輸領(lǐng)域,目前逐漸出現(xiàn)在大規(guī)模存儲系統(tǒng)中,特別是分布式存儲系統(tǒng),用于實現(xiàn)數(shù)據(jù)的冗余保護。糾刪碼冗余保護技術(shù)解決了傳統(tǒng)冗余保護技術(shù)不適于分布式生產(chǎn)存儲系統(tǒng)的問題。糾刪碼是一種用于數(shù)據(jù)修復(fù)的編碼技術(shù),原始數(shù)據(jù)通常被切分為L字節(jié)大小的數(shù)據(jù)塊,L為固定值,得到n塊原始數(shù)據(jù);并使用每m塊原始數(shù)據(jù)通過編碼計算,得到k塊L字節(jié)大小校驗數(shù)據(jù)(即基于m塊原始數(shù)據(jù)冗余計算獲得k塊校驗數(shù)據(jù),校驗數(shù)據(jù)又稱為冗余數(shù)據(jù)),并將m塊原始數(shù)據(jù)(m個數(shù)據(jù)塊)和k塊校驗數(shù)據(jù)(k個校驗塊)一并存儲,其中m塊原始數(shù)據(jù)和k塊校驗數(shù)據(jù)稱為一個EC組;若(m+k)個數(shù)據(jù)塊當(dāng)中有任意有最多k塊數(shù)據(jù)出錯、損壞或丟失,分布式存儲系統(tǒng)都可以通過解碼計算恢復(fù)全部原始數(shù)據(jù)(m塊原始數(shù)據(jù))。其中,m小于等于n。

寫入操作或更新操作是存儲系統(tǒng)的常用操作,寫入操作的編碼計算過程通??梢苑旁诳蛻舳送瓿?,當(dāng)然也可以放在某個節(jié)點(數(shù)據(jù)節(jié)點)上完成。寫入操作包括全部寫入和部分寫入,其中部分寫入(PartialWrite),若一個寫操作的寫入長度不是L*m的整數(shù)倍,則該寫操作稱為部分寫入。假設(shè)L=4KB(千字節(jié)),m=8,若一次寫操作長度不為32KB的整數(shù)倍,則為部分寫入,因為這種寫操作需要部分更新目標(biāo)EC組,即新數(shù)據(jù)不足以填充某個EC組。需要說明的是,部分寫入的操作實際上是一種更新操作。

現(xiàn)有的進行部分寫入時,當(dāng)寫入流程遇到錯誤而終止,存儲系統(tǒng)無法確認(rèn)故障所在,無法正確重試寫入操作,也無法正確執(zhí)行數(shù)據(jù)修復(fù)操作。例如,若某次更新操作成功更新原始數(shù)據(jù)塊,但由于故障原因未能更新全部校驗數(shù)據(jù)塊,那么在隨后的修復(fù)過程中,存儲系統(tǒng)將無法確認(rèn)原始數(shù)據(jù)塊和校驗數(shù)據(jù)塊中哪些是新的哪些是舊的,也就無法進行數(shù)據(jù)修復(fù)工作。由此可見,現(xiàn)有技術(shù)中在進行寫入時,完全沒有考慮容錯方面的問題。



技術(shù)實現(xiàn)要素:

有鑒于此,本發(fā)明實施例為解決現(xiàn)有技術(shù)中存在的至少一個問題而提供一種基于糾刪碼的部分寫入方法及裝置,當(dāng)寫入流程遇到錯誤而終止,能夠確認(rèn)故障所在進而正確重試寫入操作和正確執(zhí)行數(shù)據(jù)修復(fù)操作。

本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:

第一方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入方法,所述方法包括:

確定第一更新請求,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

響應(yīng)所述第一更新請求,獲取第二版本信息,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;

根據(jù)所述第一版本信息與第二版本信息之間的匹配結(jié)果,對所述待更新數(shù)據(jù)進行處理。

第二方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入方法,所述方法包括:

確定待更新數(shù)據(jù)和與所述待更新數(shù)據(jù)對應(yīng)的數(shù)據(jù)塊的標(biāo)識信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定對應(yīng)的數(shù)據(jù)節(jié)點的標(biāo)識信息;

根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定所述數(shù)據(jù)塊的當(dāng)前版本信息,將所述數(shù)據(jù)塊的當(dāng)前版本信息作為第一版本信息;

將所述待更新數(shù)據(jù)和第一版本信息攜帶于第一更新請求中,根據(jù)數(shù)據(jù)節(jié)點的標(biāo)識信息將所述第一更新請求發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點;

接收所述數(shù)據(jù)節(jié)點發(fā)送的第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新結(jié)果;

如果所述更新結(jié)果表明更新成功,對所述第一版本信息進行更新。

第三方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入方法,所述方法包括:

接收數(shù)據(jù)節(jié)點發(fā)送的第二更新請求,所述第二更新請求中攜帶有校驗增量ΔPg,所述第二更新請求用于根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述自身存儲的版本向量,所述版本向量是由m個數(shù)據(jù)塊的版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目;

根據(jù)所述校驗增量ΔPg和自身存儲的校驗數(shù)據(jù)Pg,確定更新后的校驗數(shù)據(jù)Pg’,存儲所述更新后的校驗數(shù)據(jù)Pg’;

響應(yīng)所述第二更新請求,更新自身存儲的版本向量;

更新所述版本向量和存儲所述校驗數(shù)據(jù)Pg’,向數(shù)據(jù)節(jié)點發(fā)送第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg成功的結(jié)果。

第四方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入裝置,所述裝置包括第一確定單元、第一獲取單元和處理單元,其中:

所述第一確定單元,用于確定第一更新請求,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

所述第一獲取單元,用于響應(yīng)所述第一更新請求,獲取第二版本信息,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;

所述處理單元,用于根據(jù)所述第一版本信息與第二版本信息之間的匹配結(jié)果,對所述待更新數(shù)據(jù)進行處理。

第五方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入裝置,所述裝置包括第二確定單元、第三確定單元、第四確定單元、攜帶單元、第二接收單元和第一更新單元,其中:

所述第二確定單元,用于確定待更新數(shù)據(jù)和與所述待更新數(shù)據(jù)對應(yīng)的數(shù)據(jù)塊的標(biāo)識信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

所述第三確定單元,用于根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定對應(yīng)的數(shù)據(jù)節(jié)點的標(biāo)識信息;

所述第四確定單元,用于根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定所述數(shù)據(jù)塊的當(dāng)前版本信息,將所述數(shù)據(jù)塊的當(dāng)前版本信息作為第一版本信息;

所述攜帶單元,用于將所述待更新數(shù)據(jù)和第一版本信息攜帶于第一更新請求中,根據(jù)數(shù)據(jù)節(jié)點的標(biāo)識信息將所述第一更新請求發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點;

所述第二接收單元,用于接收所述數(shù)據(jù)節(jié)點發(fā)送的第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新結(jié)果;

所述第一更新單元,用于如果所述更新結(jié)果表明更新成功,對所述第一版本信息進行更新。

第六方面,本發(fā)明實施例提供一種基于糾刪碼的部分寫入裝置,所述裝置包括第三接收單元、第五確定單元、第二更新單元和第三發(fā)送單元,其中:

所述第三接收單元,用于接收數(shù)據(jù)節(jié)點發(fā)送的第二更新請求,所述第二更新請求中攜帶有校驗增量ΔPg,所述第二更新請求用于根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述自身存儲的版本向量;

所述第五確定單元,用于根據(jù)所述校驗增量ΔPg和自身存儲的校驗數(shù)據(jù)Pg,確定更新后的校驗數(shù)據(jù)Pg’,存儲所述更新后的校驗數(shù)據(jù)Pg’;

所述第二更新單元,用于響應(yīng)所述第二更新請求,更新自身存儲的版本向量,所述版本向量是由m個數(shù)據(jù)塊的版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目;

所述第三發(fā)送單元,用于更新所述版本向量完成后和存儲所述校驗數(shù)據(jù)Pg’后,向數(shù)據(jù)節(jié)點發(fā)送第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg成功的結(jié)果。

第七方面,本發(fā)明實施例提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器執(zhí)行時用于執(zhí)行上述的基于糾刪碼的部分寫入方法。

第八方面,本發(fā)明實施例提供一種計算設(shè)備,包括:存儲器、處理器和用于存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時用于實現(xiàn)上述的基于糾刪碼的部分寫入方法。

本發(fā)明實施例提供的一種基于糾刪碼的部分寫入方法及裝置,其中,確定第一更新請求,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;響應(yīng)所述第一更新請求,獲取第二版本信息,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;根據(jù)所述第一版本信息與第二版本信息之間的匹配結(jié)果,對所述待更新數(shù)據(jù)進行處理;如此,當(dāng)寫入流程遇到錯誤而終止,能夠確認(rèn)故障所在進而正確重試寫入操作和正確執(zhí)行數(shù)據(jù)修復(fù)操作。

附圖說明

圖1-1為本發(fā)明實施例所涉及的糾刪碼分布式存儲系統(tǒng)的網(wǎng)絡(luò)架構(gòu)示意圖;

圖1-2為本發(fā)明實施例一基于糾刪碼的部分寫入方法的實現(xiàn)流程示意圖;

圖2為本發(fā)明實施例二基于糾刪碼的部分寫入方法的實現(xiàn)流程示意圖;

圖3為本發(fā)明實施例三糾刪碼分布式存儲系統(tǒng)的組成結(jié)構(gòu)示意圖;

圖4為本發(fā)明實施例計算設(shè)備的組成結(jié)構(gòu)示意圖。

具體實施方式

為了更好的理解本發(fā)明的各實施例,先介紹一下相關(guān)技術(shù)中的糾刪碼的編解碼算法,糾刪碼的編解碼算法包括以下步驟:

(1)根據(jù)m塊原始數(shù)據(jù)和k塊校驗數(shù)據(jù),生成編碼系數(shù)矩陣A=[aij]m×k;

這里,在實際的操作過程中,除了根據(jù)m塊原始數(shù)據(jù)和k塊校驗數(shù)據(jù),還可以有其他的考量因素,生成編碼系數(shù)矩陣A=[aij]m×k,其中編碼系數(shù)矩陣的行數(shù)為m行,列數(shù)為k列;aij表示第i行第j列的元素,i為大于等于1小于等于m的整數(shù),j為大于等于1小于等于k的整數(shù);

(2)令原m塊原始數(shù)據(jù)為di,其中i=1..m,第i個原始數(shù)據(jù)塊中的第j個字節(jié)表示為dij,其中j=1..L;

(3)令原k塊校驗數(shù)據(jù)為pi,i=1..k,第i塊校驗數(shù)據(jù)中的第j個字節(jié)表示為pij,j=1..L;

(4)編碼時的公式參見公式(1):

(p1jp2j…pkj)T<==A*(d1j d2j…dmj)T (1);

公式(1)中,j=1..L,其中<==表示賦值;

(5)解碼時:將已知原始數(shù)據(jù)和必要校驗數(shù)據(jù)帶入步驟(4)中的等式,然后用求解線性方程組的算法解出未知原始數(shù)據(jù)。

上述所有計算過程中涉及的加、減、乘、除等運算均定義在伽羅華域GF(28),而不是實數(shù)域。需要說明的是,在實施的過程中,上述的糾刪碼的編解碼算法還可以有其他的形式,本領(lǐng)域的技術(shù)人員當(dāng)然可以采用其他的形式才實現(xiàn),這里不做限定。

在分布式存儲系統(tǒng)中,為了提高數(shù)據(jù)可靠性,每個EC組中的(m+k)個數(shù)據(jù)塊會存儲到(m+k)個不同的服務(wù)器中,每一個服務(wù)器被稱為一個節(jié)點,其中用于存儲數(shù)據(jù)塊(例如原始數(shù)據(jù)塊)的服務(wù)器可以被稱為數(shù)據(jù)節(jié)點,而用于存儲校驗數(shù)據(jù)塊的服務(wù)器可以被稱為校驗節(jié)點。

下面介紹一下更新操作與更新的數(shù)據(jù)的差值之間的關(guān)系,將編碼運算過程的公式(1):(p1jp2j…pkj)T<==A*(d1j d2j…dmj)T,(j=1..L)展開可得:

p1j=(a11a12..a1m)·(d1j d2j…dmj)=∑a1i·dij(i=1..m)

p2j=∑a2i·dij(i=1..m)

pkj=∑aki·dij(i=1..m)

若更新操作將(d1j d2j…dmj)中的第i個數(shù)據(jù)更新為dij’,那么:

p1j’=(a11a12..a1m)·(d1j d2j…dij’…dmj)

p1j’=∑a1i·dij–a1i·dij+a1i·dij

p1j’=p1j–a1i·Δdij

p2j’=p2j–a2i·Δdij

pkj’=pkj–aki·Δdij

即Δpxj=axi·Δdij,x=1..k;

所以,校驗塊的更新可以只依賴被修改數(shù)據(jù)的變化量Δdij。上述的結(jié)論Δpxj=axi·Δdij可以簡寫為Δp=a·Δd,并記為公式(2)。

根據(jù)公式(2),相關(guān)技術(shù)中的更新操作或?qū)懭氩僮饕话惆ㄈ缦碌牟襟E:

1)待更新的數(shù)據(jù)節(jié)點接收客戶端發(fā)出的對數(shù)據(jù)塊中數(shù)據(jù)d0的更新請求,所述更新請求用于將數(shù)據(jù)塊中數(shù)據(jù)d0更新為d0’;其中,所述更新請求中攜帶有待更新的數(shù)據(jù)d0’。

2)所述待更新的數(shù)據(jù)節(jié)點從本地磁盤讀取數(shù)據(jù)d0到內(nèi)存中;

3)利用等式Δp=a·Δd在所述待更新的數(shù)據(jù)節(jié)點的內(nèi)存中計算出所有k個校驗節(jié)點需要的校驗增量的更新數(shù)據(jù)塊集合{ΔP1,ΔP2,...,ΔPk};

4)所述待更新的數(shù)據(jù)節(jié)點將所述更新后的數(shù)據(jù)d0’寫入本地磁盤;

5)所述待更新的數(shù)據(jù)節(jié)點將k個校驗增量更新數(shù)據(jù)塊通過網(wǎng)絡(luò)并行發(fā)送至k個校驗節(jié)點上;

6)每個校驗節(jié)點從本地磁盤讀取原始的校驗數(shù)據(jù)p,并利用接收到的臨時數(shù)據(jù)塊Δp以及等式p’=p+Δp計算出新的校驗數(shù)據(jù)塊p’;并將更新后的校驗數(shù)據(jù)塊p’寫入本地磁盤上,并向所述待更新的數(shù)據(jù)節(jié)點發(fā)送更新完畢的信號;

7)所述待更新數(shù)據(jù)節(jié)點接收完所有冗余節(jié)點發(fā)送的更新完畢的信號后,向糾刪碼集群存儲系統(tǒng)或客戶端發(fā)送更新完畢的信號。

從上述可以看出,當(dāng)寫入流程遇到錯誤而終止,系統(tǒng)無法確認(rèn)故障所在,無法正確重試寫入操作,也無法正確執(zhí)行數(shù)據(jù)修復(fù)操作。例如,若某次更新操作成功更新原始數(shù)據(jù)塊,但由于故障原因未能更新全部校驗數(shù)據(jù)塊,那么在隨后的修復(fù)過程中,系統(tǒng)將無法確認(rèn)原始數(shù)據(jù)塊和校驗數(shù)據(jù)塊中哪些是新的哪些是舊的,也就無法進行數(shù)據(jù)修復(fù)工作。

下面結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案進一步詳細(xì)闡述。

實施例一

為了解決前述的技術(shù)問題,本發(fā)明實施例提供一種基于糾刪碼的部分寫入方法,該方法應(yīng)用于糾刪碼分布式存儲系統(tǒng),如圖1-1所示,該糾刪碼分布式存儲系統(tǒng)針對于一個EC組來說,至少包括一個客戶端11、m個數(shù)據(jù)節(jié)點12和k個校驗節(jié)點13,m和k均為大于1的自然數(shù)。在實施的過程中,客戶端安裝在電子設(shè)備上,數(shù)據(jù)節(jié)點和校驗節(jié)點都可以利用服務(wù)器來實現(xiàn),在實施的過程中,所述服務(wù)器和電子設(shè)備可以采用各種具有信息處理能力的計算設(shè)備來實現(xiàn),例如電子設(shè)備可以為智能手機、筆記本電腦、臺式計算機、個人數(shù)字助理、智能電視等,另外服務(wù)器還可以采用服務(wù)器集群來實現(xiàn)。

圖1-2為本發(fā)明實施例一基于糾刪碼的部分寫入方法的實現(xiàn)流程示意圖,該方法包括:

步驟S101,數(shù)據(jù)節(jié)點確定第一更新請求,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

步驟S102,數(shù)據(jù)節(jié)點響應(yīng)所述第一更新請求,獲取第二版本信息,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;

這里,數(shù)據(jù)節(jié)點可以自身維護一個關(guān)于數(shù)據(jù)塊的版本信息,因此,數(shù)據(jù)節(jié)點獲取第二版本信息可以是從自身獲取的。

步驟S103,根據(jù)所述第一版本信息與第二版本信息之間的匹配結(jié)果,對所述待更新數(shù)據(jù)進行處理的過程;

其中,該步驟S103包括步驟S1031和步驟S1031,其中:

步驟S1031,數(shù)據(jù)節(jié)點判斷所述第一版本信息與第二版本信息是否匹配,得到第一判斷結(jié)果;

這里,判斷第一版本信息與第二版本信息是否匹配可以包括:判斷第一版本信息與第二版本信息是否相同,如果相同,則第一版本信息與第二版本信息匹配,如果不相同,則第一版本信息與第二版本信息不匹配。一般來說,第二版本信息是最新的版本信息,如果第二版本信息高于第一版本信息,則說明客戶端在哪次忘記更新自身的版本信息了,如果第二版本信息低于第一版本信息,則說明在某一次數(shù)據(jù)節(jié)點沒有更新完成而客戶端卻以為更新完成了,因而客戶端更新了自身的版本信息,無論是第二版本信息高于或低于第一版本信息,只要二者不匹配,數(shù)據(jù)節(jié)點都會向存儲系統(tǒng)或者客戶端發(fā)出報錯信息(更新失敗結(jié)果)。

步驟S1032,數(shù)據(jù)節(jié)點根據(jù)所述第一判斷結(jié)果對所述待更新數(shù)據(jù)進行處理。

在本發(fā)明的其他實施例中,步驟S1032,所述根據(jù)所述第一判斷結(jié)果對所述待更新數(shù)據(jù)進行處理,包括:

步驟S1321,如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息不匹配,發(fā)送第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新失敗結(jié)果和原因值,所述原因值用于表明是由于第一版本信息錯誤所導(dǎo)致的更新失??;

這里,所述原因值可以是數(shù)值或者代碼,僅僅用于表征由于第一版本信息錯誤所導(dǎo)致的更新失敗。

步驟S1322,丟棄所述待更新數(shù)據(jù)。

步驟S1323,如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,根據(jù)待更新數(shù)據(jù)和所述數(shù)據(jù)塊確定校驗增量的更新數(shù)據(jù)塊集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg為第g個校驗節(jié)點的校驗增量,g大于等于1小于等于k,k為與一個所述糾刪碼相匹配的校驗數(shù)據(jù)塊的數(shù)量;

步驟S1324,將第g個校驗節(jié)點的校驗增量ΔPg攜帶于第二更新請求中,將所述第二更新請求發(fā)送給第g個校驗節(jié)點,所述第二更新請求用于觸發(fā)所述第g個校驗節(jié)點根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新,并更新所述第g個校驗節(jié)點自身存儲的版本向量。

在本發(fā)明的其他實施例中,所述根據(jù)所述第一判斷結(jié)果對所述待更新數(shù)據(jù)進行處理,包括:如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,利用所述待更新數(shù)據(jù)對所述數(shù)據(jù)塊進行更新;對所述數(shù)據(jù)塊更新完成后,對所述第二版本信息進行更新。

在本發(fā)明的其他實施例中,所述方法還包括:對所述數(shù)據(jù)塊更新完成后,發(fā)送第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新成功結(jié)果,所述更新成功結(jié)果用于觸發(fā)客戶端更新所述第一版本信息。本實施例中,由于客戶端是最后更新數(shù)據(jù)塊的版本信息的,只要客戶端未能成功的更新版本信息,那么則說明之前的更新操作或?qū)懖僮鞑]有完全成功,因此,可以設(shè)置計時器,在規(guī)定的時間內(nèi)如果未更新成功,則客戶端可以重新發(fā)起更新請求。

本發(fā)明實施例中,數(shù)據(jù)節(jié)點對每個原始數(shù)據(jù)塊維護一個自增版本信息(版本號),當(dāng)有寫入操作時,數(shù)據(jù)節(jié)點首先會判斷接收到的數(shù)據(jù)的版本信息(第一版本信息)和自身存儲的版本信息(第二版本信息)是否匹配,匹配時,數(shù)據(jù)節(jié)點才會對更新請求中的數(shù)據(jù)進行更新,否則就會向客戶端返回更新失敗結(jié)果,從而避免當(dāng)寫入流程遇到錯誤而終止,系統(tǒng)無法確認(rèn)故障所在進而無法正確重試寫入操作以及無法正確執(zhí)行數(shù)據(jù)修復(fù)操作的問題。

實施例二

基于前述的實施例,本發(fā)明實施例提供一種基于糾刪碼的部分寫入方法,圖2為本發(fā)明實施例二基于糾刪碼的部分寫入方法的實現(xiàn)流程示意圖,如圖2所示,該方法包括:

步驟S201,客戶端確定待更新數(shù)據(jù)和與所述待更新數(shù)據(jù)對應(yīng)的數(shù)據(jù)塊的標(biāo)識信息;

這里,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

步驟S202,客戶端根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定對應(yīng)的數(shù)據(jù)節(jié)點的標(biāo)識信息;

步驟S203,客戶端根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定所述數(shù)據(jù)塊的當(dāng)前版本信息,將所述數(shù)據(jù)塊的當(dāng)前版本信息作為第一版本信息;

步驟S204,客戶端將所述待更新數(shù)據(jù)和第一版本信息攜帶于第一更新請求中,根據(jù)數(shù)據(jù)節(jié)點的標(biāo)識信息將所述第一更新請求發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點;

這里,從客戶端到原始數(shù)據(jù)塊的第一更新請求攜帶該數(shù)據(jù)塊的版本號,以備數(shù)據(jù)節(jié)點進行查驗。

步驟S205,數(shù)據(jù)節(jié)點確定第一更新請求;

這里,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

步驟S206,數(shù)據(jù)節(jié)點響應(yīng)所述第一更新請求,獲取第二版本信息;

這里,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;

步驟S207,數(shù)據(jù)節(jié)點判斷所述第一版本信息與第二版本信息是否匹配,得到第一判斷結(jié)果;

這里,如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息不匹配,數(shù)據(jù)節(jié)點發(fā)送第一更新響應(yīng)并丟棄所述待更新數(shù)據(jù),所述第一更新響應(yīng)中攜帶有更新失敗結(jié)果和原因值,所述原因值用于表明是由于第一版本信息錯誤所導(dǎo)致的更新失敗。

步驟S208,如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,利用所述待更新數(shù)據(jù)對所述數(shù)據(jù)塊進行更新;

步驟S209,對所述數(shù)據(jù)塊更新完成后,對所述第二版本信息進行更新。

步驟S210,如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,數(shù)據(jù)節(jié)點根據(jù)待更新數(shù)據(jù)和所述數(shù)據(jù)塊確定校驗增量的更新數(shù)據(jù)塊集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk};

這里,ΔPg為第g個校驗節(jié)點的校驗增量,g大于等于1小于等于k,k為與一個所述糾刪碼相匹配的校驗數(shù)據(jù)塊的數(shù)量;

步驟S211,數(shù)據(jù)節(jié)點將第g個校驗節(jié)點的校驗增量ΔPg攜帶于第二更新請求中,數(shù)據(jù)節(jié)點將所述第二更新請求發(fā)送給第g個校驗節(jié)點;

這里,所述第二更新請求用于觸發(fā)所述第g個校驗節(jié)點根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述第g個校驗節(jié)點自身存儲的版本向量。

步驟S212,校驗節(jié)點接收數(shù)據(jù)節(jié)點發(fā)送的第二更新請求;

這里,所述第二更新請求中攜帶有校驗增量ΔPg,所述第二更新請求用于根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述自身存儲的版本向量;

這里,所述第二更新請求中還可以攜帶有版本信息,此時校驗節(jié)點與數(shù)據(jù)節(jié)點類似,校驗節(jié)點也需要判斷第二更新請求中攜帶的版本信息與自身維護的版本信息是否匹配,如果匹配則進行下面的更新流程(包括利用校驗增量對校驗數(shù)據(jù)的更新和對版本信息的更新);如果不匹配,則向數(shù)據(jù)節(jié)點返回第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新失敗結(jié)果和原因值(此處與數(shù)據(jù)節(jié)點更新失敗類似)。例如,所述第二更新請求中還攜帶有第三版本信息,所述第三版本信息用于表明數(shù)據(jù)塊的當(dāng)前版本信息。

本發(fā)明實施例的方法還包括:步驟S2121,響應(yīng)所述第二更新請求,獲取第四版本信息,所述第四版本信息用于表明自身存儲的數(shù)據(jù)塊的版本信息;步驟S2122,判斷所述第三版本信息與第四版本信息是否匹配,得到第二判斷結(jié)果;步驟S2123,根據(jù)所述第二判斷結(jié)果對所述第二更新請求進行處理。所述獲取第四版本信息包括:查詢自身存儲的版本向量,得到第四版本信息,所述版本向量是由m個數(shù)據(jù)塊的當(dāng)前版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目;如果第二判斷結(jié)果表明匹配,則進入步驟S213,反之,則向數(shù)據(jù)節(jié)點返回第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新失敗結(jié)果和原因值。

步驟S213,校驗節(jié)點根據(jù)所述校驗增量ΔPg和自身存儲的校驗數(shù)據(jù)Pg,確定更新后的校驗數(shù)據(jù)Pg’,存儲所述更新后的校驗數(shù)據(jù)Pg’;

步驟S214,校驗節(jié)點響應(yīng)所述第二更新請求,更新自身存儲的版本向量;

這里,所述版本向量是由m個數(shù)據(jù)塊的版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目;

這里,所述第二更新請求中還攜帶有所述數(shù)據(jù)塊的標(biāo)識信息,所述第二更新請求中還攜帶有所述數(shù)據(jù)塊的標(biāo)識信息和所述數(shù)據(jù)塊更新后的版本信息,所述更新自身存儲的版本向量,包括:根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息更新自身存儲的版本向量中對應(yīng)數(shù)據(jù)塊的版本信息,或者,根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息和所述數(shù)據(jù)塊更新后的版本信息更新自身存儲的版本向量。

步驟S215,校驗節(jié)點更新所述版本向量和存儲所述校驗數(shù)據(jù)Pg’,向數(shù)據(jù)節(jié)點發(fā)送第二更新響應(yīng);

這里,所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg成功的結(jié)果。

步驟S216,數(shù)據(jù)節(jié)點接收第g個校驗節(jié)點攜帶于第二更新響應(yīng);

這里,所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg是否成功的結(jié)果;

步驟S217,數(shù)據(jù)節(jié)點判斷所有的k個校驗節(jié)點是否全部更新對應(yīng)的所述校驗增量ΔPg成功;

步驟S218,如果所有的k個校驗節(jié)點全部更新對應(yīng)的所述校驗增量ΔPg成功,且對所述數(shù)據(jù)塊更新完成后,數(shù)據(jù)節(jié)點向客戶端發(fā)送第一更新響應(yīng)。

步驟S219,客戶端接收所述數(shù)據(jù)節(jié)點發(fā)送的第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新結(jié)果;

步驟S220,客戶端如果所述更新結(jié)果表明更新成功,對所述第一版本信息進行更新。

從以上可以看出,本發(fā)明實施例中的技術(shù)方案新增了版本信息,新增的版本信息具有以下特點:

1)數(shù)據(jù)節(jié)點對每個原始數(shù)據(jù)塊維護一個自增版本信息(版本號),在實施的過程中,版本號可以采用整數(shù)來表示,例如版本號初始為0,每次寫入自增1;當(dāng)然版本號也可以不采用整數(shù)來表示,例如上一個版本號為1.1a版,下一個版本號為1.1b;另外,對數(shù)據(jù)塊的版本信息持久化保存;

2)校驗節(jié)點對自身存儲的校驗塊維護所有m個原始數(shù)據(jù)塊的版本號,即校驗節(jié)點其實維護的是一個版本向量,所述版本向量是由m個數(shù)據(jù)塊的版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目。在實施的過程中,版本號可以采用整數(shù)來表示,例如版本號初始為0,每次寫入自增1;當(dāng)然版本號也可以不采用整數(shù)來表示,例如上一個版本號為1.1a版,下一個版本號為1.1b;另外,對數(shù)據(jù)塊的版本信息持久化保存。

3)客戶端自身可以維護對數(shù)據(jù)塊的版本信息,當(dāng)然也可以從數(shù)據(jù)節(jié)點查詢得知所有m個原始數(shù)據(jù)塊的版本號。

本發(fā)明實施例中,數(shù)據(jù)節(jié)點在檢查更新請求中的版本號后,按照現(xiàn)有方法計算Δp1,Δp2,…,Δpk,并分別發(fā)送到k個校驗節(jié)點,同時告知校驗節(jié)點自身的編號i(1≤i≤m)和該數(shù)據(jù)塊的版本號;然后數(shù)據(jù)節(jié)點將新數(shù)據(jù)寫入硬盤,并將自身版本號增加1。然后校驗節(jié)點在檢查更新請求中的版本號后,按照現(xiàn)有方法更新自身的校驗數(shù)據(jù)p,并將自己維護的相關(guān)數(shù)據(jù)塊(第i塊)的版本號增加1,最后向原始數(shù)據(jù)塊返回校驗更新成功信號;接著,數(shù)據(jù)節(jié)點分別更新k個校驗塊成功后,向客戶端返回更新成功信號;最后,客戶端將自身維護的該數(shù)據(jù)塊的版本號增加1。

在本發(fā)明的其他實施例中,對于某一個EC組中,只有在全部數(shù)據(jù)塊(m個數(shù)據(jù)塊)都更新完后,校驗節(jié)點才會相應(yīng)的修改校驗塊所攜帶關(guān)于某一數(shù)據(jù)塊的版本信息,所以本實施例中在每個校驗塊上都對應(yīng)一個由m個數(shù)據(jù)塊版本信息組成的向量,每個校驗塊對應(yīng)的版本向量都相同。例如,m為5,那么版本向量Q=[q1,q2,q3,q4,q5],其中q1表示一個EC組中第一個數(shù)據(jù)塊的版本信息,q2表示與q1同一個EC組中第二個數(shù)據(jù)塊的版本信息,q3表示與q1同一個EC組中第三個數(shù)據(jù)塊的版本信息,q4表示與q1同一個EC組中第四個數(shù)據(jù)塊的版本信息,q5表示與q1同一個EC組中第五個數(shù)據(jù)塊的版本信息。假設(shè)需要部分寫入,即只更新該EC組中的第二個數(shù)據(jù)塊,則客戶端向第二個數(shù)據(jù)塊相應(yīng)的數(shù)據(jù)節(jié)點發(fā)送第一更新請求,第一更新請求中攜帶有第二個數(shù)據(jù)塊的版本信息,然后第二個數(shù)據(jù)塊相應(yīng)的數(shù)據(jù)節(jié)點執(zhí)行步驟S205至步驟S210。進一步假設(shè)k=3,即假設(shè)有3個校驗節(jié)點,當(dāng)?shù)诙€數(shù)據(jù)塊在相應(yīng)的數(shù)據(jù)節(jié)點更新完畢后,第二個數(shù)據(jù)塊相應(yīng)的數(shù)據(jù)節(jié)點會向這3個校驗節(jié)點都發(fā)送第二更新請求,第二更新請求中攜帶有第二個數(shù)據(jù)塊的版本信息,然后3個校驗節(jié)點中每一個校驗節(jié)點執(zhí)行步驟S212、步驟S2121、步驟S2122;如果這3個校驗節(jié)點中的每一校驗節(jié)點都判斷第二更新請求中第二個數(shù)據(jù)塊的版本信息與自身存儲的第二個數(shù)據(jù)塊的版本信息匹配的話,那么這3個校驗節(jié)點都更新第二個數(shù)據(jù)塊的校驗數(shù)據(jù),并且這3個校驗節(jié)點都向第二個數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)節(jié)點發(fā)送更新完成的第二更新響應(yīng);第二個數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)節(jié)點確定3個校驗節(jié)點全部更新成功后,還可以向3個校驗節(jié)點發(fā)送更新版本向量的請求,然后,3個校驗節(jié)點響應(yīng)更新版本向量的請求,更新第二數(shù)據(jù)塊的版本信息,即更新3個校驗節(jié)點的向量。如果q1、q2、q3、q4、q5均為整數(shù),那么3個校驗節(jié)點中每一個校驗節(jié)點更新后的版本向量Q=[q1,(q2+1),q3,q4,q5]。本實施例中提供的版本向量的更新方式實際上是一種被動的方式,即由第二個數(shù)據(jù)塊相應(yīng)的數(shù)據(jù)節(jié)點通知全部的校驗節(jié)點更新版本向量(即更新第二個數(shù)據(jù)塊的版本信息);而前述圖2所示的實施例提供的方式,是一種校驗節(jié)點主動的方式(參見步驟S214),步驟S214無需數(shù)據(jù)節(jié)點的通知即可自行更新版本向量。

需要說明的是,對不同數(shù)據(jù)塊的更新操作可以并行執(zhí)行,其中更新操作可以認(rèn)為是寫操作;對同一數(shù)據(jù)塊的更新操作不能并行執(zhí)行,但可以流水線方式執(zhí)行,即后續(xù)更新操作不必等到前面的更新操作完成即可向服務(wù)器發(fā)出。當(dāng)需要做數(shù)據(jù)恢復(fù)時,系統(tǒng)需要暫停對該EC組的更新操作,然后根據(jù)各原始數(shù)據(jù)塊的版本號和校驗塊的版本號向量,決定修復(fù)動作,版本號最大的塊數(shù)據(jù)最新。

實施例三

基于前述的實施例,本發(fā)明實施例提供一種糾刪碼分布式存儲系統(tǒng),該系統(tǒng)包括客戶端、數(shù)據(jù)節(jié)點和校驗節(jié)點,其中客戶端包括第一基于糾刪碼分的部分寫入裝置(簡稱第一裝置),數(shù)據(jù)節(jié)點包括第二基于糾刪碼的部分寫入裝置(簡稱第二裝置),而校驗節(jié)點包括第三基于糾刪碼的部分寫入裝置(簡稱第三裝置),其中所述第一裝置所包括的各單元都可以通過電子設(shè)備中的處理器來實現(xiàn),第二裝置所包括的各單元以及各單元所包括的各模塊都可以通過數(shù)據(jù)節(jié)點中的處理器來實現(xiàn),第三裝置所包括的各單元都可以通過校驗節(jié)點中的處理器來實現(xiàn)。

在實現(xiàn)的過程中,處理器所實現(xiàn)的功能當(dāng)然也可通過具體的邏輯電路實現(xiàn);在具體實施例的過程中,處理器可以為中央處理器(CPU)、微處理器(MPU)、數(shù)字信號處理器(DSP)或現(xiàn)場可編程門陣列(FPGA)等。

圖3為本發(fā)明實施例三糾刪碼分布式存儲系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖3所示,該系統(tǒng)30包括該系統(tǒng)包括客戶端、數(shù)據(jù)節(jié)點和校驗節(jié)點,其中客戶端包括第一裝置41,數(shù)據(jù)節(jié)點包括第二裝置51,而校驗節(jié)點包括第三裝置61,其中:

第一裝置41包括第二確定單元42、第三確定單元43、第四確定單元44、攜帶單元45、第二接收單元46和第一更新單元47,第二裝置51包括第一確定單元52、第一獲取單元53、第一判斷單元54、處理單元55、第一接收單元56、第二判斷單元57和第一發(fā)送單元58,其中,所述處理單元55包括確定模塊551、攜帶模塊552、第二發(fā)送模553、第一更新模塊554和第二更新模塊555,其中:第三裝置61包括第三接收單元62、第五確定單元63、第二更新單元64和第三發(fā)送單元65,其中:

所述第二確定單元42,用于確定待更新數(shù)據(jù)和與所述待更新數(shù)據(jù)對應(yīng)的數(shù)據(jù)塊的標(biāo)識信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

所述第三確定單元43,用于根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定對應(yīng)的數(shù)據(jù)節(jié)點的標(biāo)識信息;

所述第四確定單元44,用于根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息確定所述數(shù)據(jù)塊的當(dāng)前版本信息,將所述數(shù)據(jù)塊的當(dāng)前版本信息作為第一版本信息;

所述攜帶單元45,用于將所述待更新數(shù)據(jù)和第一版本信息攜帶于第一更新請求中,根據(jù)數(shù)據(jù)節(jié)點的標(biāo)識信息將所述第一更新請求發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點;

所述第一確定單元52,用于確定第一更新請求,所述第一更新請求中攜帶有待更新數(shù)據(jù)和第一版本信息,其中所述第一版本信息用于表明客戶端存儲的被所述待更新數(shù)據(jù)進行更新的數(shù)據(jù)塊的版本信息,所述待更新數(shù)據(jù)的數(shù)據(jù)量小于一個糾刪碼組的數(shù)據(jù)量;

所述第一獲取單元53,用于響應(yīng)所述第一更新請求,獲取第二版本信息,所述第二版本信息用于表明自身存儲的所述數(shù)據(jù)塊的版本信息;

所述第一判斷單元54,用于判斷所述第一版本信息與第二版本信息是否匹配,得到第一判斷結(jié)果;

所述確定模塊551,用于如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,根據(jù)待更新數(shù)據(jù)和所述數(shù)據(jù)塊確定校驗增量的更新數(shù)據(jù)塊集合{ΔP1,ΔP2,...,ΔPg,...,ΔPk},其中,ΔPg為第g個校驗節(jié)點的校驗增量,g大于等于1小于等于k,k為與一個所述糾刪碼相匹配的校驗數(shù)據(jù)塊的數(shù)量;

所述攜帶模塊552,用于將第g個校驗節(jié)點的校驗增量ΔPg攜帶于第二更新請求中;

所述第二發(fā)送模塊553,用于將所述第二更新請求發(fā)送給第g個校驗節(jié)點,所述第二更新請求用于觸發(fā)所述第g個校驗節(jié)點根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述第g個校驗節(jié)點自身存儲的版本向量。

所述第一更新模塊554,用于如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息匹配,利用所述待更新數(shù)據(jù)對所述數(shù)據(jù)塊進行更新;

所述第二更新模塊555,用于對所述數(shù)據(jù)塊更新完成后,對所述第二版本信息進行更新。

所述第三接收單元62,用于接收數(shù)據(jù)節(jié)點發(fā)送的第二更新請求,所述第二更新請求中攜帶有校驗增量ΔPg,所述第二更新請求用于根據(jù)所述校驗增量ΔPg對自身存儲的校驗數(shù)據(jù)進行更新并更新所述自身存儲的版本向量;

所述第五確定單元63,用于根據(jù)所述校驗增量ΔPg和自身存儲的校驗數(shù)據(jù)Pg,確定更新后的校驗數(shù)據(jù)Pg’,存儲所述更新后的校驗數(shù)據(jù)Pg’;

所述第二更新單元64,用于響應(yīng)所述第二更新請求,更新自身存儲的版本向量,所述版本向量是由m個數(shù)據(jù)塊的版本信息所組成的向量,所述m為一個糾刪碼組中數(shù)據(jù)塊的數(shù)目;

這里,所述第二更新請求中還攜帶有所述數(shù)據(jù)塊的標(biāo)識信息,所述第二更新請求中還攜帶有所述數(shù)據(jù)塊的標(biāo)識信息和所述數(shù)據(jù)塊更新后的版本信息,所述第二更新單元,用于根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息更新自身存儲的版本向量中對應(yīng)數(shù)據(jù)塊的版本信息,或者,根據(jù)所述數(shù)據(jù)塊的標(biāo)識信息和所述數(shù)據(jù)塊更新后的版本信息更新自身存儲的版本向量。

所述第三發(fā)送單元65,用于更新所述版本向量完成后和存儲所述校驗數(shù)據(jù)Pg’后,向數(shù)據(jù)節(jié)點發(fā)送第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg成功的結(jié)果。

所述第一接收單元56,用于接收第g個校驗節(jié)點攜帶于第二更新響應(yīng),所述第二更新響應(yīng)中攜帶有更新所述校驗增量ΔPg是否成功的結(jié)果;

所述第二判斷單元57,用于判斷所有的k個校驗節(jié)點是否全部更新對應(yīng)的所述校驗增量ΔPg成功;如果所有的k個校驗節(jié)點全部更新對應(yīng)的所述校驗增量ΔPg成功,且對所述數(shù)據(jù)塊更新完成后,觸發(fā)所述第一發(fā)送單元發(fā)送第一更新響應(yīng)。

第一發(fā)送單元58,用于向第一裝置發(fā)送第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新成功結(jié)果,所述更新成功結(jié)果用于觸發(fā)客戶端更新所述第一版本信息

所述第二接收單元46,用于接收所述數(shù)據(jù)節(jié)點發(fā)送的第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新結(jié)果;

所述第一更新單元47,用于如果所述更新結(jié)果表明更新成功,對所述第一版本信息進行更新。

在本發(fā)明的其他實施例中,所述處理單元包括第一發(fā)送模塊和丟棄模塊,其中

所述第一發(fā)送模塊,用于如果所述第一判斷結(jié)果表明所述第一版本信息與所述第二版本信息不匹配,發(fā)送第一更新響應(yīng),所述第一更新響應(yīng)中攜帶有更新失敗結(jié)果和原因值,所述原因值用于表明是由于第一版本信息錯誤所導(dǎo)致的更新失??;

所述丟棄模塊,用于丟棄所述待更新數(shù)據(jù)。

這里需要指出的是:以上裝置實施例的描述,與上述方法實施例的描述是類似的,具有同方法實施例相似的有益效果,因此不做贅述。對于本發(fā)明裝置實施例中未披露的技術(shù)細(xì)節(jié),請參照本發(fā)明方法實施例的描述而理解,為節(jié)約篇幅,因此不再贅述。

需要說明的是,本發(fā)明實施例中,如果以軟件功能模塊的形式實現(xiàn)上述的基于糾刪碼的部分寫入方法,并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read Only Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。這樣,本發(fā)明實施例不限制于任何特定的硬件和軟件結(jié)合。

相應(yīng)地,本發(fā)明實施例再提供一種一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被處理器執(zhí)行時用于執(zhí)行本發(fā)明實施例中基于糾刪碼的部分寫入方法。

相應(yīng)地,本發(fā)明實施例再提供一種計算設(shè)備,包括:存儲器、處理器和用于存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時用于實現(xiàn)本發(fā)明實施例中的數(shù)據(jù)節(jié)點側(cè)、校驗節(jié)點側(cè)或終端側(cè)的基于糾刪碼的部分寫入方法。

在實現(xiàn)的過程中,數(shù)據(jù)節(jié)點、校驗節(jié)點或終端都可以通過計算設(shè)備來實現(xiàn),圖4為本發(fā)明實施例計算設(shè)備的組成結(jié)構(gòu)示意圖,如圖4所示,該計算設(shè)備400可以包括:至少一個處理器401、至少一個通信總線402、用戶接口403、至少一個外部通信接口404和存儲器405。其中,通信總線502用于實現(xiàn)這些組件之間的連接通信。其中,用戶接口403可以包括顯示屏和鍵盤。外部通信接口404可選的可以包括標(biāo)準(zhǔn)的有線接口和無線接口。

應(yīng)理解,說明書通篇中提到的“一個實施例”或“一實施例”意味著與實施例有關(guān)的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,在整個說明書各處出現(xiàn)的“在一個實施例中”或“在一實施例中”未必一定指相同的實施例。此外,這些特定的特征、結(jié)構(gòu)或特性可以任意適合的方式結(jié)合在一個或多個實施例中。應(yīng)理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。

需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結(jié)合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。

上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元;既可以位于一個地方,也可以分布到多個網(wǎng)絡(luò)單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:移動存儲設(shè)備、只讀存儲器(Read Only Memory,ROM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質(zhì)包括:移動存儲設(shè)備、ROM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
博客| 本溪| 上虞市| 江川县| 佛教| 海伦市| 仁化县| 康平县| 交口县| 长宁县| 年辖:市辖区| 宁河县| 林甸县| 平乡县| 红安县| 晋州市| 武鸣县| 长海县| 平南县| 石棉县| 西宁市| 富锦市| 凌源市| 静安区| 高唐县| 万年县| 林甸县| 梓潼县| 嵊泗县| 比如县| 松阳县| 射阳县| 阿拉尔市| 库车县| 莒南县| 武宣县| 翁牛特旗| 翁牛特旗| 商南县| 若尔盖县| 建阳市|