本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別涉及一種數(shù)據(jù)處理方法及裝置。
背景技術(shù):
分布式系統(tǒng)是指將計(jì)算資源和存儲(chǔ)資源分散到不同的節(jié)點(diǎn)上,通過(guò)網(wǎng)絡(luò)將各節(jié)點(diǎn)聯(lián)系起來(lái)的系統(tǒng)。分布式系統(tǒng)可以通過(guò)管理和控制多個(gè)節(jié)點(diǎn)來(lái)完成一項(xiàng)任務(wù),但對(duì)外表現(xiàn)為一臺(tái)獨(dú)立完整的系統(tǒng),用戶感知不到分布式系統(tǒng)任務(wù)在內(nèi)部的執(zhí)行細(xì)節(jié)。
圖1為分布式系統(tǒng)的示意圖,其中,客戶端(Client)用來(lái)接收用戶需求(如寫(xiě)請(qǐng)求和讀請(qǐng)求),計(jì)算節(jié)點(diǎn)(英文:Distributed Object Process;簡(jiǎn)稱:DOP)負(fù)責(zé)分發(fā)路由,而存儲(chǔ)節(jié)點(diǎn)(英文:Key-Value Store;簡(jiǎn)稱:KVS)負(fù)責(zé)單盤(pán)管理和實(shí)際存儲(chǔ),另外,系統(tǒng)中還包括管理節(jié)點(diǎn)(英文:Distributed Object Management;簡(jiǎn)稱:DOM),負(fù)責(zé)對(duì)多個(gè)DOP和KVS進(jìn)行管理。
分布式系統(tǒng)采用多副本策略保存數(shù)據(jù),即將同一數(shù)據(jù)保存在多個(gè)KVS上,以避免KVS故障引起的數(shù)據(jù)丟失。同時(shí),系統(tǒng)還要保障同一數(shù)據(jù)的多個(gè)副本的一致性,即用多個(gè)KVS存儲(chǔ)同一數(shù)據(jù)時(shí),要保證多個(gè)KVS上存儲(chǔ)的數(shù)據(jù)一致。
NRW機(jī)制是一種兼顧多副本一致性與數(shù)據(jù)讀寫(xiě)效率的策略,其中,N表示數(shù)據(jù)所具有的副本數(shù),R表示完成讀操作所需要讀取的最小副本數(shù),W表示完成寫(xiě)操作所需要寫(xiě)入的最小副本數(shù),即一次寫(xiě)操作所需要參與的最小節(jié)點(diǎn)數(shù)目。例如,在NRW322機(jī)制中,系統(tǒng)中數(shù)據(jù)有3個(gè)不同的副本,當(dāng)進(jìn)行寫(xiě)操作時(shí),需要等待至少有2個(gè)副本完成了該寫(xiě)操作系統(tǒng)才會(huì)返回執(zhí)行成功的狀態(tài),而在進(jìn)行讀操作時(shí),則需要讀取至少兩個(gè)副本,在該兩個(gè)副本數(shù)據(jù)一致時(shí)確定 讀操作成功。
另外,分布式系統(tǒng)還采用主副本鎖定來(lái)解決寫(xiě)操作時(shí)的并發(fā)沖突,即,從存儲(chǔ)數(shù)據(jù)的多個(gè)存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)存儲(chǔ)節(jié)點(diǎn)作為主存儲(chǔ)節(jié)點(diǎn),其余存儲(chǔ)節(jié)點(diǎn)稱為備用存儲(chǔ)節(jié)點(diǎn)。在寫(xiě)入數(shù)據(jù)時(shí),計(jì)算節(jié)點(diǎn)需要先競(jìng)爭(zhēng)主存儲(chǔ)節(jié)點(diǎn)的寫(xiě)鎖權(quán)限,在獲得寫(xiě)鎖權(quán)限后向主存儲(chǔ)節(jié)點(diǎn)寫(xiě)入數(shù)據(jù),寫(xiě)入成功后再向備用節(jié)點(diǎn)寫(xiě)入數(shù)據(jù),在有設(shè)定數(shù)量的備用節(jié)點(diǎn)返回寫(xiě)成功時(shí),計(jì)算節(jié)點(diǎn)向客戶端返回寫(xiě)成功消息,余下的備用節(jié)點(diǎn)采用異步機(jī)制繼續(xù)進(jìn)行寫(xiě)數(shù)據(jù)操作。
參照?qǐng)D2,以NRW322機(jī)制為例,主存儲(chǔ)節(jié)點(diǎn)向存儲(chǔ)節(jié)點(diǎn)中寫(xiě)數(shù)據(jù)的過(guò)程包括如下步驟:步驟101,客戶端向計(jì)算節(jié)點(diǎn)發(fā)送寫(xiě)請(qǐng)求;步驟102,計(jì)算節(jié)點(diǎn)獲得主存儲(chǔ)節(jié)點(diǎn)的寫(xiě)鎖權(quán)限,并向主存儲(chǔ)節(jié)點(diǎn)寫(xiě)入數(shù)據(jù);步驟103,主存儲(chǔ)節(jié)點(diǎn)向計(jì)算節(jié)點(diǎn)返回寫(xiě)入成功消息;步驟104,計(jì)算節(jié)點(diǎn)向備用節(jié)點(diǎn)寫(xiě)入數(shù)據(jù);步驟105,任一備用節(jié)點(diǎn)(不妨設(shè)為備用節(jié)點(diǎn)2)向計(jì)算節(jié)點(diǎn)返回寫(xiě)入成功消息;步驟106,計(jì)算節(jié)點(diǎn)向客戶端返回寫(xiě)入成功消息。
實(shí)際情況中,使用者可能期望部分備用節(jié)點(diǎn)上成功保存有數(shù)據(jù),例如,數(shù)據(jù)讀取速率高的節(jié)點(diǎn)上保存有數(shù)據(jù),以便快速讀取,或者,存儲(chǔ)穩(wěn)定性高的節(jié)點(diǎn)上保存有數(shù)據(jù),以避免數(shù)據(jù)丟失,又或者,位于使用者辦公室的節(jié)點(diǎn)上保存有數(shù)據(jù)。但是,上述技術(shù)方案中,計(jì)算節(jié)點(diǎn)在收到設(shè)定數(shù)量的備用節(jié)點(diǎn)返回的寫(xiě)成功消息時(shí)向客戶端返回寫(xiě)成功消息,而不管具體是由哪些備用節(jié)點(diǎn)返回寫(xiě)成功消息,因此,可能在使用者期望的備用節(jié)點(diǎn)尚未寫(xiě)入數(shù)據(jù)時(shí),計(jì)算節(jié)點(diǎn)即向客戶端返回寫(xiě)成功消息,而之后使用者期望的備用節(jié)點(diǎn)卻由于故障未能成功寫(xiě)入數(shù)據(jù),導(dǎo)致數(shù)據(jù)沒(méi)有保存在使用者期望的節(jié)點(diǎn)上。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法及裝置,用于解決現(xiàn)有技術(shù)中數(shù)據(jù)寫(xiě)入方式不能保證使用者期望的節(jié)點(diǎn)上成功寫(xiě)入數(shù)據(jù)的問(wèn)題。
第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,包括:
計(jì)算節(jié)點(diǎn)接收客戶端發(fā)送的寫(xiě)請(qǐng)求,所述寫(xiě)請(qǐng)求包含所請(qǐng)求寫(xiě)入的數(shù)據(jù);
所述計(jì)算節(jié)點(diǎn)確定用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn),其中,所述M個(gè)備用節(jié)點(diǎn)包括N個(gè)預(yù)先指定的備用節(jié)點(diǎn),M為大于1的正整數(shù),N為小于M的正整數(shù);
所述計(jì)算節(jié)點(diǎn)向所述主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
所述計(jì)算節(jié)點(diǎn)接收所述主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息;
所述計(jì)算節(jié)點(diǎn)向所述M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
所述計(jì)算節(jié)點(diǎn)確定接收到所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息;
所述計(jì)算節(jié)點(diǎn)向所述客戶端返回寫(xiě)成功消息。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)為所述M個(gè)備用節(jié)點(diǎn)中存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的節(jié)點(diǎn)。
結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,在所述計(jì)算節(jié)點(diǎn)向所述客戶端返回寫(xiě)成功消息之后,還包括:
所述計(jì)算節(jié)點(diǎn)接收所述客戶端發(fā)送的讀請(qǐng)求,所述讀請(qǐng)求包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí);
所述計(jì)算節(jié)點(diǎn)確定存儲(chǔ)所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn);并
讀取所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)中存儲(chǔ)的與所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù),并將讀取的所述數(shù)據(jù)返回給所述客戶端。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,在所述計(jì)算節(jié)點(diǎn)將讀取的所述數(shù)據(jù)返回給所述客戶端之前,還包括:
所述計(jì)算節(jié)點(diǎn)確定所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式或第一方面的第三種可能的實(shí)現(xiàn) 方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述計(jì)算節(jié)點(diǎn)存儲(chǔ)有映射表,所述映射表保存有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,所述數(shù)據(jù)存儲(chǔ)位置包括存儲(chǔ)數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn);
所述計(jì)算節(jié)點(diǎn)確定存儲(chǔ)所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn),包括:
所述計(jì)算節(jié)點(diǎn)根據(jù)所述標(biāo)識(shí)以及所述映射表,確定存儲(chǔ)所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
第二方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理裝置,包括:
接收模塊,用于接收客戶端發(fā)送的寫(xiě)請(qǐng)求,所述寫(xiě)請(qǐng)求包含所請(qǐng)求寫(xiě)入的數(shù)據(jù);
確定模塊,用于確定用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn),其中,所述M個(gè)備用節(jié)點(diǎn)包括N個(gè)預(yù)先指定的備用節(jié)點(diǎn),M為大于1的正整數(shù),N為小于M的正整數(shù);
寫(xiě)入模塊,用于向所述主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
所述接收模塊還用于:接收到所述主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息;
所述寫(xiě)入模塊還用于:在所述接收模塊接收到所述主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息后,向所述M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
所述確定模塊還用于:確定接收到所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息;
所述裝置還包括:發(fā)送模塊,用于在所述確定模塊確定接收到所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息后,向所述客戶端返回寫(xiě)成功消息。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述確定模塊用于:確定所述M個(gè)備用節(jié)點(diǎn)中存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的N個(gè)節(jié)點(diǎn)為所述預(yù)先指定的備用節(jié)點(diǎn)。
結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種 可能的實(shí)現(xiàn)方式中,所述接收模塊還用于:接收所述客戶端發(fā)送的讀請(qǐng)求,所述讀請(qǐng)求包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí);
所述確定模塊還用于:確定存儲(chǔ)所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn);
所述裝置還包括:讀取模塊,用于讀取所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)中存儲(chǔ)的與所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù);
所述發(fā)送模塊還用于:將讀取的所述數(shù)據(jù)返回給所述客戶端。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述確定模塊還用于:確定所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同;
所述發(fā)送模塊用于:在所述確定模塊確定所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同之后,將讀取的所述數(shù)據(jù)返回給所述客戶端。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式或第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置存儲(chǔ)有映射表,所述映射表保存有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,所述數(shù)據(jù)存儲(chǔ)位置包括存儲(chǔ)數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn);所述確定模塊用于:根據(jù)所述標(biāo)識(shí)以及所述映射表,確定存儲(chǔ)所述標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的所述N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,計(jì)算節(jié)點(diǎn)在根據(jù)寫(xiě)請(qǐng)求向存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)時(shí),在向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)成功后,只有在N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中全部寫(xiě)入數(shù)據(jù)成功后才向客戶端返回寫(xiě)成功消息,其中,N個(gè)預(yù)先指定的備用節(jié)點(diǎn)可以為使用者期望的備用節(jié)點(diǎn)(例如存儲(chǔ)性能較好的節(jié)點(diǎn))。因此,上述技術(shù)方案能夠保證在用戶期望的備用節(jié)點(diǎn)上成功寫(xiě)入數(shù)據(jù),滿足使用者的需求,提高數(shù)據(jù) 讀取的穩(wěn)定性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為分布式系統(tǒng)的示意圖;
圖2為背景技術(shù)中寫(xiě)數(shù)據(jù)的流程示意圖;
圖3為本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的流程示意圖;
圖4為本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的另一流程示意圖;
圖5為本發(fā)明實(shí)施例中數(shù)據(jù)處理方法的又一流程示意圖;
圖6為本發(fā)明實(shí)施例中寫(xiě)數(shù)據(jù)的示意圖;
圖7為本發(fā)明實(shí)施例中讀數(shù)據(jù)的示意圖;
圖8為本發(fā)明實(shí)施例中數(shù)據(jù)處理裝置的結(jié)構(gòu)示意框圖;
圖9為本發(fā)明實(shí)施例中數(shù)據(jù)處理設(shè)備的結(jié)構(gòu)示意框圖。
具體實(shí)施方式
下面通過(guò)附圖以及具體實(shí)施例對(duì)本發(fā)明技術(shù)方案做詳細(xì)的說(shuō)明,應(yīng)當(dāng)理解本發(fā)明實(shí)施例以及實(shí)施例中的具體特征是對(duì)本發(fā)明技術(shù)方案的詳細(xì)的說(shuō)明,而不是對(duì)本發(fā)明技術(shù)方案的限定,在不沖突的情況下,本發(fā)明實(shí)施例以及實(shí)施例中的技術(shù)特征可以相互組合。
圖3為本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法的流程示意圖,該流程包括如下步驟:
步驟101:計(jì)算節(jié)點(diǎn)接收客戶端發(fā)送的寫(xiě)請(qǐng)求,寫(xiě)請(qǐng)求包含所請(qǐng)求寫(xiě)入的數(shù)據(jù);
步驟102:計(jì)算節(jié)點(diǎn)確定用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn),其中,M個(gè)備用節(jié)點(diǎn)包括N個(gè)預(yù)先指定的備用節(jié)點(diǎn),M為大于1的正整數(shù),N為小于M的正整數(shù);
步驟103:計(jì)算節(jié)點(diǎn)向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
步驟104:計(jì)算節(jié)點(diǎn)接收主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息;
步驟105:計(jì)算節(jié)點(diǎn)向M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
步驟106:計(jì)算節(jié)點(diǎn)確定接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息;
步驟107:計(jì)算節(jié)點(diǎn)向客戶端返回寫(xiě)成功消息。
具體的,步驟101中,客戶端根據(jù)用戶寫(xiě)入數(shù)據(jù)的請(qǐng)求請(qǐng)求生成寫(xiě)請(qǐng)求,并將寫(xiě)請(qǐng)求發(fā)送給計(jì)算節(jié)點(diǎn),而計(jì)算節(jié)點(diǎn)接收該寫(xiě)請(qǐng)求,并可從寫(xiě)請(qǐng)求中獲得所請(qǐng)求寫(xiě)入的數(shù)據(jù)。實(shí)際情況中,客戶端可以將該寫(xiě)請(qǐng)求發(fā)送給任一計(jì)算節(jié)點(diǎn),也可以根據(jù)預(yù)設(shè)規(guī)則確定發(fā)送寫(xiě)請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn),例如,將寫(xiě)請(qǐng)求發(fā)送給當(dāng)前的空閑的計(jì)算能力最大的計(jì)算節(jié)點(diǎn),或者,發(fā)送給與自己延時(shí)最短的計(jì)算節(jié)點(diǎn),等等,在此不再詳述。
步驟102中,計(jì)算節(jié)點(diǎn)確定寫(xiě)入數(shù)據(jù)的目標(biāo)存儲(chǔ)節(jié)點(diǎn),目標(biāo)存儲(chǔ)節(jié)點(diǎn)亦即用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn)。具體確定方式包括:
方式1,在所請(qǐng)求寫(xiě)入的數(shù)據(jù)為數(shù)據(jù)存儲(chǔ)系統(tǒng)之前未存儲(chǔ)的新數(shù)據(jù)時(shí),計(jì)算節(jié)點(diǎn)從存儲(chǔ)節(jié)點(diǎn)中為該數(shù)據(jù)分配主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn);或者,計(jì)算節(jié)點(diǎn)向管理節(jié)點(diǎn)發(fā)送存儲(chǔ)節(jié)點(diǎn)分配請(qǐng)求,由管理節(jié)點(diǎn)進(jìn)行存儲(chǔ)節(jié)點(diǎn)的分配,確定上述主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn)。其中,存儲(chǔ)節(jié)點(diǎn)的分配方式請(qǐng)參照現(xiàn)有技術(shù)中相關(guān)技術(shù)手段,在此不再詳述。
方式2,在所請(qǐng)求寫(xiě)入的數(shù)據(jù)為之前存儲(chǔ)在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的已存儲(chǔ)數(shù)據(jù)時(shí),客戶端發(fā)送的寫(xiě)請(qǐng)求中還包含有所請(qǐng)求寫(xiě)入數(shù)據(jù)的標(biāo)識(shí),計(jì)算節(jié)點(diǎn)上維護(hù)有數(shù)據(jù)映射表,該表中存儲(chǔ)有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,計(jì)算節(jié)點(diǎn) 在該映射表中查詢寫(xiě)請(qǐng)求中包含的所請(qǐng)求寫(xiě)入數(shù)據(jù)的標(biāo)識(shí),即可確定存儲(chǔ)所請(qǐng)求寫(xiě)入數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn)。
本發(fā)明實(shí)施例中,無(wú)論采用上述方式1還是方式2,M個(gè)備用節(jié)點(diǎn)中均包含N個(gè)預(yù)先指定的備用節(jié)點(diǎn),其中N小于M,該N個(gè)預(yù)先指定的節(jié)點(diǎn)可以是在為所請(qǐng)求寫(xiě)入數(shù)據(jù)首次進(jìn)行備用節(jié)點(diǎn)分配時(shí)進(jìn)行指定的,N個(gè)預(yù)先指定的節(jié)點(diǎn)可以根據(jù)使用者所關(guān)注的特性(如,存儲(chǔ)節(jié)點(diǎn)的讀取速率、存儲(chǔ)節(jié)點(diǎn)的穩(wěn)定性、存儲(chǔ)節(jié)點(diǎn)的壽命、存儲(chǔ)節(jié)點(diǎn)的響應(yīng)速率、存儲(chǔ)節(jié)點(diǎn)的負(fù)擔(dān),等等)進(jìn)行確定,即,從M個(gè)備用節(jié)點(diǎn)中選擇在使用者所關(guān)注特性方面符合要求(或排名靠前)的N個(gè)節(jié)點(diǎn)作為預(yù)先指定的備用節(jié)點(diǎn)。
然后,執(zhí)行步驟103,計(jì)算節(jié)點(diǎn)向確定出的主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù),寫(xiě)入成功后,主存儲(chǔ)節(jié)點(diǎn)將向計(jì)算節(jié)點(diǎn)返回寫(xiě)入成功消息,計(jì)算節(jié)點(diǎn)執(zhí)行步驟104,接收主存儲(chǔ)節(jié)點(diǎn)返回的該寫(xiě)入成功消息,確定成功在主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)。
然后,計(jì)算節(jié)點(diǎn)執(zhí)行步驟105,向M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù)。M個(gè)備用節(jié)點(diǎn)中任一節(jié)點(diǎn)在寫(xiě)入數(shù)據(jù)成功,將向計(jì)算節(jié)點(diǎn)返回寫(xiě)入成功消息。
然后,計(jì)算節(jié)點(diǎn)將接收到來(lái)自備用節(jié)點(diǎn)返回的寫(xiě)入成功消息后,并判斷該寫(xiě)入成功消息是否由預(yù)先指定的備用節(jié)點(diǎn)所返回的。只有在確定接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息后,計(jì)算節(jié)點(diǎn)才確定寫(xiě)數(shù)據(jù)成功,向客戶端返回寫(xiě)成功消息。
換言之,只要接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)返回的寫(xiě)入成功消息,而不管其余節(jié)點(diǎn)是否已經(jīng)寫(xiě)成功,計(jì)算節(jié)點(diǎn)就會(huì)向客戶端返回寫(xiě)成功消息。又或者,即使M個(gè)備用節(jié)點(diǎn)中已經(jīng)有設(shè)定數(shù)量(N)個(gè)備用節(jié)點(diǎn)返回的寫(xiě)入成功消息,只要有一個(gè)預(yù)先指定的備用節(jié)點(diǎn)尚未返回寫(xiě)入成功消息,計(jì)算節(jié)點(diǎn)也不會(huì)向客戶端返回寫(xiě)成功消息,而是等待預(yù)先指定的備用節(jié)點(diǎn)全部返回寫(xiě)入成功消息后,才向客戶端返回寫(xiě)成功消息。
上述技術(shù)方案中,計(jì)算節(jié)點(diǎn)在根據(jù)寫(xiě)請(qǐng)求向存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)時(shí),在向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)成功后,只有在N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中全部寫(xiě)入數(shù)據(jù)成功后才向客戶端返回寫(xiě)成功消息,其中,N個(gè)預(yù)先指定的備用節(jié)點(diǎn)可以為使用者期望的備用節(jié)點(diǎn)。因此,上述技術(shù)方案能夠保證用戶期望的備用節(jié)點(diǎn)上成功寫(xiě)入數(shù)據(jù),滿足使用者的需求。
可選的,本發(fā)明實(shí)施例中,N個(gè)預(yù)先指定的備用節(jié)點(diǎn)為M個(gè)備用節(jié)點(diǎn)中存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的節(jié)點(diǎn)。其中,存儲(chǔ)性能參數(shù)可以包括:讀取寫(xiě)入速率、工作穩(wěn)定性、使用壽命、運(yùn)算能力、存儲(chǔ)空間等參數(shù)。預(yù)設(shè)要求可以根據(jù)數(shù)據(jù)存儲(chǔ)系統(tǒng)的應(yīng)用環(huán)境以及使用者的具體需求進(jìn)行設(shè)定。
通過(guò)預(yù)先根據(jù)存儲(chǔ)性能參數(shù)從M個(gè)備用節(jié)點(diǎn)中確定N個(gè)存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的節(jié)點(diǎn)作為預(yù)先指定的節(jié)點(diǎn),以使在寫(xiě)數(shù)據(jù)時(shí)N個(gè)預(yù)先指定的節(jié)點(diǎn)返回寫(xiě)成功即向客戶端返回寫(xiě)成功消息,在保證數(shù)據(jù)寫(xiě)入效率的情況下,保證了數(shù)據(jù)存儲(chǔ)的穩(wěn)定性,以及后續(xù)對(duì)數(shù)據(jù)進(jìn)行讀取的速率,
可選的,本發(fā)明實(shí)施例中,步驟105之后、步驟106之前,還可以包括如下步驟:如果計(jì)算節(jié)點(diǎn)在向M個(gè)備用節(jié)點(diǎn)寫(xiě)入請(qǐng)求寫(xiě)入數(shù)據(jù)之后的設(shè)定時(shí)長(zhǎng)內(nèi)沒(méi)有接收到所有預(yù)先指定的節(jié)點(diǎn)返回的寫(xiě)入成功消息,則計(jì)算節(jié)點(diǎn)向沒(méi)有返回寫(xiě)入成功消息的預(yù)先指定的節(jié)點(diǎn)再次寫(xiě)入請(qǐng)求寫(xiě)入的數(shù)據(jù)。
上述技術(shù)方案中,能夠在預(yù)先指定的備用節(jié)點(diǎn)未能及時(shí)返回寫(xiě)入成功消息時(shí),主動(dòng)向其再次寫(xiě)入數(shù)據(jù),避免寫(xiě)數(shù)據(jù)耗時(shí)過(guò)長(zhǎng)。
可選的,本發(fā)明實(shí)施例中,在步驟103之前,還包括步驟:計(jì)算節(jié)點(diǎn)獲得主存儲(chǔ)節(jié)點(diǎn)的寫(xiě)鎖權(quán)限。通過(guò)主存儲(chǔ)節(jié)點(diǎn)的寫(xiě)鎖控制,避免多計(jì)算節(jié)點(diǎn)針對(duì)同一數(shù)據(jù)的并發(fā)操作沖突。
可選的,本發(fā)明實(shí)施例中,客戶端發(fā)送的寫(xiě)請(qǐng)求還包括所請(qǐng)求寫(xiě)入數(shù)據(jù)的標(biāo)識(shí)以及版本號(hào),在步驟103之前,還包括步驟:計(jì)算節(jié)點(diǎn)確定寫(xiě)請(qǐng)求包含的版本號(hào)大于當(dāng)前存儲(chǔ)的所請(qǐng)求寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的版本號(hào)。通過(guò)版本控制,避免有效數(shù)據(jù)被覆蓋。
進(jìn)一步,本申請(qǐng)發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中在讀數(shù)據(jù)時(shí),為了保障數(shù)據(jù)的一致性,需要讀取主存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)以及設(shè)定數(shù)量的備用節(jié)點(diǎn)的數(shù)據(jù),在驗(yàn)證數(shù)據(jù)一致性后,才能向客戶端返回請(qǐng)求讀取的數(shù)據(jù)。
沿用NRW322的例子來(lái)講,計(jì)算節(jié)點(diǎn)需要向主存儲(chǔ)節(jié)點(diǎn)以及一個(gè)備用節(jié)點(diǎn)發(fā)送讀數(shù)據(jù)請(qǐng)求,然后接收二者返回的數(shù)據(jù),并判斷兩個(gè)數(shù)據(jù)是否一致,在一致時(shí),向客戶端返回讀取的數(shù)據(jù)。
上述現(xiàn)有技術(shù)中,既需要讀取主存儲(chǔ)節(jié)點(diǎn),又需要讀取設(shè)定數(shù)量(例如,在寫(xiě)數(shù)據(jù)時(shí),接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)返回的寫(xiě)入成功消息即向客戶端返回寫(xiě)成功消息,則讀數(shù)據(jù)時(shí)需要讀取N個(gè)預(yù)先指定的備用節(jié)點(diǎn)存儲(chǔ)的所請(qǐng)求讀數(shù)據(jù))的備用節(jié)點(diǎn)存儲(chǔ)的所請(qǐng)求讀數(shù)據(jù),數(shù)據(jù)讀取量較大,帶寬占用較大,耗時(shí)也較長(zhǎng)。
針對(duì)上述問(wèn)題,參照?qǐng)D4,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法還包括如下步驟:
步驟108:計(jì)算節(jié)點(diǎn)接收客戶端發(fā)送的讀請(qǐng)求,讀請(qǐng)求包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí);
步驟109:計(jì)算節(jié)點(diǎn)確定存儲(chǔ)讀請(qǐng)求中包括的標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn);
步驟110:計(jì)算節(jié)點(diǎn)讀取N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)中存儲(chǔ)的與該標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù);
步驟111:計(jì)算節(jié)點(diǎn)將讀取的數(shù)據(jù)返回給客戶端。
具體的,步驟108中,客戶端根據(jù)用戶請(qǐng)求生成讀請(qǐng)求,并將讀請(qǐng)求發(fā)送給計(jì)算節(jié)點(diǎn),該讀請(qǐng)求中包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí)。其中,所請(qǐng)求讀數(shù)據(jù)之前的寫(xiě)入過(guò)程與當(dāng)前的讀取過(guò)程可以由不同的計(jì)算節(jié)點(diǎn)負(fù)責(zé),也可以為同一計(jì)算節(jié)點(diǎn)負(fù)責(zé),本發(fā)明實(shí)施例不予限定。
步驟109中,計(jì)算節(jié)點(diǎn)確定存儲(chǔ)讀請(qǐng)求中包括的標(biāo)識(shí)對(duì)應(yīng)的預(yù)先指定的備用節(jié)點(diǎn)的方式包括:
其一,計(jì)算節(jié)點(diǎn)向管理節(jié)點(diǎn)發(fā)送請(qǐng)求,請(qǐng)求中包括該標(biāo)識(shí),請(qǐng)求管理節(jié)點(diǎn)根據(jù)其維護(hù)的數(shù)據(jù)管理信息確定該標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)的預(yù)先指定的備用節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)接收管理節(jié)點(diǎn)返回的信息,從中確定所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
其二,計(jì)算節(jié)點(diǎn)自身存儲(chǔ)有映射表,該映射表保存有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,數(shù)據(jù)存儲(chǔ)位置包括存儲(chǔ)數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。計(jì)算節(jié)點(diǎn)根據(jù)標(biāo)識(shí)以及映射表,即可確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
步驟110中,計(jì)算節(jié)點(diǎn)從N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)讀取與該標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù),將該數(shù)據(jù)返回給客戶端。
與現(xiàn)有技術(shù)相比,上述技術(shù)方案中,計(jì)算節(jié)點(diǎn)無(wú)需既讀取主存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)又讀取設(shè)定備用節(jié)點(diǎn)上的數(shù)據(jù),而是直接讀取任一預(yù)先指定的備用節(jié)點(diǎn)上存儲(chǔ)的所請(qǐng)求讀數(shù)據(jù)即可。這樣處理可行的原因在于,在之前的寫(xiě)數(shù)據(jù)過(guò)程中,在N個(gè)預(yù)先指定的備用節(jié)點(diǎn)寫(xiě)成功時(shí)才向客戶端返回寫(xiě)成功消息,所以,預(yù)先指定的備用節(jié)點(diǎn)上存儲(chǔ)的所請(qǐng)求數(shù)據(jù)為最新寫(xiě)入的數(shù)據(jù),向客戶端返回該數(shù)據(jù)即可保證讀取數(shù)據(jù)的正確性。
通過(guò)上述技術(shù)方案,可以減少讀取數(shù)據(jù)時(shí)的數(shù)據(jù)傳輸量,減小數(shù)據(jù)占用帶寬,以及減少讀數(shù)據(jù)耗時(shí),提高數(shù)據(jù)讀取效率。
可選的,作為另一實(shí)施例,在步驟111之前,參照?qǐng)D5,還包括如下步驟:
步驟112:計(jì)算節(jié)點(diǎn)確定N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同。
具體的,計(jì)算節(jié)點(diǎn)向N個(gè)預(yù)先指定的備用節(jié)點(diǎn)發(fā)送讀取該標(biāo)識(shí)對(duì)應(yīng)數(shù)據(jù)的請(qǐng)求,接收N個(gè)節(jié)點(diǎn)返回的數(shù)據(jù)返,并判斷N個(gè)節(jié)點(diǎn)返回的數(shù)據(jù)是否一致,在一致時(shí)執(zhí)行步驟111,向客戶端返回讀取的數(shù)據(jù)。如果N個(gè)節(jié)點(diǎn)返回的數(shù)據(jù)不一致,則向客戶端報(bào)錯(cuò),采用預(yù)設(shè)的錯(cuò)誤機(jī)制進(jìn)行處理,本發(fā)明實(shí)施例在此不予詳述。
通過(guò)比較N個(gè)預(yù)先指定的備用節(jié)點(diǎn)的數(shù)據(jù)的一致性,能夠更好地保障數(shù)據(jù)的一致性,同時(shí),與現(xiàn)有技術(shù)相比,計(jì)算節(jié)點(diǎn)仍然可以少讀取主存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù),減少數(shù)據(jù)的讀取量,提高讀數(shù)據(jù)的效率。
需要說(shuō)明的是,本發(fā)明實(shí)施例中的主存儲(chǔ)節(jié)點(diǎn)以及預(yù)先指定的備用節(jié)點(diǎn)、備用節(jié)點(diǎn)等是針對(duì)具體數(shù)據(jù)而言的,針對(duì)不同的數(shù)據(jù),其對(duì)應(yīng)的主存儲(chǔ)節(jié)點(diǎn)以及預(yù)先制定的備用節(jié)點(diǎn)均可以不同。
下面以采用本發(fā)明實(shí)施例技術(shù)方案對(duì)NRW322技術(shù)的改進(jìn)方案為例,對(duì)發(fā)明予以詳述。
具體的,存儲(chǔ)系統(tǒng)通過(guò)主存儲(chǔ)節(jié)點(diǎn)、預(yù)先指定的備用節(jié)點(diǎn)1、備用節(jié)點(diǎn)2存儲(chǔ)數(shù)據(jù)A。圖6為寫(xiě)入數(shù)據(jù)A的過(guò)程的示意圖,包括如下步驟:
步驟201,客戶端向計(jì)算節(jié)點(diǎn)發(fā)送寫(xiě)入數(shù)據(jù)A的請(qǐng)求;
步驟202,計(jì)算節(jié)點(diǎn)向向主存儲(chǔ)節(jié)點(diǎn)寫(xiě)入數(shù)據(jù)A;
步驟203,主存儲(chǔ)節(jié)點(diǎn)向計(jì)算節(jié)點(diǎn)返回寫(xiě)入成功消息;
步驟204,計(jì)算節(jié)點(diǎn)向備用節(jié)點(diǎn)寫(xiě)入數(shù)據(jù)A;
步驟205,備用節(jié)點(diǎn)2向計(jì)算節(jié)點(diǎn)返回的寫(xiě)入成功消息;
步驟206,計(jì)算節(jié)點(diǎn)確定接收的寫(xiě)入成功消息不是來(lái)自預(yù)先制定的備用節(jié)點(diǎn)1;
步驟207,備用節(jié)點(diǎn)1向計(jì)算節(jié)點(diǎn)返回的寫(xiě)入成功消息;
步驟208,計(jì)算節(jié)點(diǎn)確定接收的寫(xiě)入成功消息來(lái)自預(yù)先制定的備用節(jié)點(diǎn)1,執(zhí)行步驟209;
步驟209,計(jì)算節(jié)點(diǎn)向客戶端返回寫(xiě)入成功消息。
對(duì)應(yīng)的,圖7為讀數(shù)據(jù)A的過(guò)程的示意圖,包括如下步驟:
步驟210,客戶端向計(jì)算節(jié)點(diǎn)發(fā)送讀數(shù)據(jù)A的請(qǐng)求;
步驟211,計(jì)算節(jié)點(diǎn)向預(yù)先指定的備用節(jié)點(diǎn)1發(fā)送讀數(shù)據(jù)A的請(qǐng)求;
步驟212,備用節(jié)點(diǎn)1向計(jì)算節(jié)點(diǎn)返回?cái)?shù)據(jù)A;
步驟213,計(jì)算節(jié)點(diǎn)向客戶端返回?cái)?shù)據(jù)A。
通過(guò)上述方式進(jìn)行寫(xiě)數(shù)據(jù)時(shí),能夠保證用戶指定的存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)成功,而通過(guò)上述方式讀數(shù)據(jù)時(shí),能夠提高讀數(shù)據(jù)效率,減少帶寬占用。
基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)處理裝置300,參見(jiàn)圖8,為數(shù)據(jù)處理裝置300的結(jié)構(gòu)示意框圖,包括:
接收模塊301,用于接收客戶端發(fā)送的寫(xiě)請(qǐng)求,寫(xiě)請(qǐng)求包含所請(qǐng)求寫(xiě)入的數(shù)據(jù);
確定模塊302,用于確定用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn),其中,M個(gè)備用節(jié)點(diǎn)包括N個(gè)預(yù)先指定的備用節(jié)點(diǎn),M為大于1的正整數(shù),N為小于M的正整數(shù);
寫(xiě)入模塊303,用于向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
接收模塊301還用于:接收到主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息;
寫(xiě)入模塊303還用于:在接收模塊接收到主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息后,向M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);
確定模塊302還用于:確定接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息;
裝置300還包括:發(fā)送模塊304,用于在確定模塊確定接收到N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息后,向客戶端返回寫(xiě)成功消息。
可選的,本發(fā)明實(shí)施例中,確定模塊302用于:確定M個(gè)備用節(jié)點(diǎn)中存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的N個(gè)節(jié)點(diǎn)為預(yù)先指定的備用節(jié)點(diǎn)。
可選的,本發(fā)明實(shí)施例中,接收模塊301還用于:接收客戶端發(fā)送的讀請(qǐng)求,讀請(qǐng)求包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí);
確定模塊302還用于:確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn);
裝置300還包括:讀取模塊305,用于讀取N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù);
發(fā)送模塊304還用于:將讀取的數(shù)據(jù)返回給客戶端。
可選的,確定模塊302還用于:確定N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同;
發(fā)送模塊304用于:在確定模塊確定N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同之后,將讀取的數(shù)據(jù)返回給客戶端。
可選的,本發(fā)明實(shí)施例中,裝置300存儲(chǔ)有映射表,映射表保存有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,數(shù)據(jù)存儲(chǔ)位置包括存儲(chǔ)數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn);確定模塊302用于:根據(jù)標(biāo)識(shí)以及映射表,確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
本實(shí)施例中的數(shù)據(jù)處理裝置300與前述數(shù)據(jù)處理方法是基于同一發(fā)明構(gòu)思下的兩個(gè)方面,在前面已經(jīng)對(duì)方法的實(shí)施過(guò)程作了詳細(xì)的描述,所以本領(lǐng)域技術(shù)人員可根據(jù)前述描述清楚地了解本實(shí)施例中的數(shù)據(jù)處理裝置300的結(jié)構(gòu)及實(shí)施過(guò)程,為了說(shuō)明書(shū)的簡(jiǎn)潔,在此就不再贅述了。
基于相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供數(shù)據(jù)處理設(shè)備400,圖9為數(shù)據(jù)處理設(shè)備400的結(jié)構(gòu)示意框圖,包括:總線401,以及分別連接到總線401的處理單元402、存儲(chǔ)單元403、收發(fā)機(jī)404。
其中,收發(fā)機(jī)404用于與客戶端進(jìn)行信息傳輸,以及用于與存儲(chǔ)節(jié)點(diǎn)進(jìn)行信息傳輸。
存儲(chǔ)單元403用于存儲(chǔ)指令。
處理單元402用于執(zhí)行存儲(chǔ)單元403存儲(chǔ)的指令,以便在執(zhí)行所述指令時(shí),執(zhí)行如下操作:在收發(fā)機(jī)404接收客戶端發(fā)送的寫(xiě)請(qǐng)求后,確定用于存儲(chǔ)所請(qǐng)求寫(xiě)入的數(shù)據(jù)的主存儲(chǔ)節(jié)點(diǎn)以及M個(gè)備用節(jié)點(diǎn),其中,寫(xiě)請(qǐng)求包含所請(qǐng)求寫(xiě)入的數(shù)據(jù),M個(gè)備用節(jié)點(diǎn)包括N個(gè)預(yù)先指定的備用節(jié)點(diǎn),M為大于1的正整數(shù),N為小于M的正整數(shù);通過(guò)收發(fā)機(jī)404向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);通過(guò)收發(fā)機(jī)404接收主存儲(chǔ)節(jié)點(diǎn)返回的寫(xiě)入成功消息;通過(guò)收發(fā)機(jī)404向M個(gè)備用節(jié)點(diǎn)分別寫(xiě)入所請(qǐng)求寫(xiě)入的數(shù)據(jù);確定接收到N個(gè)預(yù)先指定的備 用節(jié)點(diǎn)中每一個(gè)節(jié)點(diǎn)分別返回的寫(xiě)入成功消息;通過(guò)收發(fā)機(jī)404向客戶端返回寫(xiě)成功消息。
可選的,本實(shí)施例中,N個(gè)預(yù)先指定的備用節(jié)點(diǎn)為M個(gè)備用節(jié)點(diǎn)中存儲(chǔ)性能參數(shù)滿足預(yù)設(shè)要求的節(jié)點(diǎn)。
可選的,本實(shí)施例中,處理單元402還用于:在在收發(fā)機(jī)404接收客戶端發(fā)送的讀請(qǐng)求后,確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn),其中,該讀請(qǐng)求包含所請(qǐng)求讀數(shù)據(jù)的標(biāo)識(shí);通過(guò)收發(fā)機(jī)404讀取N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中任一節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù),并通過(guò)收發(fā)機(jī)404將讀取的數(shù)據(jù)返回給客戶端。
可選的,本實(shí)施例中,處理單元402在用于:通過(guò)收發(fā)機(jī)404將讀取的數(shù)據(jù)返回給客戶端之前,還用于:確定N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中存儲(chǔ)的與標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)均相同。
可選的,本實(shí)施例中,數(shù)據(jù)處理設(shè)備400存儲(chǔ)有映射表,映射表保存有數(shù)據(jù)標(biāo)識(shí)與數(shù)據(jù)存儲(chǔ)位置的對(duì)應(yīng)關(guān)系,數(shù)據(jù)存儲(chǔ)位置包括存儲(chǔ)數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。處理單元402用于:確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn),包括:根據(jù)標(biāo)識(shí)以及映射表,確定存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的所請(qǐng)求讀數(shù)據(jù)的N個(gè)預(yù)先指定的備用節(jié)點(diǎn)。
本實(shí)施例中的數(shù)據(jù)處理設(shè)備400與前述數(shù)據(jù)處理方法是基于同一發(fā)明構(gòu)思下的兩個(gè)方面,在前面已經(jīng)對(duì)方法的實(shí)施過(guò)程作了詳細(xì)的描述,所以本領(lǐng)域技術(shù)人員可根據(jù)前述描述清楚地了解本實(shí)施例中的數(shù)據(jù)處理設(shè)備400的結(jié)構(gòu)及實(shí)施過(guò)程,為了說(shuō)明書(shū)的簡(jiǎn)潔,在此就不再贅述了。
需要說(shuō)明的是,總線401可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(英文:Industry Standard Architecture;簡(jiǎn)稱:ISA)總線、外部設(shè)備互連(英文:Peripheral Component;簡(jiǎn)稱:PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(英文:Extended Industry Standard Architecture;簡(jiǎn)稱:EISA)總線等。總線401具體可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖9中僅用一條線表示,但并不表示僅有一根 總線或一種類(lèi)型的總線。
處理單元402可以是一個(gè)處理器,也可以是多個(gè)處理元件的統(tǒng)稱。例如,處理單元402可以是中央處理器(英文:Central Processing Unit;簡(jiǎn)稱:CPU),也可以是特定集成電路(英文:Application Specific Intergrated Circuit;簡(jiǎn)稱:ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路,例如:一個(gè)或多個(gè)微處理器(英文:digital singnal processor;簡(jiǎn)稱:DSP),或,一個(gè)或者多個(gè)現(xiàn)場(chǎng)可編程門(mén)陣列(英文:Field Programmable Gate Array;簡(jiǎn)稱:FPGA)。
存儲(chǔ)單元403可以是一個(gè)存儲(chǔ)裝置,也可以是多個(gè)存儲(chǔ)元件的統(tǒng)稱,且用于存儲(chǔ)可執(zhí)行程序代碼、接入網(wǎng)設(shè)備或終端運(yùn)行所需要參數(shù)、數(shù)據(jù)等。且存儲(chǔ)器可以包括隨機(jī)存儲(chǔ)器(英文:Random Access Memory;簡(jiǎn)稱:RAM),也可以包括非易失性存儲(chǔ)器(non-volatile memory),例如磁盤(pán)存儲(chǔ)器,閃存(Flash)等。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,計(jì)算節(jié)點(diǎn)在根據(jù)寫(xiě)請(qǐng)求向存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)時(shí),在向主存儲(chǔ)節(jié)點(diǎn)中寫(xiě)入數(shù)據(jù)成功后,只有在N個(gè)預(yù)先指定的備用節(jié)點(diǎn)中全部寫(xiě)入數(shù)據(jù)成功后才向客戶端返回寫(xiě)成功消息,其中,N個(gè)預(yù)先指定的備用節(jié)點(diǎn)可以為使用者期望的備用節(jié)點(diǎn)。因此,上述技術(shù)方案能夠保證用戶期望的備用節(jié)點(diǎn)上成功寫(xiě)入數(shù)據(jù),滿足使用者的需求。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和 /或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。