亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法與設(shè)備與流程

文檔序號(hào):11234124閱讀:770來源:國(guó)知局
一種在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法與設(shè)備與流程

本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的技術(shù)。



背景技術(shù):

隨著大數(shù)據(jù)時(shí)代的來臨,分布式數(shù)據(jù)存儲(chǔ)應(yīng)用越來越廣泛,為保障數(shù)據(jù)安全避免數(shù)據(jù)損壞丟失,通常使用多副本實(shí)時(shí)寫入的方式,即直至所有副本均寫成功才返回用戶寫入成功。在這一方式實(shí)施過程中由于各種環(huán)境異常會(huì)引起部分副本寫入失敗,因此在失敗情況下需要快速恢復(fù)寫操作并保證副本間的數(shù)據(jù)一致性?,F(xiàn)有技術(shù),往往通過剔除異常的副本并先反饋用戶寫入成功后進(jìn)行副本數(shù)據(jù)補(bǔ)齊,或剔除異常副本后先加入新的副本并在數(shù)據(jù)補(bǔ)齊后反饋用戶寫入成功,或通過將要寫入數(shù)據(jù)以日志的方式記錄并轉(zhuǎn)儲(chǔ)等方式對(duì)副本寫入失敗后進(jìn)行恢復(fù)。

然而,現(xiàn)有技術(shù)在需要保證副本間一致性的情況下存在恢復(fù)讀寫安全風(fēng)險(xiǎn)高,等待延時(shí)長(zhǎng),后臺(tái)流量大占用帶寬等問題。且在允許數(shù)據(jù)可以隨機(jī)改寫的情況,這一過程需要保證寫入的原子性,當(dāng)這一情況下副本寫入異常后現(xiàn)有技術(shù)在保證數(shù)據(jù)可靠性和強(qiáng)一致性上有所欠缺。



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

本申請(qǐng)的一個(gè)目的是提供一種在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法與設(shè)備,用以解決分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題。

根據(jù)本申請(qǐng)的一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N在元數(shù)據(jù)服務(wù)器端用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法,該方法解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該方法包括:

接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;

根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

將所述第二文件副本的信息提供至所述用戶設(shè)備。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N在用戶設(shè)備端用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法,該方法解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該方法包括:

若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;

接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;

向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N在副本服務(wù)器端用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法,該方法解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該方法包括:

接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;

根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;

接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的元數(shù)據(jù)服務(wù)器,該設(shè)備解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該設(shè)備包括:

重映射請(qǐng)求接收裝置,用于接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;

副本服務(wù)器重分配裝置,用于根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

第二文件副本信息反饋裝置,用于將所述第二文件副本的信息提供至所述用戶設(shè)備。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的用戶設(shè)備,該設(shè)備解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該設(shè)備包括:

重映射請(qǐng)求發(fā)送裝置,用于若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;

第二文件副本信息接收裝置,用于接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;

第二文件副本文件讀寫請(qǐng)求發(fā)送裝置,用于向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的副本服務(wù)器,該設(shè)備解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,該設(shè)備包括:

文件副本建立請(qǐng)求接受裝置,用于接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;

第二文件副本建立裝置,用于根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;

第二文件副本文件讀寫請(qǐng)求接受裝置,用于接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的元數(shù)據(jù)服務(wù)器,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;

根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

將所述第二文件副本的信息提供至所述用戶設(shè)備。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的用戶設(shè)備,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;

接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;

向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本。

根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的副本服務(wù)器,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;

根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;

接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

根據(jù)本申請(qǐng)的再一方面,還提供了一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的系統(tǒng),解決了分布式存儲(chǔ)系統(tǒng)中副本寫異常后存在的延時(shí)以及無法保障強(qiáng)一致性的問題,其中,該系統(tǒng)包括如前所述根據(jù)本發(fā)明一個(gè)方面的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的元數(shù)據(jù)服務(wù)器,如前所述根據(jù)本發(fā)明另一個(gè)方面的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的用戶設(shè)備,以及如前所述根據(jù)本發(fā)明另一個(gè)方面的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的副本服務(wù)器。

與現(xiàn)有技術(shù)相比,本申請(qǐng)用戶設(shè)備獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求,元數(shù)據(jù)服務(wù)器重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立目標(biāo)文件的第二文件副本,所述第二文件副本引用第一文件副本,用戶設(shè)備向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,副本服務(wù)器接收并響應(yīng)執(zhí)行。即本申請(qǐng)通過建立新舊副本間的引用關(guān)系,在不中斷讀寫的情況下進(jìn)行新舊副本間的數(shù)據(jù)轉(zhuǎn)儲(chǔ)和響應(yīng),從而在副本寫入發(fā)生異常后快速恢復(fù)讀寫,保證了數(shù)據(jù)的強(qiáng)一致性和可靠性,降低了在線寫入的處理延時(shí),減少后臺(tái)轉(zhuǎn)儲(chǔ)流量消耗,提高系統(tǒng)的穩(wěn)定性。

附圖說明

通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:

圖1示出根據(jù)本申請(qǐng)一個(gè)方面的元數(shù)據(jù)服務(wù)器端、用戶設(shè)備端以及副本服務(wù)器端配合實(shí)現(xiàn)的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法流程圖;

圖2示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法中的副本服務(wù)器端流程圖;

圖3示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法中的元數(shù)據(jù)服務(wù)器端以及用戶設(shè)備端配合工作流程圖;

圖4示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)服務(wù)器、用戶設(shè)備以及副本服務(wù)器配合實(shí)現(xiàn)的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的設(shè)備示意圖;

圖5示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的設(shè)備中副本服務(wù)器示意圖;

圖6示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫入的設(shè)備中元數(shù)據(jù)服務(wù)器以及用戶設(shè)備配合使用示意圖。

附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。

具體實(shí)施方式

下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。

在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

圖1示出根據(jù)本申請(qǐng)一個(gè)方面的元數(shù)據(jù)服務(wù)器端、用戶設(shè)備端以及副本服務(wù)器端配合實(shí)現(xiàn)的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法流程圖。所述元數(shù)據(jù)服務(wù)器端包括步驟s11、步驟s12、步驟s13;所述用戶設(shè)備端包括步驟s21、步驟s22、步驟s23;所述副本服務(wù)器端包括步驟s31、步驟s32、步驟s33。

其中,在步驟s21中用戶設(shè)備若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;在步驟s11中元數(shù)據(jù)服務(wù)器接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;在步驟s12中元數(shù)據(jù)服務(wù)器根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;在步驟s31中副本服務(wù)器接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;在步驟s32中副本服務(wù)器根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;在步驟s13中元數(shù)據(jù)服務(wù)器將所述第二文件副本的信息提供至所述用戶設(shè)備;在步驟s22中用戶設(shè)備接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;在步驟s23中用戶設(shè)備向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本;在步驟s33中副本服務(wù)器接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

具體地,在步驟s21中用戶設(shè)備若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;在步驟s11中元數(shù)據(jù)服務(wù)器接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常。其中,所述用戶設(shè)備端即客戶端,多用于發(fā)起文件讀寫操作。所述元數(shù)據(jù)服務(wù)器端用于記錄文件屬性和對(duì)應(yīng)文件副本所在的副本服務(wù)器信息,在此副本服務(wù)器管理文件副本,提供對(duì)所管理文件副本的讀寫操作。所述目標(biāo)文件即為有讀寫需求的文件,在此用文件f代稱。所述第一文件副本是指目標(biāo)文件在寫入時(shí)所建立的寫入副本,多由用戶設(shè)備提出目標(biāo)文件的寫入請(qǐng)求以后由元數(shù)據(jù)服務(wù)器反饋指定并存儲(chǔ)在對(duì)應(yīng)的副本服務(wù)器上,在此用fv1代稱。例如,客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫文件f,元數(shù)據(jù)服務(wù)器內(nèi)部查表返回f當(dāng)前副本鏡像為fv1,即元數(shù)據(jù)服務(wù)器提供文件f至副本鏡像fv1的映射,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上。所述文件寫入異常即在目標(biāo)文件的寫入過程中發(fā)生的異常,包括但不限于網(wǎng)絡(luò)異常、副本服務(wù)器自身異常等。前述異常信息由用戶設(shè)備獲取后,用戶設(shè)備向元數(shù)據(jù)服務(wù)器發(fā)送建立新的目標(biāo)文件映射,建立新的副本與目標(biāo)文件的映射關(guān)系,其中,獲取方式包括但不限于用戶設(shè)備周期檢測(cè),或由副本服務(wù)器上報(bào)等。接上文舉例,文件f的副本fv1在寫入時(shí)a副本服務(wù)器出現(xiàn)異常,獲取異常信息后客戶端將請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射文件f的副本。用戶設(shè)備獲取第一副本文件執(zhí)行寫操作時(shí)發(fā)生的異常并與元數(shù)據(jù)服務(wù)器通信要求重新映射,會(huì)使得發(fā)生異常后重映射建立迅速,從而目標(biāo)文件得以在寫異常后迅速切換副本,繼續(xù)進(jìn)行寫入,保證快速恢復(fù)寫入縮短延遲。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述用戶設(shè)備向元數(shù)據(jù)服務(wù)器請(qǐng)求重映射的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的用戶設(shè)備向元數(shù)據(jù)服務(wù)器請(qǐng)求重映射的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

接著,在步驟s12中元數(shù)據(jù)服務(wù)器根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;在步驟s31中副本服務(wù)器接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求。即元數(shù)據(jù)服務(wù)器根據(jù)用戶設(shè)備所發(fā)送的重映射請(qǐng)求,為目標(biāo)文件建立新的副本映射,并為新的副本分配相應(yīng)的副本服務(wù)器,從而將副本建立在服務(wù)器上。所述第二文件副本是指基于元數(shù)據(jù)服務(wù)器為目標(biāo)文件分配的新的映射所建立在各副本服務(wù)器上的的鏡像副本,在此以fv2代稱。所述副本服務(wù)器有一個(gè)以上,從而可以保障副本數(shù)據(jù)的安全,在某一副本服務(wù)器損壞或丟失后有備份可查。例如接上文舉例,fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2包含了引用fv1的信息,在此假設(shè)fv2也有三個(gè)副本,對(duì)應(yīng)重新分配的d、e、f三臺(tái)副本服務(wù)器,元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本需要存放在d、e、f三臺(tái)副本服務(wù)器上的請(qǐng)求發(fā)送給相應(yīng)的副本服務(wù)器,副本服務(wù)器d、e、f對(duì)請(qǐng)求進(jìn)行接收。在此,所述第二文件副本引用所述第一文件副本是指所述第二文件副本的信息中包含第一副本文件引用或指向信息,例如,設(shè)置每個(gè)文件副本基本屬性包含對(duì)另外文件的指向信息,這里用base屬性代稱,每個(gè)文件副本會(huì)有base屬性,它指向另一個(gè)文件,fv2的base是fv1即表示f2是基于f1的內(nèi)容修改完成,在此,所述文件副本的基本屬性可以進(jìn)行設(shè)置或是在現(xiàn)有的基本屬性上進(jìn)行添加但不限于此。所述第二文件副本引用所述第一文件副本的方式包括但不限于下述舉例,在fv2的文件屬性信息由鍵值對(duì)描述:base:fv1,或采用includexxx.h等方式進(jìn)行記錄。建立第二文件副本和第一副本文件之間的引用關(guān)系,使得第二文件副本在數(shù)據(jù)讀寫時(shí)可以從第一副本文件轉(zhuǎn)存或讀取自身沒有的數(shù)據(jù),從而快速切換副本使得寫失敗帶來延時(shí)減少。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述第二文件副本引用第一文件副本的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的第二文件副本引用第一文件副本的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,在步驟s12中元數(shù)據(jù)服務(wù)器根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本為空且引用所述第一文件副本。即元數(shù)據(jù)服務(wù)器根據(jù)用戶設(shè)備所發(fā)送的重映射請(qǐng)求,為目標(biāo)文件建立新的副本映射,并為新的副本分配相應(yīng)的副本服務(wù)器,從而將副本建立在服務(wù)器上,在此,所建立的新的副本即為第二文件副本,在建立初始其所存儲(chǔ)的數(shù)據(jù)為空,采用文件引用機(jī)制,這一機(jī)制即每個(gè)文件有基本屬性,指向另一個(gè)文件,這里即為每個(gè)新建立的副本文件均包含對(duì)在其之前副本文件的引用信息,例如設(shè)置每個(gè)文件有基本數(shù)據(jù),這里使用base屬性代稱,假設(shè)fv2的base是fv1,表示fv2是基于fv1的內(nèi)容修改完成。接上文舉例,如果寫入時(shí)fv1所在的副本服務(wù)器a發(fā)生異常,則客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1,其中,fv2為新建的空文件,用于接替出現(xiàn)寫入失敗的副本文件fv1,并假設(shè)fv2也有三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器上,其中,新建的fv2即為第二副本文件,其剛建立時(shí)為空即投入使用不需要等待數(shù)據(jù)的轉(zhuǎn)儲(chǔ),使得第二副本文件快速建立并接替fv1進(jìn)行目標(biāo)文件f的寫入,從而在寫入失敗進(jìn)一步降低延遲。

接著,在步驟s32中副本服務(wù)器根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本。即副本服務(wù)器被分配給第二文件副本后,根據(jù)元數(shù)據(jù)服務(wù)器所發(fā)送的副本建立請(qǐng)求,將第二文件副本建立在各自的服務(wù)器上。即接上文舉例,元數(shù)據(jù)服務(wù)器分配fv2三臺(tái)新的副本服務(wù)器,將fv2三個(gè)副本分別存放在d、e、f三臺(tái)副本服務(wù)器上。所建立的副本服務(wù)器上的第二副本文件均包含與第二文件副本的引用關(guān)系,即例如,fv2在三個(gè)副本服務(wù)器上的base屬性均指向fv1,從而基于任一臺(tái)副本服務(wù)器上的副本均能根據(jù)引用信息找到fv1的文件所在,進(jìn)而讀取其中的內(nèi)容。

接著,在步驟s13中元數(shù)據(jù)服務(wù)器將所述第二文件副本的信息提供至所述用戶設(shè)備;在步驟s22中元數(shù)據(jù)服務(wù)器用戶設(shè)備接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息。即元數(shù)據(jù)服務(wù)器在建立文件與第二文件副本的映射后將第二文件副本的信息提供給用戶設(shè)備,其中,所述第二文件副本的信息包括但不限于第二文件副本的名稱、第二文件副本服務(wù)器相關(guān)信息等。用戶設(shè)備接收重映射后的第二副本信息,從而在第二文件副本上進(jìn)行相應(yīng)的讀寫操作。接上文舉例,客戶端基于寫失敗請(qǐng)求重映射的完整過程即為如果fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1,元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器,并將這些信息返回給客戶端,是的客戶端可以科技與第二文件副本信息進(jìn)行讀寫操作,恢復(fù)因?qū)懯≡斐傻闹袛?。因?yàn)榈诙北疚募⒂成浜蠹磳⑿畔⑻峁┙o用戶設(shè)備,使得用戶設(shè)備基于第二副本文件可以快速恢復(fù)讀寫。

優(yōu)選地,所述設(shè)備還包括步驟s14(未示出),在步驟s14中元數(shù)據(jù)服務(wù)器通過數(shù)據(jù)復(fù)制補(bǔ)足所述第一文件副本。所述第一文件副本在出現(xiàn)寫失敗后,其所在的多個(gè)副本服務(wù)器上的副本數(shù)據(jù)不一定處于一致狀態(tài),通過數(shù)據(jù)復(fù)制進(jìn)行數(shù)據(jù)補(bǔ)足,從而使得第一文件副本的有效數(shù)據(jù)不丟失,且在補(bǔ)足后副本處于可響應(yīng)狀態(tài),從而第二文件副本根據(jù)引用關(guān)系可對(duì)第一文件副本的數(shù)據(jù)進(jìn)行讀取或轉(zhuǎn)存。接上文舉例,即元數(shù)據(jù)服務(wù)器對(duì)fv1發(fā)起后臺(tái)復(fù)制,補(bǔ)足副本,從而使得fv1的有效數(shù)據(jù)丟失并處于可讀取狀態(tài),這一過程是對(duì)fv1進(jìn)行的,因此對(duì)恢復(fù)讀寫的時(shí)間基本無影響。

接著,在步驟s23中元數(shù)據(jù)服務(wù)器用戶設(shè)備向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本;在步驟s33中副本服務(wù)器接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。即用戶設(shè)備根據(jù)所受到的重新映射后的第二副本文件的信息進(jìn)行讀寫,讀寫時(shí)的副本為第二副本文件,因此將讀寫請(qǐng)求發(fā)送至第二副本文件所在的所有副本服務(wù)器。第二副本文件對(duì)應(yīng)的副本服務(wù)器接收到讀寫請(qǐng)求后即執(zhí)行具體的讀寫請(qǐng)求。接上文舉例,即為客戶端繼續(xù)將f的讀寫請(qǐng)求發(fā)送到d、e、f副本服務(wù)器,對(duì)fv2的請(qǐng)求讀寫,fv2開始接受所有f文件的讀寫請(qǐng)求,寫請(qǐng)求發(fā)送到d、e、f都寫成功后返回成功,讀請(qǐng)求發(fā)送到fv2副本后,如果數(shù)據(jù)范圍已存在于fv2文件內(nèi)則直接返回?cái)?shù)據(jù),否則請(qǐng)求b、c上fv1的副本來讀取數(shù)據(jù)。第二副本文件所在副本服務(wù)器接收讀寫請(qǐng)求后讀寫操作即可恢復(fù),因?yàn)榈诙北疚募母北痉?wù)器數(shù)量與之前第一副本文件等同,因此不會(huì)犧牲數(shù)據(jù)讀寫的可靠性,同時(shí)因?yàn)榈诙北疚募瑢?duì)第一副本文件的引用信息,在讀數(shù)據(jù)時(shí)可以直接從第一副本文件進(jìn)行讀取,從而節(jié)約了在重新讀寫之前的數(shù)據(jù)轉(zhuǎn)存時(shí)間,使得出現(xiàn)副本寫異常快速恢復(fù),保證在線寫入的低延遲。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述在第二文件副本服務(wù)器上響應(yīng)讀寫請(qǐng)求的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的在第二文件副本服務(wù)器上響應(yīng)讀寫請(qǐng)求的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

圖2示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法中的副本服務(wù)器端流程圖。所述副本服務(wù)器端包括步驟s31、步驟s32、步驟s33、步驟s34、步驟s35、步驟s36、步驟s37。

其中,在步驟s31中副本服務(wù)器接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;在步驟s32中副本服務(wù)器根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;在步驟s33中副本服務(wù)器接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求;在步驟s34中副本服務(wù)器根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的讀請(qǐng)求,讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);在步驟s35中副本服務(wù)器將所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)返回至所述用戶設(shè)備;在步驟s36中副本服務(wù)器根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的寫請(qǐng)求,對(duì)所述第二文件副本執(zhí)行寫操作;在步驟s37中副本服務(wù)器若所述寫操作執(zhí)行成功,向所述用戶設(shè)備返回寫成功信息。

在此,圖2中的步驟s31、步驟s32、步驟s33與圖1中的步驟s31、步驟s32、步驟s33相同或相似,在此不再贅述。

具體地,副本服務(wù)器端所接受讀寫請(qǐng)求中,若為讀請(qǐng)求則在步驟s34中副本服務(wù)器根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的讀請(qǐng)求,讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);接著,在步驟s35中副本服務(wù)器將所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)返回至所述用戶設(shè)備。即用戶設(shè)備在需要進(jìn)行讀操作時(shí)對(duì)第二文件副本所在的副本服務(wù)器發(fā)送度請(qǐng)求,副本服務(wù)器收到讀請(qǐng)求后進(jìn)行相應(yīng)的響應(yīng)。接上文舉例,即為客戶端向fv2所在的副本服務(wù)器d、e、f發(fā)送讀請(qǐng)求,副本服務(wù)器d、e、f接收到讀請(qǐng)求即在fv2查詢相應(yīng)數(shù)據(jù)進(jìn)行反饋,其中,fv2未有的數(shù)據(jù)可根據(jù)引用信息向之前的副本文件進(jìn)行查詢,從而對(duì)讀請(qǐng)求進(jìn)行反饋。

優(yōu)選地,在步驟s34中副本服務(wù)器若所述第二文件副本包含所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),從所述第二文件副本讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);否則,從所述第一文件副本讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。即當(dāng)副本服務(wù)器收到讀請(qǐng)求后會(huì)對(duì)第二文件副本的數(shù)據(jù)內(nèi)容進(jìn)行查找,若存在讀請(qǐng)求所需的所需數(shù)據(jù)則進(jìn)行相應(yīng)反饋,若不存在讀請(qǐng)求所需數(shù)據(jù)則根據(jù)第二文件副本中所包含的與第一文件副本的引用關(guān)系,到第一文件副本中進(jìn)行查找并對(duì)讀請(qǐng)求進(jìn)行反饋。其中,根據(jù)引用關(guān)系從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方法包括但不限于根據(jù)引用關(guān)系中的地址或其它指向數(shù)據(jù)向第一文件副本轉(zhuǎn)發(fā)讀請(qǐng)求,并由第一文件副本將數(shù)據(jù)反饋至第二文件副本進(jìn)而進(jìn)行進(jìn)一步反饋。接上文舉例,第二副本文件對(duì)應(yīng)的副本服務(wù)器接到讀請(qǐng)求后,如果讀請(qǐng)求的數(shù)據(jù)在fv2文件中存在,則fv2副本服務(wù)器直接返回結(jié)果;如果發(fā)現(xiàn)數(shù)據(jù)不存在,則需要從base的fv1讀取,它向fv1的副本服務(wù)器轉(zhuǎn)發(fā)讀請(qǐng)求,fv1副本服務(wù)器返回?cái)?shù)據(jù)給fv2副本服務(wù)器,然后由fv2副本服務(wù)器返回給客戶端。根據(jù)第二文件副本中包含的與第一副本文件的引用關(guān)系,將第二文件副本所沒有的數(shù)據(jù)進(jìn)行讀取并反饋,使得第二文件副本可以正常對(duì)讀請(qǐng)求進(jìn)行響應(yīng),且不需要數(shù)據(jù)預(yù)先轉(zhuǎn)存即可以進(jìn)行操作,使得第二文件副本建立后恢復(fù)響應(yīng)的時(shí)間縮短。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述設(shè)備還包括步驟s38(未示出),在步驟s38中副本服務(wù)器將所述第一文件副本中的數(shù)據(jù)寫入所述第二文件副本。即將第二文件副本中沒有且第一文件副本中有的數(shù)據(jù)轉(zhuǎn)存或?qū)懟氐降诙募北?,從而使得第二文件副本的?shù)據(jù)被補(bǔ)足。其中,第一文件副本中數(shù)據(jù)寫入第二文件副本的方法包括但不限于,每次從第一副本文件讀取數(shù)據(jù)時(shí)啟動(dòng)寫入,定期利用閑時(shí)進(jìn)行寫入等。接上文舉例,fv2副本服務(wù)器可以后臺(tái)主動(dòng)將fv1的有用數(shù)據(jù)主動(dòng)寫回到fv2副本,主要采用lazy寫回,主動(dòng)寫回發(fā)生在總要從fv1拿數(shù)據(jù)的時(shí)候,相當(dāng)于readahead。在此,這一寫入可以寫入此時(shí)所需要讀的數(shù)據(jù),或就此持續(xù)進(jìn)行寫入,寫入的停止條件可以是檢測(cè)是否第一副本文件的所有有效數(shù)據(jù)是否都已經(jīng)在第二副本文件上。將所述第一文件副本中的數(shù)據(jù)寫入所述第二文件副本使得寫失敗之前的數(shù)據(jù)得以被轉(zhuǎn)存至新的副本,從而保證了數(shù)據(jù)的完整。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述第一文件副本中數(shù)據(jù)寫入第二文件副本的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的第一文件副本中數(shù)據(jù)寫入第二文件副本的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述設(shè)備還包括步驟s39(未示出),在步驟s39中副本服務(wù)器若所述第二文件副本已包括所述第一文件副本中所有數(shù)據(jù),刪除所述第二文件副本對(duì)所述第一文件副本的引用關(guān)系。即接上文所述,若檢測(cè)第一文件副本中所有數(shù)據(jù)均已寫入第二文件副本,則將第二文件副本中所包含的對(duì)第一文件副本的引用信息刪除。同時(shí)被引用的第一文件副本可對(duì)被引用的關(guān)系進(jìn)行記錄,在刪除時(shí),第二文件副本和第一文件上引用和被應(yīng)用信息均被刪除,第一文件副本對(duì)被引用數(shù)目進(jìn)行監(jiān)測(cè),若引用數(shù)變?yōu)榱?,則可以對(duì)第一文件副本進(jìn)行回收,從而釋放相應(yīng)資源,例如,當(dāng)發(fā)現(xiàn)所有有效數(shù)據(jù)已經(jīng)在fv2上時(shí),可以解除對(duì)fv1的base關(guān)系,如果fv1被引用數(shù)變?yōu)?,fv1將被回收。

其中,第二文件副本與第一文件副本記錄引用信息采用的是文件引用機(jī)制,這一機(jī)制的使用可舉例為,每個(gè)文件會(huì)有基本屬性,例如base屬性,它指向另一個(gè)文件。假設(shè)文件f2的base是文件f1,表示f2是基于f1的內(nèi)容修改完成,當(dāng)讀f2的數(shù)據(jù)時(shí),如果訪問數(shù)據(jù)已更新到f2上,f2直接返回?cái)?shù)據(jù)給客戶端;如果f2上沒有這部分?jǐn)?shù)據(jù),表明數(shù)據(jù)當(dāng)前沒有更新,仍存儲(chǔ)在basef1文件里,f2會(huì)轉(zhuǎn)發(fā)請(qǐng)求給f1,讀取相應(yīng)的數(shù)據(jù)。f2可以選擇把從f1讀取的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到自身,這樣后續(xù)從f2讀取數(shù)據(jù)不再需要轉(zhuǎn)發(fā)。如果f2發(fā)現(xiàn)所有依賴f1的數(shù)據(jù)都已存在于自身,它可以解除與f1的base關(guān)系。這樣如果f1沒有被其它文件引用,可以被刪除回收空間。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述文件引用機(jī)制僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的文件引用機(jī)制如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

接著,副本服務(wù)器端所接受讀寫請(qǐng)求中,若為寫請(qǐng)求則在步驟s36中副本服務(wù)器根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的寫請(qǐng)求,對(duì)所述第二文件副本執(zhí)行寫操作;接著,在步驟s37中副本服務(wù)器若所述寫操作執(zhí)行成功,向所述用戶設(shè)備返回寫成功信息。優(yōu)選地,所述方法還包括步驟s24(未示出),在步驟s24中用戶設(shè)備若接收到所述重新分配的多個(gè)副本服務(wù)器中每個(gè)副本服務(wù)器返回的寫成功信息,確認(rèn)對(duì)應(yīng)寫請(qǐng)求完成。

即副本服務(wù)器接到用戶設(shè)備所發(fā)送的寫請(qǐng)求后,即對(duì)第二文件副本執(zhí)行寫操作,當(dāng)?shù)诙募北舅诘姆?wù)器均返回用戶設(shè)備寫成功后,用戶設(shè)備即認(rèn)為寫成功,并向用戶反饋寫成功的相關(guān)信息。接上文舉例,對(duì)fv2的寫與fv1一致,需要等d、e、f副本服務(wù)器都返回成功才返回用戶成功,從而完成多文件副本的寫入。

優(yōu)選地,所述設(shè)備還包括步驟s310(未示出),在步驟s310中副本服務(wù)器若所述寫操作執(zhí)行失敗,向所述用戶設(shè)備報(bào)告文件寫入異常。即,若在對(duì)第二副本文件的寫入過程出現(xiàn)寫失敗,則反饋寫入異常至用戶設(shè)備,進(jìn)而用戶設(shè)備再次向元數(shù)據(jù)服務(wù)器申請(qǐng)重映射重復(fù)上文所述的相關(guān)步驟。接上文舉例即為,如果fv2寫入過程中出現(xiàn)有副本服務(wù)器異常,由客戶端再次申請(qǐng)fv3的副本映射,由fv3接替fv2進(jìn)行讀寫操作,fv3中包含對(duì)fv2的引用,從而繼續(xù)進(jìn)行寫失敗的快速恢復(fù)處理。

圖3示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的方法中的元數(shù)據(jù)服務(wù)器端以及用戶設(shè)備端配合工作流程圖。所述元數(shù)據(jù)服務(wù)器端包括步驟s15、步驟s16、步驟s17;所述用戶設(shè)備端包括步驟s25、步驟s26、步驟s27。

其中,在步驟s25中用戶設(shè)備向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;在步驟s15中元數(shù)據(jù)服務(wù)器接收用戶設(shè)備發(fā)的送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;在步驟s16中元數(shù)據(jù)服務(wù)器根據(jù)所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求為所述用戶設(shè)備分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第一文件副本;在步驟s17中元數(shù)據(jù)服務(wù)器將所述第一文件副本的信息提供至所述用戶設(shè)備;在步驟s26中用戶設(shè)備接收所述元數(shù)據(jù)服務(wù)器基于所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求發(fā)送的、所述目標(biāo)文件的第一文件副本的信息;在步驟s27中用戶設(shè)備向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第一文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第一文件副本。

具體地,在步驟s25中用戶設(shè)備向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;在步驟s15中元數(shù)據(jù)服務(wù)器接收用戶設(shè)備發(fā)的送關(guān)于目標(biāo)文件的讀寫請(qǐng)求。是指在初次進(jìn)行讀寫時(shí),用戶設(shè)備向元數(shù)據(jù)服務(wù)器發(fā)送讀寫請(qǐng)求,元數(shù)據(jù)服務(wù)器接收關(guān)于目標(biāo)文件的讀寫請(qǐng)求后對(duì)目標(biāo)文件的副本及其多個(gè)副本服務(wù)器進(jìn)行指定。例如假設(shè)用戶邏輯操作的文件名是f,副本服務(wù)器存儲(chǔ)f副本的名稱為fv1,元數(shù)據(jù)服務(wù)器提供f到fv1的映射關(guān)系,即客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫f,元數(shù)據(jù)服務(wù)器接收并進(jìn)行響應(yīng)。這一過程為目標(biāo)文件的讀寫啟動(dòng)和準(zhǔn)備階段,設(shè)置副本保障數(shù)據(jù)安全,防止數(shù)據(jù)的丟失和損壞。

接著,在步驟s16中元數(shù)據(jù)服務(wù)器根據(jù)所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求為所述用戶設(shè)備分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第一文件副本。是指元數(shù)據(jù)服務(wù)器基于所接收的讀寫請(qǐng)去,為目標(biāo)文件分配副本文件并建立相應(yīng)的映射,同時(shí)指定對(duì)應(yīng)的副本所在服務(wù)器,并將所分配的副本文件在每個(gè)服務(wù)器上進(jìn)行建立。例如,客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫f的時(shí)候,元數(shù)據(jù)服務(wù)器通過內(nèi)部查表得知當(dāng)前文件副本名稱為fv1,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上。分配副本服務(wù)器是的每個(gè)副本有相應(yīng)的服務(wù)器負(fù)責(zé),從而在某一臺(tái)服務(wù)器出現(xiàn)故障而導(dǎo)致寫失敗時(shí)或數(shù)據(jù)異常時(shí),其它服務(wù)器上的副本數(shù)據(jù)不受影響。

接著,在步驟s17中元數(shù)據(jù)服務(wù)器將所述第一文件副本的信息提供至所述用戶設(shè)備;在步驟s26中用戶設(shè)備接收所述元數(shù)據(jù)服務(wù)器基于所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求發(fā)送的、所述目標(biāo)文件的第一文件副本的信息。是指用戶設(shè)備接收到元數(shù)據(jù)服務(wù)器發(fā)送的相應(yīng)的映射的第一副本文件及其服務(wù)器信息,在此這一信息中包括但不限于服務(wù)器位置信息,從而可以基于此向相應(yīng)的副本服務(wù)器發(fā)送相應(yīng)的讀寫信息,開始對(duì)目標(biāo)文件的讀寫操作。例如,元數(shù)據(jù)服務(wù)器將fv1的相關(guān)信息及其副本服務(wù)器信息發(fā)送給客戶端,客戶端基于此進(jìn)行進(jìn)一步的讀寫操作。

接著,在步驟s27中用戶設(shè)備向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第一文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第一文件副本。即用戶設(shè)備向第一副本文件所在的副本服務(wù)器發(fā)送讀寫請(qǐng)求,從而相應(yīng)的服務(wù)器進(jìn)行執(zhí)行。例如,客戶端寫入請(qǐng)求直接發(fā)給a、b、c三個(gè)fv1的副本服務(wù)器,當(dāng)全部寫成功時(shí)返回用戶成功。

綜合上文所有舉例,整體的流程整體舉例如下:客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫文件f。元數(shù)據(jù)服務(wù)器內(nèi)部查表返回f當(dāng)前副本鏡像為fv1,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上。客戶端直接將讀寫請(qǐng)求發(fā)送到a、b、c副本服務(wù)器,對(duì)fv1請(qǐng)求讀寫。所有副本寫入成功后返回用戶成功。如果fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1。元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器,并將這些信息返回給客戶端。元數(shù)據(jù)服務(wù)器對(duì)fv1發(fā)起后臺(tái)復(fù)制,補(bǔ)足三個(gè)副本??蛻舳死^續(xù)將f的讀寫請(qǐng)求發(fā)送到d、e、f副本服務(wù)器,對(duì)fv2的請(qǐng)求讀寫。如果讀請(qǐng)求的數(shù)據(jù)在fv2文件中存在,則fv2副本服務(wù)器直接返回結(jié)果;如果發(fā)現(xiàn)數(shù)據(jù)不存在,則需要從base的fv1讀取,它向fv1的副本服務(wù)器轉(zhuǎn)發(fā)讀請(qǐng)求。fv1副本服務(wù)器返回?cái)?shù)據(jù)給fv2副本服務(wù)器,然后由fv2副本服務(wù)器返回給客戶端。fv2副本服務(wù)器可以后臺(tái)主動(dòng)將fv1的有用數(shù)據(jù)主動(dòng)寫回到fv2副本,當(dāng)發(fā)現(xiàn)所有有效數(shù)據(jù)已經(jīng)在fv2上時(shí),可以解除對(duì)fv1的base關(guān)系。如果fv1被引用數(shù)變成0,fv1將被回收。對(duì)fv2的寫與fv1一致,需要等d、e、f副本服務(wù)器都返回成功才返回用戶成功。如果fv2寫入過程中出現(xiàn)有副本服務(wù)器異常,需要進(jìn)行前述類似的恢復(fù)讀寫過程。

上述異常的恢復(fù)過程中,時(shí)間消耗非常小,保證了快速恢復(fù)寫的低延遲。通過引用機(jī)制,隨著數(shù)據(jù)不斷寫入和后臺(tái)轉(zhuǎn)儲(chǔ),轉(zhuǎn)發(fā)會(huì)被直接讀取替代。最后,沒有日志帶來的每次寫數(shù)據(jù)的轉(zhuǎn)儲(chǔ)流量,只有在異常發(fā)生時(shí)才有轉(zhuǎn)儲(chǔ)發(fā)生,提高了系統(tǒng)的有效讀寫帶寬。

圖4示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)服務(wù)器、用戶設(shè)備以及副本服務(wù)器配合實(shí)現(xiàn)的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的設(shè)備示意圖。所述元數(shù)據(jù)服務(wù)器包括重映射請(qǐng)求接收裝置111、副本服務(wù)器重分配裝置112、第二文件副本信息反饋裝置113;所述用戶設(shè)備包括重映射請(qǐng)求發(fā)送裝置121、第二文件副本信息接收裝置122、第二文件副本文件讀寫請(qǐng)求發(fā)送裝置123;所述副本服務(wù)器包括文件副本建立請(qǐng)求接受裝置131、第二文件副本建立裝置132、第二文件副本文件讀寫請(qǐng)求接受裝置133。

其中,用戶設(shè)備中重映射請(qǐng)求發(fā)送裝置121若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;元數(shù)據(jù)服務(wù)器中重映射請(qǐng)求接收裝置111接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;元數(shù)據(jù)服務(wù)器中副本服務(wù)器重分配裝置112根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;副本服務(wù)器中文件副本建立請(qǐng)求接受裝置131接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;副本服務(wù)器中第二文件副本建立裝置132根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;元數(shù)據(jù)服務(wù)器中第二文件副本信息反饋裝置113將所述第二文件副本的信息提供至所述用戶設(shè)備;用戶設(shè)備中第二文件副本信息接收裝置122接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;用戶設(shè)備中第二文件副本文件讀寫請(qǐng)求發(fā)送裝置123向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本;副本服務(wù)器中第二文件副本文件讀寫請(qǐng)求接受裝置133接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

具體地,用戶設(shè)備中重映射請(qǐng)求發(fā)送裝置121若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;元數(shù)據(jù)服務(wù)器中重映射請(qǐng)求接收裝置111接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常。其中,所述用戶設(shè)備端即客戶端,多用于發(fā)起文件讀寫操作。所述元數(shù)據(jù)服務(wù)器端用于記錄文件屬性和對(duì)應(yīng)文件副本所在的副本服務(wù)器信息,在此副本服務(wù)器管理文件副本,提供對(duì)所管理文件副本的讀寫操作。所述目標(biāo)文件即為有讀寫需求的文件,在此用文件f代稱。所述第一文件副本是指目標(biāo)文件在寫入時(shí)所建立的寫入副本,多由用戶設(shè)備提出目標(biāo)文件的寫入請(qǐng)求以后由元數(shù)據(jù)服務(wù)器反饋指定并存儲(chǔ)在對(duì)應(yīng)的副本服務(wù)器上,在此用fv1代稱。例如,客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫文件f,元數(shù)據(jù)服務(wù)器內(nèi)部查表返回f當(dāng)前副本鏡像為fv1,即元數(shù)據(jù)服務(wù)器提供文件f至副本鏡像fv1的映射,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上。所述文件寫入異常即在目標(biāo)文件的寫入過程中發(fā)生的異常,包括但不限于網(wǎng)絡(luò)異常、副本服務(wù)器自身異常等。前述異常信息由用戶設(shè)備獲取后,用戶設(shè)備向元數(shù)據(jù)服務(wù)器發(fā)送建立新的目標(biāo)文件映射,建立新的副本與目標(biāo)文件的映射關(guān)系,其中,獲取方式包括但不限于用戶設(shè)備周期檢測(cè),或由副本服務(wù)器上報(bào)等。接上文舉例,文件f的副本fv1在寫入時(shí)a副本服務(wù)器出現(xiàn)異常,獲取異常信息后客戶端將請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射文件f的副本。用戶設(shè)備獲取第一副本文件執(zhí)行寫操作時(shí)發(fā)生的異常并與元數(shù)據(jù)服務(wù)器通信要求重新映射,會(huì)使得發(fā)生異常后重映射建立迅速,從而目標(biāo)文件得以在寫異常后迅速切換副本,繼續(xù)進(jìn)行寫入,保證快速恢復(fù)寫入縮短延遲。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述用戶設(shè)備向元數(shù)據(jù)服務(wù)器請(qǐng)求重映射的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的用戶設(shè)備向元數(shù)據(jù)服務(wù)器請(qǐng)求重映射的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

接著,元數(shù)據(jù)服務(wù)器中副本服務(wù)器重分配裝置112根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;副本服務(wù)器中文件副本建立請(qǐng)求接受裝置131接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求。即元數(shù)據(jù)服務(wù)器根據(jù)用戶設(shè)備所發(fā)送的重映射請(qǐng)求,為目標(biāo)文件建立新的副本映射,并為新的副本分配相應(yīng)的副本服務(wù)器,從而將副本建立在服務(wù)器上。所述第二文件副本是指基于元數(shù)據(jù)服務(wù)器為目標(biāo)文件分配的新的映射所建立在各副本服務(wù)器上的的鏡像副本,在此以fv2代稱。所述副本服務(wù)器有一個(gè)以上,從而可以保障副本數(shù)據(jù)的安全,在某一副本服務(wù)器損壞或丟失后有備份可查。例如接上文舉例,fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2包含了引用fv1的信息,在此假設(shè)fv2也有三個(gè)副本,對(duì)應(yīng)重新分配的d、e、f三臺(tái)副本服務(wù)器,元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本需要存放在d、e、f三臺(tái)副本服務(wù)器上的請(qǐng)求發(fā)送給相應(yīng)的副本服務(wù)器,副本服務(wù)器d、e、f對(duì)請(qǐng)求進(jìn)行接收。在此,所述第二文件副本引用所述第一文件副本是指所述第二文件副本的信息中包含第一副本文件引用或指向信息,例如,設(shè)置每個(gè)文件副本基本屬性包含對(duì)另外文件的指向信息,這里用base屬性代稱,每個(gè)文件副本會(huì)有base屬性,它指向另一個(gè)文件,fv2的base是fv1即表示f2是基于f1的內(nèi)容修改完成,在此,所述文件副本的基本屬性可以進(jìn)行設(shè)置或是在現(xiàn)有的基本屬性上進(jìn)行添加但不限于此。所述第二文件副本引用所述第一文件副本的方式包括但不限于下述舉例,在fv2的文件屬性信息由鍵值對(duì)描述:base:fv1,或采用includexxx.h等方式進(jìn)行記錄。建立第二文件副本和第一副本文件之間的引用關(guān)系,使得第二文件副本在數(shù)據(jù)讀寫時(shí)可以從第一副本文件轉(zhuǎn)存或讀取自身沒有的數(shù)據(jù),從而快速切換副本使得寫失敗帶來延時(shí)減少。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述第二文件副本引用第一文件副本的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的第二文件副本引用第一文件副本的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述副本服務(wù)器重分配裝置112根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本為空且引用所述第一文件副本。即元數(shù)據(jù)服務(wù)器根據(jù)用戶設(shè)備所發(fā)送的重映射請(qǐng)求,為目標(biāo)文件建立新的副本映射,并為新的副本分配相應(yīng)的副本服務(wù)器,從而將副本建立在服務(wù)器上,在此,所建立的新的副本即為第二文件副本,在建立初始其所存儲(chǔ)的數(shù)據(jù)為空,采用文件引用機(jī)制,這一機(jī)制即每個(gè)文件有基本屬性,指向另一個(gè)文件,這里即為每個(gè)新建立的副本文件均包含對(duì)在其之前副本文件的引用信息,例如設(shè)置每個(gè)文件有基本數(shù)據(jù),這里使用base屬性代稱,假設(shè)fv2的base是fv1,表示fv2是基于fv1的內(nèi)容修改完成。接上文舉例,如果寫入時(shí)fv1所在的副本服務(wù)器a發(fā)生異常,則客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1,其中,fv2為新建的空文件,用于接替出現(xiàn)寫入失敗的副本文件fv1,并假設(shè)fv2也有三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器上,其中,新建的fv2即為第二副本文件,其剛建立時(shí)為空即投入使用不需要等待數(shù)據(jù)的轉(zhuǎn)儲(chǔ),使得第二副本文件快速建立并接替fv1進(jìn)行目標(biāo)文件f的寫入,從而在寫入失敗進(jìn)一步降低延遲。

接著,副本服務(wù)器中第二文件副本建立裝置132根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本。即副本服務(wù)器被分配給第二文件副本后,根據(jù)元數(shù)據(jù)服務(wù)器所發(fā)送的副本建立請(qǐng)求,將第二文件副本建立在各自的服務(wù)器上。即接上文舉例,元數(shù)據(jù)服務(wù)器分配fv2三臺(tái)新的副本服務(wù)器,將fv2三個(gè)副本分別存放在d、e、f三臺(tái)副本服務(wù)器上。所建立的副本服務(wù)器上的第二副本文件均包含與第二文件副本的引用關(guān)系,即例如,fv2在三個(gè)副本服務(wù)器上的base屬性均指向fv1,從而基于任一臺(tái)副本服務(wù)器上的副本均能根據(jù)引用信息找到fv1的文件所在,進(jìn)而讀取其中的內(nèi)容。

接著,元數(shù)據(jù)服務(wù)器中第二文件副本信息反饋裝置113將所述第二文件副本的信息提供至所述用戶設(shè)備;用戶設(shè)備中第二文件副本信息接收裝置122接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息。即元數(shù)據(jù)服務(wù)器在建立文件與第二文件副本的映射后將第二文件副本的信息提供給用戶設(shè)備,其中,所述第二文件副本的信息包括但不限于第二文件副本的名稱、第二文件副本服務(wù)器相關(guān)信息等。用戶設(shè)備接收重映射后的第二副本信息,從而在第二文件副本上進(jìn)行相應(yīng)的讀寫操作。接上文舉例,客戶端基于寫失敗請(qǐng)求重映射的完整過程即為如果fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1,元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器,并將這些信息返回給客戶端,是的客戶端可以科技與第二文件副本信息進(jìn)行讀寫操作,恢復(fù)因?qū)懯≡斐傻闹袛?。因?yàn)榈诙北疚募⒂成浜蠹磳⑿畔⑻峁┙o用戶設(shè)備,使得用戶設(shè)備基于第二副本文件可以快速恢復(fù)讀寫。

優(yōu)選地,所述設(shè)備還包括副本補(bǔ)足裝置114(未示出),所述副本補(bǔ)足裝置114通過數(shù)據(jù)復(fù)制補(bǔ)足所述第一文件副本。所述第一文件副本在出現(xiàn)寫失敗后,其所在的多個(gè)副本服務(wù)器上的副本數(shù)據(jù)不一定處于一致狀態(tài),通過數(shù)據(jù)復(fù)制進(jìn)行數(shù)據(jù)補(bǔ)足,從而使得第一文件副本的有效數(shù)據(jù)不丟失,且在補(bǔ)足后副本處于可響應(yīng)狀態(tài),從而第二文件副本根據(jù)引用關(guān)系可對(duì)第一文件副本的數(shù)據(jù)進(jìn)行讀取或轉(zhuǎn)存。接上文舉例,即元數(shù)據(jù)服務(wù)器對(duì)fv1發(fā)起后臺(tái)復(fù)制,補(bǔ)足副本,從而使得fv1的有效數(shù)據(jù)丟失并處于可讀取狀態(tài),這一過程是對(duì)fv1進(jìn)行的,因此對(duì)恢復(fù)讀寫的時(shí)間基本無影響。

接著,用戶設(shè)備中第二文件副本文件讀寫請(qǐng)求發(fā)送裝置123向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本;副本服務(wù)器中第二文件副本文件讀寫請(qǐng)求接受裝置133接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。即用戶設(shè)備根據(jù)所受到的重新映射后的第二副本文件的信息進(jìn)行讀寫,讀寫時(shí)的副本為第二副本文件,因此將讀寫請(qǐng)求發(fā)送至第二副本文件所在的所有副本服務(wù)器。第二副本文件對(duì)應(yīng)的副本服務(wù)器接收到讀寫請(qǐng)求后即執(zhí)行具體的讀寫請(qǐng)求。接上文舉例,即為客戶端繼續(xù)將f的讀寫請(qǐng)求發(fā)送到d、e、f副本服務(wù)器,對(duì)fv2的請(qǐng)求讀寫,fv2開始接受所有f文件的讀寫請(qǐng)求,寫請(qǐng)求發(fā)送到d、e、f都寫成功后返回成功,讀請(qǐng)求發(fā)送到fv2副本后,如果數(shù)據(jù)范圍已存在于fv2文件內(nèi)則直接返回?cái)?shù)據(jù),否則請(qǐng)求b、c上fv1的副本來讀取數(shù)據(jù)。第二副本文件所在副本服務(wù)器接收讀寫請(qǐng)求后讀寫操作即可恢復(fù),因?yàn)榈诙北疚募母北痉?wù)器數(shù)量與之前第一副本文件等同,因此不會(huì)犧牲數(shù)據(jù)讀寫的可靠性,同時(shí)因?yàn)榈诙北疚募瑢?duì)第一副本文件的引用信息,在讀數(shù)據(jù)時(shí)可以直接從第一副本文件進(jìn)行讀取,從而節(jié)約了在重新讀寫之前的數(shù)據(jù)轉(zhuǎn)存時(shí)間,使得出現(xiàn)副本寫異??焖倩謴?fù),保證在線寫入的低延遲。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述在第二文件副本服務(wù)器上響應(yīng)讀寫請(qǐng)求的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的在第二文件副本服務(wù)器上響應(yīng)讀寫請(qǐng)求的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

圖5示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的設(shè)備中副本服務(wù)器示意圖。所述副本服務(wù)器包括文件副本建立請(qǐng)求接受裝置231、第二文件副本建立裝置232、第二文件副本文件讀寫請(qǐng)求接受裝置233、讀請(qǐng)求響應(yīng)裝置234、讀請(qǐng)求反饋裝置235、寫請(qǐng)求響應(yīng)裝置236、寫請(qǐng)求反饋裝置237。

其中,文件副本建立請(qǐng)求接受裝置231接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;第二文件副本建立裝置232根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;第二文件副本文件讀寫請(qǐng)求接受裝置233接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求;讀請(qǐng)求響應(yīng)裝置234根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的讀請(qǐng)求,讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);讀請(qǐng)求反饋裝置235將所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)返回至所述用戶設(shè)備;寫請(qǐng)求響應(yīng)裝置236根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的寫請(qǐng)求,對(duì)所述第二文件副本執(zhí)行寫操作;寫請(qǐng)求反饋裝置237若所述寫操作執(zhí)行成功,向所述用戶設(shè)備返回寫成功信息。

在此,圖5中的文件副本建立請(qǐng)求接受裝置231、第二文件副本建立裝置232、第二文件副本文件讀寫請(qǐng)求接受裝置233與圖4中的文件副本建立請(qǐng)求接受裝置131、第二文件副本建立裝置132、第二文件副本文件讀寫請(qǐng)求接受裝置133相同或相似,在此不再贅述。

具體地,副本服務(wù)器所接受讀寫請(qǐng)求中,若為讀請(qǐng)求則所述讀請(qǐng)求響應(yīng)裝置234根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的讀請(qǐng)求,讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);接著,讀請(qǐng)求反饋裝置235將所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)返回至所述用戶設(shè)備。即用戶設(shè)備在需要進(jìn)行讀操作時(shí)對(duì)第二文件副本所在的副本服務(wù)器發(fā)送度請(qǐng)求,副本服務(wù)器收到讀請(qǐng)求后進(jìn)行相應(yīng)的響應(yīng)。接上文舉例,即為客戶端向fv2所在的副本服務(wù)器d、e、f發(fā)送讀請(qǐng)求,副本服務(wù)器d、e、f接收到讀請(qǐng)求即在fv2查詢相應(yīng)數(shù)據(jù)進(jìn)行反饋,其中,fv2未有的數(shù)據(jù)可根據(jù)引用信息向之前的副本文件進(jìn)行查詢,從而對(duì)讀請(qǐng)求進(jìn)行反饋。

優(yōu)選地,所述讀請(qǐng)求響應(yīng)裝置234若所述第二文件副本包含所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),從所述第二文件副本讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);否則,從所述第一文件副本讀取所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。即當(dāng)副本服務(wù)器收到讀請(qǐng)求后會(huì)對(duì)第二文件副本的數(shù)據(jù)內(nèi)容進(jìn)行查找,若存在讀請(qǐng)求所需的所需數(shù)據(jù)則進(jìn)行相應(yīng)反饋,若不存在讀請(qǐng)求所需數(shù)據(jù)則根據(jù)第二文件副本中所包含的與第一文件副本的引用關(guān)系,到第一文件副本中進(jìn)行查找并對(duì)讀請(qǐng)求進(jìn)行反饋。其中,根據(jù)引用關(guān)系從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方法包括但不限于根據(jù)引用關(guān)系中的地址或其它指向數(shù)據(jù)向第一文件副本轉(zhuǎn)發(fā)讀請(qǐng)求,并由第一文件副本將數(shù)據(jù)反饋至第二文件副本進(jìn)而進(jìn)行進(jìn)一步反饋。接上文舉例,第二副本文件對(duì)應(yīng)的副本服務(wù)器接到讀請(qǐng)求后,如果讀請(qǐng)求的數(shù)據(jù)在fv2文件中存在,則fv2副本服務(wù)器直接返回結(jié)果;如果發(fā)現(xiàn)數(shù)據(jù)不存在,則需要從base的fv1讀取,它向fv1的副本服務(wù)器轉(zhuǎn)發(fā)讀請(qǐng)求,fv1副本服務(wù)器返回?cái)?shù)據(jù)給fv2副本服務(wù)器,然后由fv2副本服務(wù)器返回給客戶端。根據(jù)第二文件副本中包含的與第一副本文件的引用關(guān)系,將第二文件副本所沒有的數(shù)據(jù)進(jìn)行讀取并反饋,使得第二文件副本可以正常對(duì)讀請(qǐng)求進(jìn)行響應(yīng),且不需要數(shù)據(jù)預(yù)先轉(zhuǎn)存即可以進(jìn)行操作,使得第二文件副本建立后恢復(fù)響應(yīng)的時(shí)間縮短。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的從第一文件副本讀取讀請(qǐng)求對(duì)應(yīng)數(shù)據(jù)的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述設(shè)備還包括數(shù)據(jù)寫入裝置238(未示出),所述數(shù)據(jù)寫入裝置238將所述第一文件副本中的數(shù)據(jù)寫入所述第二文件副本。即將第二文件副本中沒有且第一文件副本中有的數(shù)據(jù)轉(zhuǎn)存或?qū)懟氐降诙募北?,從而使得第二文件副本的?shù)據(jù)被補(bǔ)足。其中,第一文件副本中數(shù)據(jù)寫入第二文件副本的方法包括但不限于,每次從第一副本文件讀取數(shù)據(jù)時(shí)啟動(dòng)寫入,定期利用閑時(shí)進(jìn)行寫入等。接上文舉例,fv2副本服務(wù)器可以后臺(tái)主動(dòng)將fv1的有用數(shù)據(jù)主動(dòng)寫回到fv2副本,主要采用lazy寫回,主動(dòng)寫回發(fā)生在總要從fv1拿數(shù)據(jù)的時(shí)候,相當(dāng)于readahead。在此,這一寫入可以寫入此時(shí)所需要讀的數(shù)據(jù),或就此持續(xù)進(jìn)行寫入,寫入的停止條件可以是檢測(cè)是否第一副本文件的所有有效數(shù)據(jù)是否都已經(jīng)在第二副本文件上。將所述第一文件副本中的數(shù)據(jù)寫入所述第二文件副本使得寫失敗之前的數(shù)據(jù)得以被轉(zhuǎn)存至新的副本,從而保證了數(shù)據(jù)的完整。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述第一文件副本中數(shù)據(jù)寫入第二文件副本的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的第一文件副本中數(shù)據(jù)寫入第二文件副本的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

優(yōu)選地,所述設(shè)備還包括副本引用關(guān)系刪除裝置239(未示出),所述副本引用關(guān)系刪除裝置239若所述第二文件副本已包括所述第一文件副本中所有數(shù)據(jù),刪除所述第二文件副本對(duì)所述第一文件副本的引用關(guān)系。即接上文所述,若檢測(cè)第一文件副本中所有數(shù)據(jù)均已寫入第二文件副本,則將第二文件副本中所包含的對(duì)第一文件副本的引用信息刪除。同時(shí)被引用的第一文件副本可對(duì)被引用的關(guān)系進(jìn)行記錄,在刪除時(shí),第二文件副本和第一文件上引用和被應(yīng)用信息均被刪除,第一文件副本對(duì)被引用數(shù)目進(jìn)行監(jiān)測(cè),若引用數(shù)變?yōu)榱悖瑒t可以對(duì)第一文件副本進(jìn)行回收,從而釋放相應(yīng)資源,例如,當(dāng)發(fā)現(xiàn)所有有效數(shù)據(jù)已經(jīng)在fv2上時(shí),可以解除對(duì)fv1的base關(guān)系,如果fv1被引用數(shù)變?yōu)?,fv1將被回收。

其中,第二文件副本與第一文件副本記錄引用信息采用的是文件引用機(jī)制,這一機(jī)制的使用可舉例為,每個(gè)文件會(huì)有基本屬性,例如base屬性,它指向另一個(gè)文件。假設(shè)文件f2的base是文件f1,表示f2是基于f1的內(nèi)容修改完成,當(dāng)讀f2的數(shù)據(jù)時(shí),如果訪問數(shù)據(jù)已更新到f2上,f2直接返回?cái)?shù)據(jù)給客戶端;如果f2上沒有這部分?jǐn)?shù)據(jù),表明數(shù)據(jù)當(dāng)前沒有更新,仍存儲(chǔ)在basef1文件里,f2會(huì)轉(zhuǎn)發(fā)請(qǐng)求給f1,讀取相應(yīng)的數(shù)據(jù)。f2可以選擇把從f1讀取的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到自身,這樣后續(xù)從f2讀取數(shù)據(jù)不再需要轉(zhuǎn)發(fā)。如果f2發(fā)現(xiàn)所有依賴f1的數(shù)據(jù)都已存在于自身,它可以解除與f1的base關(guān)系。這樣如果f1沒有被其它文件引用,可以被刪除回收空間。

本領(lǐng)域技術(shù)人員應(yīng)能理解上述文件引用機(jī)制僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的文件引用機(jī)制如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。

接著,副本服務(wù)器所接受讀寫請(qǐng)求中,若為寫請(qǐng)求則所述寫請(qǐng)求響應(yīng)裝置236根據(jù)所述用戶設(shè)備對(duì)所述第二文件副本的寫請(qǐng)求,對(duì)所述第二文件副本執(zhí)行寫操作;接著,寫請(qǐng)求反饋裝置237若所述寫操作執(zhí)行成功,向所述用戶設(shè)備返回寫成功信息。優(yōu)選地,所述設(shè)備還包括寫成功確認(rèn)裝置124(未示出),所述寫成功確認(rèn)裝置124若接收到所述重新分配的多個(gè)副本服務(wù)器中每個(gè)副本服務(wù)器返回的寫成功信息,確認(rèn)對(duì)應(yīng)寫請(qǐng)求完成。

即副本服務(wù)器接到用戶設(shè)備所發(fā)送的寫請(qǐng)求后,即對(duì)第二文件副本執(zhí)行寫操作,當(dāng)?shù)诙募北舅诘姆?wù)器均返回用戶設(shè)備寫成功后,用戶設(shè)備即認(rèn)為寫成功,并向用戶反饋寫成功的相關(guān)信息。接上文舉例,對(duì)fv2的寫與fv1一致,需要等d、e、f副本服務(wù)器都返回成功才返回用戶成功,從而完成多文件副本的寫入。

優(yōu)選地,所述設(shè)備還包括寫失敗反饋裝置2310(未示出),所述寫失敗反饋裝置2310若所述寫操作執(zhí)行失敗,向所述用戶設(shè)備報(bào)告文件寫入異常。即,若在對(duì)第二副本文件的寫入過程出現(xiàn)寫失敗,則反饋寫入異常至用戶設(shè)備,進(jìn)而用戶設(shè)備再次向元數(shù)據(jù)服務(wù)器申請(qǐng)重映射重復(fù)上文所述的相關(guān)步驟。接上文舉例即為,如果fv2寫入過程中出現(xiàn)有副本服務(wù)器異常,由客戶端再次申請(qǐng)fv3的副本映射,由fv3接替fv2進(jìn)行讀寫操作,fv3中包含對(duì)fv2的引用,從而繼續(xù)進(jìn)行寫失敗的快速恢復(fù)處理。

圖6示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫入的設(shè)備中元數(shù)據(jù)服務(wù)器以及用戶設(shè)備配合使用示意圖。所述元數(shù)據(jù)服務(wù)器包括讀寫請(qǐng)求接收裝置315、副本服務(wù)器分配裝置316、第一文件副本信息反饋裝置317;所述用戶設(shè)備包括讀寫請(qǐng)求發(fā)送裝置325、第一文件副本信息接收裝置326、第一文件副本文件讀寫請(qǐng)求發(fā)送裝置327。

其中,用戶設(shè)備中讀寫請(qǐng)求發(fā)送裝置325向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;元數(shù)據(jù)服務(wù)器中讀寫請(qǐng)求接收裝置315接收用戶設(shè)備發(fā)的送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;元數(shù)據(jù)服務(wù)器中副本服務(wù)器分配裝置316根據(jù)所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求為所述用戶設(shè)備分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第一文件副本;元數(shù)據(jù)服務(wù)器中第一文件副本信息反饋裝置317將所述第一文件副本的信息提供至所述用戶設(shè)備;用戶設(shè)備中第一文件副本信息接收裝置326接收所述元數(shù)據(jù)服務(wù)器基于所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求發(fā)送的、所述目標(biāo)文件的第一文件副本的信息;用戶設(shè)備中第一文件副本文件讀寫請(qǐng)求發(fā)送裝置327向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第一文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第一文件副本。

具體地,用戶設(shè)備中讀寫請(qǐng)求發(fā)送裝置325向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送關(guān)于目標(biāo)文件的讀寫請(qǐng)求;元數(shù)據(jù)服務(wù)器中讀寫請(qǐng)求接收裝置315接收用戶設(shè)備發(fā)的送關(guān)于目標(biāo)文件的讀寫請(qǐng)求。是指在初次進(jìn)行讀寫時(shí),用戶設(shè)備向元數(shù)據(jù)服務(wù)器發(fā)送讀寫請(qǐng)求,元數(shù)據(jù)服務(wù)器接收關(guān)于目標(biāo)文件的讀寫請(qǐng)求后對(duì)目標(biāo)文件的副本及其多個(gè)副本服務(wù)器進(jìn)行指定。例如假設(shè)用戶邏輯操作的文件名是f,副本服務(wù)器存儲(chǔ)f副本的名稱為fv1,元數(shù)據(jù)服務(wù)器提供f到fv1的映射關(guān)系,即客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫f,元數(shù)據(jù)服務(wù)器接收并進(jìn)行響應(yīng)。這一過程為目標(biāo)文件的讀寫啟動(dòng)和準(zhǔn)備階段,設(shè)置副本保障數(shù)據(jù)安全,防止數(shù)據(jù)的丟失和損壞。

接著,元數(shù)據(jù)服務(wù)器中副本服務(wù)器分配裝置316根據(jù)所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求為所述用戶設(shè)備分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第一文件副本。是指元數(shù)據(jù)服務(wù)器基于所接收的讀寫請(qǐng)去,為目標(biāo)文件分配副本文件并建立相應(yīng)的映射,同時(shí)指定對(duì)應(yīng)的副本所在服務(wù)器,并將所分配的副本文件在每個(gè)服務(wù)器上進(jìn)行建立。例如,客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫f的時(shí)候,元數(shù)據(jù)服務(wù)器通過內(nèi)部查表得知當(dāng)前文件副本名稱為fv1,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上。分配副本服務(wù)器是的每個(gè)副本有相應(yīng)的服務(wù)器負(fù)責(zé),從而在某一臺(tái)服務(wù)器出現(xiàn)故障而導(dǎo)致寫失敗時(shí)或數(shù)據(jù)異常時(shí),其它服務(wù)器上的副本數(shù)據(jù)不受影響。

接著,元數(shù)據(jù)服務(wù)器中第一文件副本信息反饋裝置317將所述第一文件副本的信息提供至所述用戶設(shè)備;用戶設(shè)備中第一文件副本信息接收裝置326接收所述元數(shù)據(jù)服務(wù)器基于所述關(guān)于目標(biāo)文件的讀寫請(qǐng)求發(fā)送的、所述目標(biāo)文件的第一文件副本的信息。是指用戶設(shè)備接收到元數(shù)據(jù)服務(wù)器發(fā)送的相應(yīng)的映射的第一副本文件及其服務(wù)器信息,在此這一信息中包括但不限于服務(wù)器位置信息,從而可以基于此向相應(yīng)的副本服務(wù)器發(fā)送相應(yīng)的讀寫信息,開始對(duì)目標(biāo)文件的讀寫操作。例如,元數(shù)據(jù)服務(wù)器將fv1的相關(guān)信息及其副本服務(wù)器信息發(fā)送給客戶端,客戶端基于此進(jìn)行進(jìn)一步的讀寫操作。

接著,用戶設(shè)備中第一文件副本文件讀寫請(qǐng)求發(fā)送裝置327向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第一文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第一文件副本。即用戶設(shè)備向第一副本文件所在的副本服務(wù)器發(fā)送讀寫請(qǐng)求,從而相應(yīng)的服務(wù)器進(jìn)行執(zhí)行。例如,客戶端寫入請(qǐng)求直接發(fā)給a、b、c三個(gè)fv1的副本服務(wù)器,當(dāng)全部寫成功時(shí)返回用戶成功。

綜合上文所有舉例,整體的流程整體舉例如下:客戶端向元數(shù)據(jù)服務(wù)器請(qǐng)求讀寫文件f。元數(shù)據(jù)服務(wù)器內(nèi)部查表返回f當(dāng)前副本鏡像為fv1,存儲(chǔ)在a、b、c三臺(tái)副本服務(wù)器上??蛻舳酥苯訉⒆x寫請(qǐng)求發(fā)送到a、b、c副本服務(wù)器,對(duì)fv1請(qǐng)求讀寫。所有副本寫入成功后返回用戶成功。如果fv1當(dāng)前寫入時(shí)a副本服務(wù)器出現(xiàn)異常,客戶端請(qǐng)求元數(shù)據(jù)服務(wù)器重新映射f文件為fv2,fv2當(dāng)前是空文件,它的base指向fv1。元數(shù)據(jù)服務(wù)器將fv2三個(gè)副本存放在d、e、f三臺(tái)副本服務(wù)器,并將這些信息返回給客戶端。元數(shù)據(jù)服務(wù)器對(duì)fv1發(fā)起后臺(tái)復(fù)制,補(bǔ)足三個(gè)副本??蛻舳死^續(xù)將f的讀寫請(qǐng)求發(fā)送到d、e、f副本服務(wù)器,對(duì)fv2的請(qǐng)求讀寫。如果讀請(qǐng)求的數(shù)據(jù)在fv2文件中存在,則fv2副本服務(wù)器直接返回結(jié)果;如果發(fā)現(xiàn)數(shù)據(jù)不存在,則需要從base的fv1讀取,它向fv1的副本服務(wù)器轉(zhuǎn)發(fā)讀請(qǐng)求。fv1副本服務(wù)器返回?cái)?shù)據(jù)給fv2副本服務(wù)器,然后由fv2副本服務(wù)器返回給客戶端。fv2副本服務(wù)器可以后臺(tái)主動(dòng)將fv1的有用數(shù)據(jù)主動(dòng)寫回到fv2副本,當(dāng)發(fā)現(xiàn)所有有效數(shù)據(jù)已經(jīng)在fv2上時(shí),可以解除對(duì)fv1的base關(guān)系。如果fv1被引用數(shù)變成0,fv1將被回收。對(duì)fv2的寫與fv1一致,需要等d、e、f副本服務(wù)器都返回成功才返回用戶成功。如果fv2寫入過程中出現(xiàn)有副本服務(wù)器異常,需要進(jìn)行前述類似的恢復(fù)讀寫過程。

上述異常的恢復(fù)過程中,時(shí)間消耗非常小,保證了快速恢復(fù)寫的低延遲。通過引用機(jī)制,隨著數(shù)據(jù)不斷寫入和后臺(tái)轉(zhuǎn)儲(chǔ),轉(zhuǎn)發(fā)會(huì)被直接讀取替代。最后,沒有日志帶來的每次寫數(shù)據(jù)的轉(zhuǎn)儲(chǔ)流量,只有在異常發(fā)生時(shí)才有轉(zhuǎn)儲(chǔ)發(fā)生,提高了系統(tǒng)的有效讀寫帶寬。

此外,本申請(qǐng)還提供了一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的元數(shù)據(jù)服務(wù)器,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

接收對(duì)應(yīng)用戶設(shè)備基于文件寫入異常發(fā)送的關(guān)于目標(biāo)文件的重映射請(qǐng)求,其中,所述用戶設(shè)備在對(duì)所述目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得所述文件寫入異常;

根據(jù)所述重映射請(qǐng)求為所述用戶設(shè)備重新分配多個(gè)副本服務(wù)器,并在每個(gè)副本服務(wù)器上建立所述目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

將所述第二文件副本的信息提供至所述用戶設(shè)備。

此外,本申請(qǐng)還提供了一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的用戶設(shè)備,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

若在對(duì)目標(biāo)文件的第一文件副本執(zhí)行寫操作時(shí)獲得文件寫入異常,向?qū)?yīng)元數(shù)據(jù)服務(wù)器發(fā)送對(duì)應(yīng)的重映射請(qǐng)求;

接收所述元數(shù)據(jù)服務(wù)器基于所述重映射請(qǐng)求發(fā)送的、所述目標(biāo)文件的第二文件副本的信息;

向所述元數(shù)據(jù)服務(wù)器為所述用戶設(shè)備重新分配的多個(gè)副本服務(wù)器分別發(fā)送關(guān)于所述第二文件副本的讀寫請(qǐng)求,其中,每個(gè)副本服務(wù)器分別存儲(chǔ)有所述第二文件副本。

此外,本申請(qǐng)還提供了一種用于在分布式系統(tǒng)中實(shí)現(xiàn)多文件副本讀寫的副本服務(wù)器,其中,該設(shè)備包括:

處理器;

以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:

接收對(duì)應(yīng)元數(shù)據(jù)服務(wù)器發(fā)送的文件副本建立請(qǐng)求;

根據(jù)所述文件副本建立請(qǐng)求建立對(duì)應(yīng)目標(biāo)文件的第二文件副本,其中,所述第二文件副本引用所述目標(biāo)文件的第一文件副本;

接收對(duì)應(yīng)用戶設(shè)備對(duì)所述第二文件副本的讀寫請(qǐng)求。

顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。

需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(asic)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,ram存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。

另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。

對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來表示名稱,而并不表示任何特定的順序。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1