數(shù)據(jù)包上傳方法、客戶端、節(jié)點(diǎn)、信息服務(wù)器及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)包上傳方法,屬于計(jì)算機(jī)領(lǐng)域。所述方法包括:將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,所述存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn);接收所述主節(jié)點(diǎn)返回的上傳失敗響應(yīng)或上傳成功響應(yīng);若接收到所述上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則,重新建立存儲(chǔ)流水線并將所述數(shù)據(jù)包上傳到所述重新建立的存儲(chǔ)流水線。本發(fā)明通過上傳數(shù)據(jù)包后接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng),若接收到上傳失敗響應(yīng),則重新建立存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
【專利說明】數(shù)據(jù)包上傳方法、客戶端、節(jié)點(diǎn)、信息服務(wù)器及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種數(shù)據(jù)包上傳方法、客戶端、節(jié)點(diǎn)、信息服務(wù)器及系統(tǒng)。
【背景技術(shù)】
[0002]分布式文件系統(tǒng)是指文件系統(tǒng)管理的物理存儲(chǔ)資源存儲(chǔ)在不同的節(jié)點(diǎn)上,各節(jié)點(diǎn)通過計(jì)算機(jī)網(wǎng)絡(luò)相連,其在工業(yè)界的應(yīng)用非常廣泛。在分布式文件系統(tǒng)中,為了保證數(shù)據(jù)的安全性,往往在上傳文件時(shí),將文件分成一至多個(gè)文件塊,并為每個(gè)文件塊保存多個(gè)副本,每個(gè)副本保存在不同的節(jié)點(diǎn)上,上傳文件時(shí),可以將文件塊分成一至多個(gè)數(shù)據(jù)包,并將數(shù)據(jù)包依次上傳到各個(gè)節(jié)點(diǎn)。
[0003]以HDFS (Hadoop Distributed File System,Hadoop 分布式文件系統(tǒng))為例,現(xiàn)有的數(shù)據(jù)包上傳方法如下:首先,客戶端獲取節(jié)點(diǎn)列表,并根據(jù)該節(jié)點(diǎn)列表生成存儲(chǔ)流水線,其中,存儲(chǔ)流水線上的第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其他后續(xù)節(jié)點(diǎn)均為從節(jié)點(diǎn);其次,客戶端將數(shù)據(jù)包依次發(fā)送到建立的存儲(chǔ)流水線上,對(duì)于同一個(gè)數(shù)據(jù)包,節(jié)點(diǎn)按照各自在流水線上的順序依次存儲(chǔ)該數(shù)據(jù)包的副本。請(qǐng)參見圖1所示的數(shù)據(jù)包上傳流程圖,其展示了一個(gè)文件塊的5個(gè)數(shù)據(jù)包在3個(gè)節(jié)點(diǎn)上的存儲(chǔ)過程。其中粗斜線代表數(shù)據(jù)包,細(xì)斜線代表建立和關(guān)閉流水線的控制消息,虛斜線代表數(shù)據(jù)包的回應(yīng)消息,垂直方向的粗箭頭代表客戶端以及三個(gè)節(jié)點(diǎn)。tO到tl是流水線建立階段;tl到t2是數(shù)據(jù)包上傳階段,其中tl發(fā)送第一個(gè)數(shù)據(jù)包,t2收到最后一個(gè)數(shù)據(jù)包的響應(yīng),其中,發(fā)送數(shù)據(jù)包時(shí),不需要等待上一個(gè)數(shù)據(jù)包的響應(yīng)即可以發(fā)送下一個(gè)數(shù)據(jù)包,客戶端可以配置已發(fā)送到流水線但是還沒有收到回應(yīng)的數(shù)據(jù)包總數(shù);t2到t3是流水線關(guān)閉階段。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]現(xiàn)有的數(shù)據(jù)包上傳方法,當(dāng)流水線上某一個(gè)從節(jié)點(diǎn)發(fā)生錯(cuò)誤,比如某一從節(jié)點(diǎn)崩潰時(shí),客戶端上傳數(shù)據(jù)包的過程不會(huì)中止,因而會(huì)造成存儲(chǔ)流水線上各節(jié)點(diǎn)之間數(shù)據(jù)不一致的情況,此時(shí),存儲(chǔ)流水線重建過程較為復(fù)雜,系統(tǒng)復(fù)雜度較高。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)中數(shù)據(jù)恢復(fù)較為復(fù)雜的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)包上傳方法、客戶端、節(jié)點(diǎn)、信息服務(wù)器及系統(tǒng)。所述技術(shù)方案如下:
[0007]—方面,提供了一種數(shù)據(jù)包上傳方法,所述方法包括:
[0008]將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便所述存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將所述數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,所述存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn);
[0009]接收所述主節(jié)點(diǎn)返回的上傳失敗響應(yīng)或上傳成功響應(yīng);
[0010]若接收到所述上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則,重新建立存儲(chǔ)流水線并將所述數(shù)據(jù)包上傳到所述重新建立的存儲(chǔ)流水線。[0011]另一方面,提供了一種數(shù)據(jù)包上傳方法,所述方法包括:
[0012]接收客戶端上傳的數(shù)據(jù)包,將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,并更新所述文件塊副本的狀態(tài)信息;
[0013]將所述數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)點(diǎn),并接收所述一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有所述一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息;
[0014]將所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便所述信息服務(wù)器根據(jù)所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0015]接收所述信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng);
[0016]若接收到所述信息服務(wù)器返回的寫入成功響應(yīng),則向所述客戶端發(fā)送上傳成功響應(yīng);若接收到所述信息服務(wù)器返回的寫入失敗響應(yīng),則向所述客戶端發(fā)送上傳失敗響應(yīng)。
[0017]另一方面,提供了一種數(shù)據(jù)包上傳方法,所述方法包括:
[0018]接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,并更新所述文件塊副本的狀態(tài)信息;
[0019]向所述存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有更新的所述文件塊副本的狀態(tài)信息。
[0020]另一方面,提供了一種數(shù)據(jù)包上傳方法,所述方法包括:
[0021]接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的所述存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息;
[0022]根據(jù)接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0023]若判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則向所述主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng),否則,向所述主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng)。
[0024]另一方面,提供了一種客戶端,所述客戶端包括:上傳模塊、響應(yīng)接收模塊和流水線建立模塊;
[0025]所述上傳模塊,用于將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便所述存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將所述數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,所述存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)
占.[0026]所述響應(yīng)接收模塊,用于接收所述主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng);
[0027]若所述響應(yīng)接收模塊接收到所述上傳成功響應(yīng),則所述上傳模塊,用于繼續(xù)上傳下一數(shù)據(jù)包;
[0028]若所述響應(yīng)接收模塊接收到所述上傳失敗響應(yīng),則所述流水線建立模塊,用于重新建立存儲(chǔ)流水線;
[0029]所述上傳模塊,還用于將所述數(shù)據(jù)包上傳到所述重新建立的存儲(chǔ)流水線。
[0030]另一方面,提供了一種主節(jié)點(diǎn),所述主節(jié)點(diǎn)包括:數(shù)據(jù)包接收模塊、寫入模塊、信息更新模塊、數(shù)據(jù)包發(fā)送模塊、第一響應(yīng)接收模塊、信息發(fā)送模塊、第二響應(yīng)接收模塊和第一響應(yīng)發(fā)送模塊;[0031]所述數(shù)據(jù)包接收模塊,用于接收客戶端上傳的數(shù)據(jù)包;
[0032]所述寫入模塊,用于將所述數(shù)據(jù)包接收模塊接收到的數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0033]所述信息更新模塊,用于更新所述文件塊副本的狀態(tài)信息;
[0034]所述數(shù)據(jù)包發(fā)送模塊,用于將所述數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)
占.[0035]所述第一響應(yīng)接收模塊,用于接收所述一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有所述一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息;
[0036]所述信息發(fā)送模塊,用于將所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便所述信息服務(wù)器根據(jù)所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0037]所述第二響應(yīng)接收模塊,用于接收所述信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng);
[0038]若所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入成功響應(yīng),則所述第一響應(yīng)發(fā)送模塊,用于向所述客戶端發(fā)送上傳成功響應(yīng);
[0039]若所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入失敗響應(yīng),則所述第一響應(yīng)發(fā)送模塊,用于向所述客戶端發(fā)送上傳失敗響應(yīng)。
[0040]另一方面,提供了一種從節(jié)點(diǎn),所述從節(jié)點(diǎn)包括:
[0041]數(shù)據(jù)包接收模塊,用于接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包;
[0042]寫入模塊,用于將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0043]信息更新模塊,用于更新所述文件塊副本的狀態(tài)信息;
[0044]響應(yīng)發(fā)送模塊,用于向所述存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有更新的所述文件塊副本的狀態(tài)信息。
[0045]另一方面,提供了一種信息服務(wù)器,所述信息服務(wù)器包括:
[0046]信息接收模塊、判斷模塊和響應(yīng)發(fā)送模塊;
[0047]所述信息接收模塊,用于接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的所述存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息;
[0048]所述判斷模塊,用于根據(jù)接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0049]若所述判斷模塊判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則所述響應(yīng)發(fā)送模塊,用于向所述主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng);
[0050]若所述判斷模塊判斷所述存儲(chǔ)流水線中沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則所述響應(yīng)發(fā)送模塊,用于向所述主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng)。
[0051]再一方面,提供了一種分布式文件系統(tǒng),該分布式文件系統(tǒng)包括上述客戶端、主節(jié)點(diǎn)、一至多個(gè)從節(jié)點(diǎn)以及信息服務(wù)器。
[0052]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0053]通過上傳數(shù)據(jù)包后接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng),若接收到上傳失敗響應(yīng)響應(yīng),則重新建立的存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
【專利附圖】
【附圖說明】
[0054]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0055]圖1是本發(fā)明【背景技術(shù)】提供的數(shù)據(jù)包上傳流程圖;
[0056]圖2是本發(fā)明實(shí)施例一提供的數(shù)據(jù)包上傳方法的方法流程圖;
[0057]圖3是本發(fā)明實(shí)施例二提供的數(shù)據(jù)包上傳方法的方法流程圖;
[0058]圖4是本發(fā)明實(shí)施例三提供的數(shù)據(jù)包上傳方法的方法流程圖;
[0059]圖5是本發(fā)明實(shí)施例四提供的數(shù)據(jù)包上傳方法的方法流程圖;
[0060]圖6是本發(fā)明實(shí)施例五提供的數(shù)據(jù)包上傳方法的方法流程圖;
[0061]圖7是本發(fā)明實(shí)施例六提供的客戶端的裝置結(jié)構(gòu)圖;
[0062]圖8是本發(fā)明實(shí)施例七提供的客戶端的裝置結(jié)構(gòu)圖;
[0063]圖9是本發(fā)明實(shí)施例八提供的主節(jié)點(diǎn)的裝置結(jié)構(gòu)圖;
[0064]圖10是本發(fā)明實(shí)施例九提供的從節(jié)點(diǎn)的裝置結(jié)構(gòu)圖;
[0065]圖11是本發(fā)明實(shí)施例十提供的信息服務(wù)器的裝置結(jié)構(gòu)圖;
[0066]圖12是本發(fā)明實(shí)施例十一提供的分布式文件系統(tǒng)的系統(tǒng)構(gòu)成圖。
【具體實(shí)施方式】
[0067]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0068]實(shí)施例一
[0069]請(qǐng)參見圖2,其示出了本發(fā)明實(shí)施例一提供的數(shù)據(jù)包上傳方法的方法流程圖,該方法可以用于將文件數(shù)據(jù)包上傳至分布式文件系統(tǒng)。該數(shù)據(jù)包上傳方法可以包括:
[0070]步驟101,將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn);
[0071]步驟102,接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng);
[0072]步驟103,若接收到上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則,重新建立存儲(chǔ)流水線并將數(shù)據(jù)包上傳到重新建立的存儲(chǔ)流水線。
[0073]綜上所述,本發(fā)明實(shí)施例一提供的數(shù)據(jù)包上傳方法,通過上傳數(shù)據(jù)包后接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng),若接收到上傳失敗響應(yīng)響應(yīng),則重新建立的存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0074]實(shí)施例二
[0075]為了對(duì)上述實(shí)施例一提供的數(shù)據(jù)包上傳方法做進(jìn)一步描述,請(qǐng)參見圖3,其示出了本發(fā)明實(shí)施例二提供的數(shù)據(jù)包上傳方法的方法流程圖,該方法可以應(yīng)用于將文件數(shù)據(jù)包上傳至分布式文件系統(tǒng)的客戶端中。該數(shù)據(jù)包上傳方法可以包括:
[0076]步驟201,客戶端判斷是否已經(jīng)建立有待上傳數(shù)據(jù)包對(duì)應(yīng)的存儲(chǔ)流水線,若是,進(jìn)入步驟203,否則,進(jìn)入步驟202 ;
[0077]當(dāng)有數(shù)據(jù)包需要上傳時(shí),客戶端首先判斷上傳該數(shù)據(jù)包的存儲(chǔ)流水線是否已經(jīng)建立,如果時(shí),則復(fù)用該存儲(chǔ)流水線,否則,新建立一條存儲(chǔ)流水線。
[0078]步驟202,客戶端從信息服務(wù)器獲取待上傳數(shù)據(jù)包對(duì)應(yīng)的文件塊副本所在的節(jié)點(diǎn)的列表,根據(jù)獲取的節(jié)點(diǎn)的列表生成該存儲(chǔ)流水線;
[0079]如果判斷沒有建立存儲(chǔ)流水線,或者存儲(chǔ)流水線中有節(jié)點(diǎn)出錯(cuò),則客戶端向信息服務(wù)器獲取的待上傳數(shù)據(jù)包對(duì)應(yīng)的文件塊副本所在的節(jié)點(diǎn)的列表,并根據(jù)獲取的節(jié)點(diǎn)的列表生成存儲(chǔ)流水線。
[0080]具體的,保存在分布式文件系統(tǒng)中的文件由一至多個(gè)文件塊組成,每個(gè)文件塊的數(shù)據(jù)量有限制(比如,文件塊最大數(shù)據(jù)量為64M),分布式文件系統(tǒng)中的信息服務(wù)器保存有各文件的Meta信息,其中,文件的Meta信息包括:該文件ID (Identity,標(biāo)識(shí)碼)和總數(shù)據(jù)量,該文件各文件塊的數(shù)據(jù)量、各文件塊的副本所在節(jié)點(diǎn)的列表(比如節(jié)點(diǎn)IP地址列表),各文件塊的標(biāo)識(shí),各文件塊校驗(yàn)碼等等??蛻舳藢⒋蟼鞯臄?shù)據(jù)包對(duì)應(yīng)文件的ID發(fā)送給信息服務(wù)器,信息服務(wù)器根據(jù)該文件ID,將該文件最后一個(gè)文件塊的副本所在節(jié)點(diǎn)的列表發(fā)送給客戶端,客戶端根據(jù)信息服務(wù)器發(fā)送的節(jié)點(diǎn)的列表生成存儲(chǔ)流水線。如果該數(shù)據(jù)包時(shí)某文件的第一個(gè)數(shù)據(jù)包,則信息服務(wù)器為該文件分配一個(gè)節(jié)點(diǎn)列表,并將新分配的節(jié)點(diǎn)列表發(fā)送給客戶端。
[0081]其中,生成的存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn)。
[0082]步驟203,客戶端將一個(gè)待上傳的數(shù)據(jù)包上傳到該存儲(chǔ)流水線;
[0083]具體的,客戶端將一個(gè)待上傳的數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的主節(jié)點(diǎn),該數(shù)據(jù)包自主節(jié)點(diǎn)開始,按照該存儲(chǔ)流水線上的節(jié)點(diǎn)排列順序在各節(jié)點(diǎn)上依次傳遞,以便各節(jié)點(diǎn)將該數(shù)據(jù)包的副本寫入各自本地存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本。對(duì)于該存儲(chǔ)流水線上的任一節(jié)點(diǎn),如果該數(shù)據(jù)包對(duì)應(yīng)一個(gè)的已經(jīng)存在但未寫滿的文件塊副本,則該節(jié)點(diǎn)將該數(shù)據(jù)包的副本寫入該未寫滿的文件塊副本;如果該數(shù)據(jù)包對(duì)應(yīng)一個(gè)新的文件塊副本,則信息服務(wù)器會(huì)為該新文件塊分配一個(gè)全局唯一的ID,該節(jié)點(diǎn)可以根據(jù)該新分配的文件塊ID在本地建立該新文件塊的副本,并將該數(shù)據(jù)包的副本寫入新建立的文件塊副本。
[0084]步驟204,客戶端接收該存儲(chǔ)流水線的主節(jié)點(diǎn)返回的上傳失敗響應(yīng)或上傳成功響應(yīng),若客戶端接收到上傳成功響應(yīng),進(jìn)入步驟205,否則,返回步驟202 ;
[0085]數(shù)據(jù)包上傳存儲(chǔ)流水線之后,主節(jié)點(diǎn)可以收集各從節(jié)點(diǎn)各自存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息,并將收集到的各從節(jié)點(diǎn)各自存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息以及自身存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息發(fā)送給信息服務(wù)器,由信息服務(wù)器據(jù)此判斷該存儲(chǔ)流水線上是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,如果信息服務(wù)器判斷有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則主節(jié)點(diǎn)向客戶端發(fā)送上傳失敗響應(yīng),如果信息服務(wù)器判斷沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則主節(jié)點(diǎn)向客戶端發(fā)送上傳成功響應(yīng)。同時(shí),當(dāng)信息服務(wù)器判斷有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),存儲(chǔ)流水線上的主節(jié)點(diǎn)以及未發(fā)生錯(cuò)誤的從節(jié)點(diǎn)還可以將該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài)。
[0086]如果客戶端接收到主節(jié)點(diǎn)返回的上傳成功響應(yīng),則進(jìn)入步驟205,如果客戶端接收到主節(jié)點(diǎn)返回的上傳失敗響應(yīng),則返回步驟202,重新從信息服務(wù)器獲取節(jié)點(diǎn)列表并生成存儲(chǔ)流水線。
[0087]優(yōu)選的,如果客戶端上傳數(shù)據(jù)包時(shí)檢測(cè)到主節(jié)點(diǎn)發(fā)生錯(cuò)誤,則同樣返回步驟202重新生成存儲(chǔ)流水線。
[0088]步驟205,客戶端判斷數(shù)據(jù)包是否上傳完畢,若是,返回步驟203,否則,流程結(jié)束。
[0089]如果客戶端接收到主節(jié)點(diǎn)返回的上傳成功響應(yīng),則客戶端可以判斷數(shù)據(jù)包是否上傳完畢,如果是,流程結(jié)束,否則,返回步驟203繼續(xù)上傳下一數(shù)據(jù)包。
[0090]綜上所述,本發(fā)明實(shí)施例二提供的數(shù)據(jù)包上傳方法,通過在將一個(gè)數(shù)據(jù)包上傳存儲(chǔ)流水線之后,等待存儲(chǔ)流水線上的主節(jié)點(diǎn)返回上傳成功響應(yīng)或上傳失敗響應(yīng),如接收到上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則重新建立存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0091]實(shí)施例三
[0092]對(duì)應(yīng)于上述實(shí)施例二提供的數(shù)據(jù)包上傳方法中信息服務(wù)器判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤的步驟,請(qǐng)參見圖4,其示出了本發(fā)明實(shí)施例三提供的一種數(shù)據(jù)包上傳方法,該方法用于將客戶端上傳的數(shù)據(jù)包寫入存儲(chǔ)流水線上各節(jié)點(diǎn)本地存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本。該數(shù)據(jù)包上傳方法可以包括:
[0093]步驟301,主節(jié)點(diǎn)接收客戶端上傳的數(shù)據(jù)包,并將數(shù)據(jù)包的副本寫入本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0094]如果該數(shù)據(jù)包對(duì)應(yīng)一個(gè)的已經(jīng)存在但未寫滿的文件塊副本,則主節(jié)點(diǎn)將該數(shù)據(jù)包的副本寫入該未寫滿的文件塊副本;如果該數(shù)據(jù)包對(duì)應(yīng)一個(gè)新的文件塊副本,則信息服務(wù)器會(huì)為該新文件塊分配一個(gè)全局唯一的ID,主節(jié)點(diǎn)可以根據(jù)該新分配的文件塊ID在本地建立該新文件塊的副本,并將該數(shù)據(jù)包的副本寫入新建立的文件塊副本。
[0095]步驟302,主節(jié)點(diǎn)更新該文件塊副本的狀態(tài)信息,其中,狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息;
[0096]具體的,主節(jié)點(diǎn)可以在每個(gè)文件塊副本的文件頭中保存該文件塊的兩個(gè)狀態(tài)--第一狀態(tài)信息new_state和第二狀態(tài)信息old_state。其中,new_state為該文件塊寫入該數(shù)據(jù)包之后的狀態(tài)信息,old_state為該文件塊寫入該數(shù)據(jù)包之前的狀態(tài)信息。其中,文件塊副本的狀態(tài)信息具體可以包括:該文件塊副本對(duì)應(yīng)文件的ID、該文件塊副本的ID、該文件塊副本的數(shù)據(jù)量、該文件塊副本所在節(jié)點(diǎn)的列表(比如節(jié)點(diǎn)IP地址列表),該文件塊副本的校驗(yàn)碼等等。
[0097]具體的,主節(jié)點(diǎn)將原有狀態(tài)信息中的第一狀態(tài)信息new_state更新為第二狀態(tài)信息old_state ;主節(jié)點(diǎn)根據(jù)更新后的old_state以及該數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的new_
St&tΘ O
[0098]步驟303,將數(shù)據(jù)包發(fā) 送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)點(diǎn);
[0099]主節(jié)點(diǎn)按照該存儲(chǔ)流水線上的節(jié)點(diǎn)排列順序,將該數(shù)據(jù)包發(fā)送給下一個(gè)從節(jié)點(diǎn),以便該從節(jié)點(diǎn)將該數(shù)據(jù)包的副本寫入自身本地存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本。
[0100]步驟304,接收該一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)數(shù)據(jù)包的響應(yīng),該對(duì)數(shù)據(jù)包的響應(yīng)中攜帶有一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息;
[0101]主節(jié)點(diǎn)向下一從節(jié)點(diǎn)發(fā)送數(shù)據(jù)包之后,等待接收該流水線上各從節(jié)點(diǎn)返回的對(duì)該數(shù)據(jù)包的響應(yīng),其中,對(duì)該數(shù)據(jù)包的響應(yīng)中攜帶有更新后的各從節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息。
[0102]步驟305,將更新的狀態(tài)信息和接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便信息服務(wù)器根據(jù)更新的狀態(tài)信息和接收到的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0103]主節(jié)點(diǎn)可以在向下一從節(jié)點(diǎn)發(fā)送數(shù)據(jù)包后開始計(jì)時(shí),并在預(yù)定時(shí)間之后,將自身更新的狀態(tài)信息和接收到的對(duì)該數(shù)據(jù)包的響應(yīng)中攜帶的狀態(tài)信息發(fā)送給信息服務(wù)器。
[0104]步驟306,接收信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng);
[0105]如果信息服務(wù)器若判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則可以向主節(jié)點(diǎn)返回寫入失敗響應(yīng),如果判斷存儲(chǔ)流水線中沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則可以向主節(jié)點(diǎn)返回寫入成功響應(yīng)。
[0106]步驟307,若接收到信息服務(wù)器返回的寫入成功響應(yīng),則向客戶端發(fā)送上傳成功響應(yīng);
[0107]步驟308,若接收到信息服務(wù)器返回的寫入失敗響應(yīng),則向客戶端發(fā)送上傳失敗響應(yīng);
[0108]步驟309,根據(jù)更新后的第二狀態(tài)信息將文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài);
[0109]如果主節(jié)點(diǎn)接收到信息服務(wù)器返回的寫入失敗響應(yīng),則可以根據(jù)更新后該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的第二狀態(tài)信息old_state將該文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài)。具體的,主節(jié)點(diǎn)可以根據(jù)old_state中的文件塊副本數(shù)據(jù)量將該文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài)。
[0110]需要說明的是,主節(jié)點(diǎn)將該文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài)時(shí),還需要重新將第二狀態(tài)信息old_state恢復(fù)為第一狀態(tài)信息new_state,此時(shí),恢復(fù)后的文件塊副本的狀態(tài)信息中的第二狀態(tài)信息old_state可以為空。
[0111]步驟310,向一至多個(gè)從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知,以便一至多個(gè)從節(jié)點(diǎn)根據(jù)自身更新后的第二狀態(tài)信息將各自存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài)。
[0112]在將該文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài)的同時(shí),主節(jié)點(diǎn)還可以向存儲(chǔ)流水線上的各從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知。
[0113]綜上所述,本發(fā)明實(shí)施例三提供的數(shù)據(jù)包上傳方法,通過在寫入數(shù)據(jù)包之后更新數(shù)據(jù)包對(duì)應(yīng)的狀態(tài)信息,并接收各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng),并將自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息發(fā)送給信息服務(wù)器,以便信息服務(wù)器根據(jù)主節(jié)點(diǎn)自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,同時(shí),在信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),將該數(shù)據(jù)包對(duì)應(yīng)文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài),達(dá)到了降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0114]實(shí)施例四[0115]為了對(duì)上述實(shí)施例二和三中的從節(jié)點(diǎn)做進(jìn)一步描述,請(qǐng)參見圖5,其示出了本發(fā)明實(shí)施例四提供的一種數(shù)據(jù)包上傳方法的方法流程圖,該數(shù)據(jù)包上傳方法可以應(yīng)用于將客戶端上傳的數(shù)據(jù)包寫入存儲(chǔ)流水線中的從節(jié)點(diǎn)。該數(shù)據(jù)包上傳方法可以包括:
[0116]步驟401,從節(jié)點(diǎn)接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,將該數(shù)據(jù)包的副本寫入本地存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0117]其中,上一節(jié)點(diǎn)可以是存儲(chǔ)流水線的主節(jié)點(diǎn),也可以是另一從節(jié)點(diǎn)。
[0118]步驟402,從節(jié)點(diǎn)更新該文件塊副本的狀態(tài)信息;
[0119]狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息,其中,第一狀態(tài)信息為文件塊寫入數(shù)據(jù)包之后的狀態(tài)信息,第二狀態(tài)信息為文件塊寫入數(shù)據(jù)包之前的狀態(tài)信息。從節(jié)點(diǎn)將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息;并根據(jù)更新后的第二狀態(tài)信息以及數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息。具體的更新方法請(qǐng)見上述實(shí)施例三中的步驟302,此處不再贅述。
[0120]步驟403,從節(jié)點(diǎn)向存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)該數(shù)據(jù)包的響應(yīng),對(duì)該數(shù)據(jù)包的響應(yīng)中攜帶有更新后的文件塊副本的狀態(tài)信息。
[0121]為了便于信息服務(wù)器根據(jù)各從節(jié)點(diǎn)本地存儲(chǔ)的文件塊副本的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,從節(jié)點(diǎn)在更新接收到的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息后,需要向存儲(chǔ)流水線的主節(jié)點(diǎn)返回?cái)y帶有自身本地存儲(chǔ)的,該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息的響應(yīng)。
[0122]步驟404,從節(jié)點(diǎn)接收主節(jié)點(diǎn)發(fā)送的狀態(tài)恢復(fù)通知,根據(jù)更新后的第二狀態(tài)信息將文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài);
[0123]當(dāng)信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),主節(jié)點(diǎn)可以向從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知,此時(shí),從節(jié)點(diǎn)可以根據(jù)更新后的第二狀態(tài)信息將對(duì)應(yīng)的文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài)。具體的文件塊副本恢復(fù)方法請(qǐng)參見步驟308,此處不再贅述。
[0124]優(yōu)選的,如果該從節(jié)點(diǎn)不是該存儲(chǔ)流水線的最后一個(gè)節(jié)點(diǎn),則該從節(jié)點(diǎn)將該數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線中的下一個(gè)從節(jié)點(diǎn),否則不發(fā)送該數(shù)據(jù)包。
[0125]綜上所述,本發(fā)明實(shí)施例四提供的數(shù)據(jù)包上傳方法,通過向主節(jié)點(diǎn)返回?cái)y帶有更新后的文件塊副本的狀態(tài)信息的響應(yīng),以便信息處理器判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,同時(shí),在信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí)將數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)至寫入該數(shù)據(jù)包之前的狀態(tài),達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0126]實(shí)施例五
[0127]為了從信息服務(wù)器的角度對(duì)上述實(shí)施例二和三提供的數(shù)據(jù)包上傳方法做進(jìn)一步描述,請(qǐng)參見圖6,其示出了本發(fā)明實(shí)施例五提供的一種數(shù)據(jù)包上傳方法的方法流程圖。該方法可以包括:
[0128]步驟501,信息服務(wù)器接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的該存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息;
[0129]某一數(shù)據(jù)包上傳到存儲(chǔ)流水線之后,主節(jié)點(diǎn)可以接收各從節(jié)點(diǎn)返回的攜帶有各自本地存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)文件塊副本的狀態(tài)信息的響應(yīng),并將自身存儲(chǔ)的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息和接收到的該數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息發(fā)送給信息處理器。[0130]步驟502,信息服務(wù)器根據(jù)接收到的主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷該存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0131]信息服務(wù)器根據(jù)本地存儲(chǔ)的文件塊副本所在節(jié)點(diǎn)的列表以及接收到的主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤。
[0132]具體的,為了便于對(duì)分布式文件系統(tǒng)中的各節(jié)點(diǎn)進(jìn)行集中式診斷和管理,系統(tǒng)中還設(shè)置有獨(dú)立的管理服務(wù)器,用于定期對(duì)各節(jié)點(diǎn)進(jìn)行檢測(cè),當(dāng)管理服務(wù)器檢測(cè)到某節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),可以將該節(jié)點(diǎn)上所有的文件塊副本備份至另一節(jié)點(diǎn),同時(shí)將檢測(cè)與備份結(jié)果發(fā)送給信息服務(wù)器。
[0133]如果該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤(比如某一從節(jié)點(diǎn)崩潰),此時(shí),流水線中的主節(jié)點(diǎn)無法接收到發(fā)生錯(cuò)誤的從節(jié)點(diǎn)返回的對(duì)上傳數(shù)據(jù)包的響應(yīng),從而,主節(jié)點(diǎn)發(fā)送給信息服務(wù)器的狀態(tài)信息中就不會(huì)包含有發(fā)生錯(cuò)誤的從節(jié)點(diǎn)所存儲(chǔ)的文件塊副本的狀態(tài)信息。信息服務(wù)器可以根據(jù)本地存儲(chǔ)的該文件塊副本所在節(jié)點(diǎn)的列表以及接收到的主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷是否有從節(jié)點(diǎn)沒有向主節(jié)點(diǎn)返回響應(yīng),如果有從節(jié)點(diǎn)沒有向主節(jié)點(diǎn)返回響應(yīng),則判斷該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤。
[0134]步驟503,信息服務(wù)器若判斷該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則向該主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng);
[0135]如果判斷該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則信息服務(wù)器向主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng),以便存儲(chǔ)流水線中的各節(jié)點(diǎn)將相應(yīng)的文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài)。
[0136]步驟504,信息服務(wù)器若判斷該存儲(chǔ)流水線中沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則向該主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng);
[0137]步驟505,信息服務(wù)器重新生成文件塊副本所在節(jié)點(diǎn)的列表,并將重新生成的文件塊副本所在節(jié)點(diǎn)的列表發(fā)送給客戶端,以便客戶端根據(jù)重新生成的文件塊副本所在節(jié)點(diǎn)的列表生成新的存儲(chǔ)流水線。
[0138]信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),可以根據(jù)管理服務(wù)器錯(cuò)誤節(jié)點(diǎn)的檢測(cè)和備份信息,重新生成該文件塊副本所在節(jié)點(diǎn)的列表。
[0139]具體比如,該文件塊副本所在節(jié)點(diǎn)列表原來為:a、b和C,管理服務(wù)器檢測(cè)到其中的節(jié)點(diǎn)c發(fā)生錯(cuò)誤,此時(shí),管理服務(wù)器將節(jié)點(diǎn)c上存儲(chǔ)的該文件塊副本備份至節(jié)點(diǎn)d,并將檢測(cè)與備份信息發(fā)送給信息服務(wù)器,信息服務(wù)器根據(jù)該檢測(cè)與備份信息重新生成該文件塊副本所在節(jié)點(diǎn)列表為:a、b和d。
[0140]綜上所述,本發(fā)明實(shí)施例五提供的數(shù)據(jù)包上傳方法,通過接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的該存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息,據(jù)此判斷該存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,且在判斷出該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),向主節(jié)點(diǎn)發(fā)送寫入錯(cuò)誤響應(yīng)并向重新生成對(duì)應(yīng)文件塊副本所在節(jié)點(diǎn)的列表,以便于存儲(chǔ)流水線中的各節(jié)點(diǎn)恢復(fù)文件塊副本的狀態(tài),達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0141]實(shí)施例六
[0142]對(duì)應(yīng)于上述實(shí)施例一提供的數(shù)據(jù)包上傳方法,請(qǐng)參見圖7,其示出了本發(fā)明實(shí)施例六提供的一種客戶端的裝置結(jié)構(gòu)圖,還客戶端可應(yīng)用于在分布式文件系統(tǒng)中上傳數(shù)據(jù)包,該客戶端可以包括:上傳模塊601、響應(yīng)接收模塊602和流水線建立模塊603 ;[0143]上傳模塊601,用于將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn);
[0144]響應(yīng)接收模塊602,用于接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng);
[0145]若響應(yīng)接收模塊602接收到上傳成功響應(yīng),則上傳模塊601,用于繼續(xù)上傳下一數(shù)據(jù)包;
[0146]若響應(yīng)接收模塊602接收到上傳失敗響應(yīng),則流水線建立模塊603,用于重新建立存儲(chǔ)流水線;
[0147]上傳模塊601,還用于將數(shù)據(jù)包上傳到重新建立的存儲(chǔ)流水線。
[0148]綜上所述,本發(fā)明實(shí)施例六提供的客戶端,通過上傳數(shù)據(jù)包后接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng),若接收到上傳失敗響應(yīng)響應(yīng),則重新建立的存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0149]實(shí)施例七
[0150]為了對(duì)上述實(shí)施例六提供的客戶端做進(jìn)一步描述,對(duì)應(yīng)參考上述實(shí)施例二提供的數(shù)據(jù)包上傳方法,請(qǐng)參見圖8,其示出了本發(fā)明實(shí)施例七提供的一種客戶端的裝置結(jié)構(gòu)圖,該客戶端可以應(yīng)用于在分布式文件系統(tǒng)中上傳數(shù)據(jù)包,該客戶端可以包括:上傳模塊701、響應(yīng)接收模塊702和流水線建立模塊703 ;
[0151]上傳模塊701,用于將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將數(shù)據(jù) 包的副本輪流寫入各自本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn);
[0152]響應(yīng)接收模塊702,用于接收主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng);
[0153]若響應(yīng)接收模塊702接收到上傳成功響應(yīng),則上傳模塊701,用于繼續(xù)上傳下一數(shù)據(jù)包;
[0154]若響應(yīng)接收模塊702接收到上傳失敗響應(yīng),則流水線建立模塊703,用于重新建立存儲(chǔ)流水線;
[0155]上傳模塊701,還用于將數(shù)據(jù)包上傳到重新建立的存儲(chǔ)流水線。
[0156]該客戶端還包括:
[0157]判斷模塊704,用于在上傳模塊701將一數(shù)據(jù)包上傳到存儲(chǔ)流水線之前,判斷存儲(chǔ)流水線是否已建立;
[0158]若判斷模塊704判斷存儲(chǔ)流水線已建立,則上傳模塊701將數(shù)據(jù)包上傳存儲(chǔ)流水線.-^4 ,
[0159]若判斷模塊704判斷存儲(chǔ)流水線未建立,則流水線建立模塊703建立存儲(chǔ)流水線。
[0160]進(jìn)一步的,流水線建立模塊具體包括:
[0161]列表獲取單元703a,用于從信息服務(wù)器獲取數(shù)據(jù)包對(duì)應(yīng)的文件塊副本所在的節(jié)點(diǎn)的列表;
[0162]流水線生成單元703b,用于根據(jù)列表獲取單元獲取的節(jié)點(diǎn)的列表生成存儲(chǔ)流水線。
[0163]綜上所述,本發(fā)明實(shí)施例七提供的客戶端,通過在將一個(gè)數(shù)據(jù)包上傳存儲(chǔ)流水線之后,等待存儲(chǔ)流水線上的主節(jié)點(diǎn)返回上傳成功響應(yīng)或上傳失敗響應(yīng),如接收到上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則重新建立存儲(chǔ)流水線,解決了現(xiàn)有技術(shù)中數(shù)據(jù)包上傳過程中無法中止的問題,達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0164]實(shí)施例八
[0165]對(duì)應(yīng)于上述實(shí)施例八提供的客戶端中信息服務(wù)器判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤的部分內(nèi)容,參考上述實(shí)施例三提供的數(shù)據(jù)包上傳方法,請(qǐng)參見圖9,其示出了本發(fā)明實(shí)施例八提供的一種主節(jié)點(diǎn)的裝置結(jié)構(gòu)圖,該主節(jié)點(diǎn)可以包括:數(shù)據(jù)包接收模塊801、寫入模塊802、信息更新模塊803、數(shù)據(jù)包發(fā)送模塊804、第一響應(yīng)接收模塊805、信息發(fā)送模塊806、第二響應(yīng)接收模塊807和第一響應(yīng)發(fā)送模塊808 ;
[0166]數(shù)據(jù)包接收模塊801,用于接收客戶端上傳的數(shù)據(jù)包;
[0167]寫入模塊802,用于將數(shù)據(jù)包接收模塊801接收到的數(shù)據(jù)包的副本寫入本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0168]信息更新模塊803,用于更新文件塊副本的狀態(tài)信息;
[0169]數(shù)據(jù)包發(fā)送模塊804,用于將數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)點(diǎn);
[0170]第一響應(yīng)接收模塊805,用于接收一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)數(shù)據(jù)包的響應(yīng),對(duì)數(shù)據(jù)包的響應(yīng)中攜帶有一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息;
[0171]信息發(fā)送模塊806,用于將更新的狀態(tài)信息和接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便信息服務(wù)器根據(jù)更新的狀態(tài)信息和接收到的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0172]第二響應(yīng)接收模塊807,用于接收信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng);
[0173]若第二響應(yīng)接收模塊807接收到信息服務(wù)器返回的寫入成功響應(yīng),則第一響應(yīng)發(fā)送模塊808,用于向客戶端發(fā)送上傳成功響應(yīng);
[0174]若第二響應(yīng)接收模塊807接收到信息服務(wù)器返回的寫入失敗響應(yīng),則第一響應(yīng)發(fā)送模塊808,用于向客戶端發(fā)送上傳失敗響應(yīng)。
[0175]其中,狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息;
[0176]信息更新模塊803,具體包括:
[0177]第一更新單元803a,用于將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息;
[0178]第二更新單元803b,用于根據(jù)更新后的第二狀態(tài)信息以及數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息;
[0179]其中,第一狀態(tài)信息為文件塊寫入數(shù)據(jù)包之后的狀態(tài)信息,第二狀態(tài)信息為文件塊寫入數(shù)據(jù)包之前的狀態(tài)信息。
[0180]該主節(jié)點(diǎn)還包括:狀態(tài)恢復(fù)模塊809 ;
[0181]狀態(tài)恢復(fù)模塊具體包括:狀態(tài)恢復(fù)單元809a和通知發(fā)送單元809b ;
[0182]第二響應(yīng)接收模塊807接收到信息服務(wù)器返回的寫入錯(cuò)誤響應(yīng)之后,狀態(tài)恢復(fù)單元809a,用于根據(jù)更新后的第二狀態(tài)信息將文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài);
[0183]第二響應(yīng)接收模塊807接收到信息服務(wù)器返回的寫入錯(cuò)誤響應(yīng)之后,通知發(fā)送單元80%,用于向一至多個(gè)從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知,以便一至多個(gè)從節(jié)點(diǎn)根據(jù)自身更新后的第二狀態(tài)信息將各自存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài)。
[0184]綜上所述,本發(fā)明實(shí)施例八提供的主節(jié)點(diǎn),通過在寫入數(shù)據(jù)包之后更新數(shù)據(jù)包對(duì)應(yīng)的狀態(tài)信息,并接收各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng),并將自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息發(fā)送給信息服務(wù)器,以便信息服務(wù)器根據(jù)主節(jié)點(diǎn)自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,同時(shí),在信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),將該數(shù)據(jù)包對(duì)應(yīng)文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài),達(dá)到了降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0185]實(shí)施例九
[0186]為了對(duì)上述實(shí)施例七和八中的從節(jié)點(diǎn)做進(jìn)一步描述,參考實(shí)施例四提供的數(shù)據(jù)包上傳方法,請(qǐng)參見圖10,其示出了本發(fā)明實(shí)施例九提供的一種從節(jié)點(diǎn)的裝置結(jié)構(gòu)圖,該從節(jié)點(diǎn)可以應(yīng)用于在分布式文件系統(tǒng)中存儲(chǔ)文件塊副本。該從節(jié)點(diǎn)可以包括:
[0187]數(shù)據(jù)包接收模塊901,用于接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包;
[0188]寫入模塊902,用于將數(shù)據(jù)包的副本寫入本地存儲(chǔ)的數(shù)據(jù)包對(duì)應(yīng)的文件塊副本;
[0189]信息更新模塊903,用于更新文件塊副本的狀態(tài)信息;
[0190]響應(yīng)發(fā)送模塊904,用于向存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)數(shù)據(jù)包的響應(yīng),對(duì)數(shù)據(jù)包的響應(yīng)中攜帶有更新的文件塊副本的狀態(tài)信息。
[0191]其中,狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息;
[0192]信息更新模塊903,具體包括:
[0193]第一更新單元903a,用于將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息;
[0194]第二更新單元903b,用于根據(jù)更新后的第二狀態(tài)信息以及數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息;
[0195]其中,第一狀態(tài)信息為文件塊寫入數(shù)據(jù)包之后的狀態(tài)信息,第二狀態(tài)信息為文件塊寫入數(shù)據(jù)包之前的狀態(tài)信息。
[0196]該從節(jié)點(diǎn)還包括:
[0197]通知接收模塊905,用于接收主節(jié)點(diǎn)發(fā)送的狀態(tài)恢復(fù)通知;
[0198]狀態(tài)恢復(fù)模塊906,用于根據(jù)更新后的第二狀態(tài)信息將文件塊副本恢復(fù)至寫入數(shù)據(jù)包之前的狀態(tài)。
[0199]進(jìn)一步的,從節(jié)點(diǎn)還包括:
[0200]數(shù)據(jù)包發(fā)送模塊907,用于當(dāng)該從節(jié)點(diǎn)不是該存儲(chǔ)流水線上的最后一個(gè)節(jié)點(diǎn)時(shí),向該從節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)發(fā)送該數(shù)據(jù)包。
[0201]實(shí)施例十
[0202]為了對(duì)上述實(shí)施例七和八所提及的信息服務(wù)器做進(jìn)一步描述,參考實(shí)施例五提供的數(shù)據(jù)包上傳方法,請(qǐng)參見圖11,其示出了本發(fā)明實(shí)施例十提供的一種信息服務(wù)器的裝置結(jié)構(gòu)圖,該信息服務(wù)器可以包括:信息接收模塊1001、判斷模塊1002和響應(yīng)發(fā)送模塊1003 ;
[0203]信息接收模塊1001,用于接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息;[0204]判斷模塊1002,用于根據(jù)接收到的主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤;
[0205]若判斷模塊1002判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則響應(yīng)發(fā)送模塊1003,用于向主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng);
[0206]若判斷模塊1002判斷存儲(chǔ)流水線中沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則響應(yīng)發(fā)送模塊1003,用于向主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng)。
[0207]判斷模塊1002,具體用于根據(jù)本地存儲(chǔ)的文件塊副本所在節(jié)點(diǎn)的列表以及接收到的主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤。
[0208]信息服務(wù)器還包括:列表生成模塊1004和列表發(fā)送模塊1005 ;
[0209]判斷模塊1002判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤之后,列表生成模塊1004,用于重新生成文件塊副本所在節(jié)點(diǎn)的列表;
[0210]列表發(fā)送模塊1005,用于將重新生成的文件塊副本所在節(jié)點(diǎn)的列表發(fā)送給客戶端,以便客戶端根據(jù)重新生成的文件塊副本所在節(jié)點(diǎn)的列表生成新的存儲(chǔ)流水線。
[0211]綜上所述,本發(fā)明實(shí)施例十提供的信息服務(wù)器,通過接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的該存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息,據(jù)此判斷該存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,且在判斷出該存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),向主節(jié)點(diǎn)發(fā)送寫入錯(cuò)誤響應(yīng)并向重新生成對(duì)應(yīng)文件塊副本所在節(jié)點(diǎn)的列表,以便于存儲(chǔ)流水線中的各節(jié) 點(diǎn)恢復(fù)文件塊副本的狀態(tài),達(dá)到降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0212]實(shí)施例^^一
[0213]請(qǐng)參見圖12,其示出了本發(fā)明實(shí)施例十一提供的一種分布式文件系統(tǒng)的系統(tǒng)構(gòu)成圖,該分布式文件系統(tǒng)可以包括:
[0214]如上述實(shí)施例六或七提供的客戶端200、如上述實(shí)施例八提供的主節(jié)點(diǎn)400、一至多個(gè)如上述實(shí)施例九提供的從節(jié)點(diǎn)600以及如上述實(shí)施例十提供的信息服務(wù)器800。
[0215]綜上所述,本發(fā)明實(shí)施例十一提供的分布式文件系統(tǒng),通過主節(jié)點(diǎn)在寫入數(shù)據(jù)包之后更新數(shù)據(jù)包對(duì)應(yīng)的狀態(tài)信息,并接收各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng),并將自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息發(fā)送給信息服務(wù)器,以便信息服務(wù)器根據(jù)主節(jié)點(diǎn)自身更新的狀態(tài)信息和各從節(jié)點(diǎn)對(duì)數(shù)據(jù)包返回的響應(yīng)中攜帶的狀態(tài)信息判斷存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,同時(shí),在信息服務(wù)器判斷存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),將該數(shù)據(jù)包對(duì)應(yīng)文件塊副本恢復(fù)到寫入該數(shù)據(jù)包之前的狀態(tài),達(dá)到了降低數(shù)據(jù)恢復(fù)過程復(fù)雜度的目的。
[0216]需要說明的是:上述實(shí)施例提供的客戶端、主節(jié)點(diǎn)、從節(jié)點(diǎn)以及信息服務(wù)器在上傳數(shù)據(jù)包時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的分布式文件系統(tǒng)與數(shù)據(jù)包上傳方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0217]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0218]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
[0219] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)包上傳方法,其特征在于,所述方法包括: 將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便所述存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將所述數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,所述存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn); 接收所述主節(jié)點(diǎn)返回的上傳失敗響應(yīng)或上傳成功響應(yīng); 若接收到所述上傳成功響應(yīng),則繼續(xù)上傳下一數(shù)據(jù)包,否則,重新建立存儲(chǔ)流水線并將所述數(shù)據(jù)包上傳到所述重新建立的存儲(chǔ)流水線。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)包上傳方法,其特征在于,所述將一數(shù)據(jù)包上傳到存儲(chǔ)流水線之前,所述方法還包括: 判斷所述存儲(chǔ)流水線是否已建立; 若所述存儲(chǔ)流水線已建立,則將所述數(shù)據(jù)包上傳所述存儲(chǔ)流水線; 若所述存儲(chǔ)流水線未建立,則建立所述存儲(chǔ)流水線。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)包上傳方法,其特征在于,所述建立所述存儲(chǔ)流水線,具體包括: 從信息服務(wù)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本所在的節(jié)點(diǎn)的列表,根據(jù)所述節(jié)點(diǎn)的列表生成所述存儲(chǔ)流水線。
4.一種數(shù)據(jù)包上傳方法,其特征在于,所述方法包括: 接收客戶端上傳 的數(shù)據(jù)包,將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,并更新所述文件塊副本的狀態(tài)信息; 將所述數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)點(diǎn),并接收所述一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有所述一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息; 將所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便所述信息服務(wù)器根據(jù)所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤; 接收所述信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng); 若接收到所述信息服務(wù)器返回的寫入成功響應(yīng),則向所述客戶端發(fā)送上傳成功響應(yīng);若接收到所述信息服務(wù)器返回的寫入失敗響應(yīng),則向所述客戶端發(fā)送上傳失敗響應(yīng)。
5.根據(jù)權(quán)利要4所述的數(shù)據(jù)包上傳方法,其特征在于,所述狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息; 所述更新所述文件塊副本的狀態(tài)信息,具體包括: 將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息; 根據(jù)所述更新后的第二狀態(tài)信息以及所述數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息; 其中,所述第一狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之后的狀態(tài)信息,所述第二狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之前的狀態(tài)信息。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)包上傳方法,其特征在于,所述接收到所述信息服務(wù)器返回的寫入錯(cuò)誤響應(yīng)之后,所述方法還包括: 根據(jù)所述更新后的第二狀態(tài)信息將所述文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài); 向所述一至多個(gè)從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知,以便所述一至多個(gè)從節(jié)點(diǎn)根據(jù)自身更新后的第二狀態(tài)信息將各自存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài)。
7.一種數(shù)據(jù)包上傳方法,其特征在于,所述方法包括: 接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,并更新所述文件塊副本的狀態(tài)信息; 向所述存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有更新的所述文件塊副本的狀態(tài)信息。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)包上傳方法,其特征在于,所述狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息; 所述更新所述文件塊副本的狀態(tài)信息,具體包括: 將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息; 根據(jù)所述更新后的第二狀態(tài)信息以及所述數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息; 其中,所述第一狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之后的狀態(tài)信息,所述第二狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之前的狀態(tài)信息。
9.根 據(jù)權(quán)利要求8所述的數(shù)據(jù)包上傳方法,其特征在于,所述方法還包括: 接收所述主節(jié)點(diǎn)發(fā)送的狀態(tài)恢復(fù)通知; 根據(jù)所述更新后的第二狀態(tài)信息將所述文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài)。
10.一種數(shù)據(jù)包上傳方法,其特征在于,所述方法包括: 接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的所述存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息; 根據(jù)接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤; 若判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則向所述主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng),否貝U,向所述主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng)。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)包上傳方法,其特征在于,所述根據(jù)接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,具體包括: 根據(jù)本地存儲(chǔ)的所述文件塊副本所在節(jié)點(diǎn)的列表以及接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤。
12.根據(jù)權(quán)利要求10所述的數(shù)據(jù)包上傳方法,其特征在于,所述判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤之后,所述方法還包括: 重新生成所述文件塊副本所在節(jié)點(diǎn)的列表; 將重新生成的所述文件塊副本所在節(jié)點(diǎn)的列表發(fā)送給客戶端,以便所述客戶端根據(jù)重新生成的所述文件塊副本所在節(jié)點(diǎn)的列表生成新的存儲(chǔ)流水線。
13.—種客戶端,其特征在于,所述客戶端包括:上傳模塊、響應(yīng)接收模塊和流水線建立模塊; 所述上傳模塊,用于將一數(shù)據(jù)包上傳到存儲(chǔ)流水線,以便所述存儲(chǔ)流水線上的主節(jié)點(diǎn)和各從節(jié)點(diǎn)將所述數(shù)據(jù)包的副本輪流寫入各自本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本,所述存儲(chǔ)流水線包含有至少兩個(gè)節(jié)點(diǎn),其中第一個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn); 所述響應(yīng)接收模塊,用于接收所述主節(jié)點(diǎn)返回的上傳成功響應(yīng)或上傳失敗響應(yīng); 若所述響應(yīng)接收模塊接收到所述上傳成功響應(yīng),則所述上傳模塊,用于繼續(xù)上傳下一數(shù)據(jù)包; 若所述響應(yīng)接收模塊接收到所述上傳失敗響應(yīng),則所述流水線建立模塊,用于重新建立存儲(chǔ)流水線; 所述上傳模塊,還用于將所述數(shù)據(jù)包上傳到所述重新建立的存儲(chǔ)流水線。
14.根據(jù)權(quán)利要求13所述的客戶端,其特征在于,所述客戶端還包括: 判斷模塊,用于在所述上傳模塊將一數(shù)據(jù)包上傳到存儲(chǔ)流水線之前,判斷所述存儲(chǔ)流水線是否已建立; 若所述判斷模塊判斷所述存儲(chǔ)流水線已建立,則所述上傳模塊將所述數(shù)據(jù)包上傳所述存儲(chǔ)流水線; 若所述判斷模塊判斷所述存儲(chǔ)流水線未建立,則所述流水線建立模塊建立所述存儲(chǔ)流水線。
15.根據(jù)權(quán)利要求14所述的客戶端,其特征在于,所述流水線建立模塊具體包括: 列表獲取單元,用于從信息服務(wù)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本所在的節(jié)點(diǎn)的列表; 流水線生成單元,用于根據(jù)所述列表獲取單元獲取的所述節(jié)點(diǎn)的列表生成所述存儲(chǔ)流水線。
16.一種主節(jié)點(diǎn),其特征在于,所述主節(jié)點(diǎn)包括:數(shù)據(jù)包接收模塊、寫入模塊、信息更新模塊、數(shù)據(jù)包發(fā)送模塊、第一響應(yīng)接收模塊、信息發(fā)送模塊、第二響應(yīng)接收模塊和第一響應(yīng)發(fā)送模塊; 所述數(shù)據(jù)包接收模塊,用于接收客戶端上傳的數(shù)據(jù)包; 所述寫入模塊,用于將所述數(shù)據(jù)包接收模塊接收到的數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本; 所述信息更新模塊,用于更新所述文件塊副本的狀態(tài)信息; 所述數(shù)據(jù)包發(fā)送模塊,用于將所述數(shù)據(jù)包發(fā)送給存儲(chǔ)流水線上的一至多個(gè)從節(jié)點(diǎn); 所述第一響應(yīng)接收模塊,用于接收所述一至多個(gè)從節(jié)點(diǎn)發(fā)送的對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有所述一至多個(gè)從節(jié)點(diǎn)本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本的狀態(tài)信息; 所述信息發(fā)送模塊,用于將所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息發(fā)送給信息服務(wù)器,以便所述信息服務(wù)器根據(jù)所述更新的狀態(tài)信息和所述接收到的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤; 所述第二響應(yīng)接收模塊,用于接收所述信息服務(wù)器返回的寫入成功響應(yīng)或?qū)懭胧№憫?yīng); 若所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入成功響應(yīng),則所述第一響應(yīng)發(fā)送模塊,用于向所述客戶端發(fā)送上傳成功響應(yīng); 若所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入失敗響應(yīng),則所述第一響應(yīng)發(fā)送模塊,用于向所述客戶端發(fā)送上傳失敗響應(yīng)。
17.根據(jù)權(quán)利要16所述的主節(jié)點(diǎn),其特征在于,所述狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息; 所述信息更新模塊,具體包括: 第一更新單元,用于將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息; 第二更新單元,用于根據(jù)所述更新后的第二狀態(tài)信息以及所述數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息; 其中,所述第一狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之后的狀態(tài)信息,所述第二狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之前的狀態(tài)信息。
18.根據(jù)權(quán)利要求17所述的主節(jié)點(diǎn),其特征在于,所述主節(jié)點(diǎn)還包括:狀態(tài)恢復(fù)模塊; 所述狀態(tài)恢復(fù)模塊具體包括:狀態(tài)恢復(fù)單元和通知發(fā)送單元; 所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入錯(cuò)誤響應(yīng)之后,所述狀態(tài)恢復(fù)單元,用于根據(jù)所述更新后的第二狀態(tài)信息將所述文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài); 所述第二響應(yīng)接收模塊接收到所述信息服務(wù)器返回的寫入錯(cuò)誤響應(yīng)之后,所述通知發(fā)送單元,用于向所述一至多個(gè)從節(jié)點(diǎn)發(fā)送狀態(tài)恢復(fù)通知,以便所述一至多個(gè)從節(jié)點(diǎn)根據(jù)自身更新后的第二狀態(tài)信息將各自存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài)?!?br>
19.一種從節(jié)點(diǎn),其特征在于,所述從節(jié)點(diǎn)包括: 數(shù)據(jù)包接收模塊,用于接收存儲(chǔ)流水線中上一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包; 寫入模塊,用于將所述數(shù)據(jù)包的副本寫入本地存儲(chǔ)的所述數(shù)據(jù)包對(duì)應(yīng)的文件塊副本; 信息更新模塊,用于更新所述文件塊副本的狀態(tài)信息; 響應(yīng)發(fā)送模塊,用于向所述存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送對(duì)所述數(shù)據(jù)包的響應(yīng),所述對(duì)所述數(shù)據(jù)包的響應(yīng)中攜帶有更新的所述文件塊副本的狀態(tài)信息。
20.根據(jù)權(quán)利要求19所述的從節(jié)點(diǎn),其特征在于,所述狀態(tài)信息包括第一狀態(tài)信息和第二狀態(tài)信息; 所述信息更新模塊,具體包括: 第一更新單元,用于將原有狀態(tài)信息中的第一狀態(tài)信息更新為第二狀態(tài)信息; 第二更新單元,用于根據(jù)所述更新后的第二狀態(tài)信息以及所述數(shù)據(jù)包的數(shù)據(jù)量計(jì)算更新后的第一狀態(tài)信息; 其中,所述第一狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之后的狀態(tài)信息,所述第二狀態(tài)信息為所述文件塊寫入所述數(shù)據(jù)包之前的狀態(tài)信息。
21.根據(jù)權(quán)利要求20所述的從節(jié)點(diǎn),其特征在于,所述從節(jié)點(diǎn)還包括: 通知接收模塊,用于接收所述主節(jié)點(diǎn)發(fā)送的狀態(tài)恢復(fù)通知; 狀態(tài)恢復(fù)模塊,用于根據(jù)所述更新后的第二狀態(tài)信息將所述文件塊副本恢復(fù)至寫入所述數(shù)據(jù)包之前的狀態(tài)。
22.一種信息服務(wù)器,其特征在于,所述信息服務(wù)器包括:信息接收模塊、判斷模塊和響應(yīng)發(fā)送模塊; 所述信息接收模塊,用于接收存儲(chǔ)流水線中的主節(jié)點(diǎn)發(fā)送的所述存儲(chǔ)流水線中的主節(jié)點(diǎn)和一至多個(gè)從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息; 所述判斷模塊,用于根據(jù)接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤; 若所述判斷模塊判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則所述響應(yīng)發(fā)送模塊,用于向所述主節(jié)點(diǎn)發(fā)送寫入失敗響應(yīng); 若所述判斷模塊判斷所述存儲(chǔ)流水線中沒有從節(jié)點(diǎn)發(fā)生錯(cuò)誤,則所述響應(yīng)發(fā)送模塊,用于向所述主節(jié)點(diǎn)發(fā)送寫入成功響應(yīng)。
23.根據(jù)權(quán)利要求22所述的信息服務(wù)器,其特征在于, 所述判斷模塊,具體用于根據(jù)本地存儲(chǔ)的所述文件塊副本所在節(jié)點(diǎn)的列表以及接收到的所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自存儲(chǔ)的文件塊副本的狀態(tài)信息判斷所述存儲(chǔ)流水線中是否有從節(jié)點(diǎn)發(fā)生錯(cuò)誤。
24.根據(jù)權(quán)利要求22所述的信息服務(wù)器,其特征在于,所述信息服務(wù)器還包括:列表生成模塊和列表發(fā)送模塊; 所述判斷模塊判斷所述存儲(chǔ)流水線中有從節(jié)點(diǎn)發(fā)生錯(cuò)誤之后,所述列表生成模塊,用于重新生成所述文件塊副本所在節(jié)點(diǎn)的列表; 所述列表發(fā)送模塊,用于將重新生成的所述文件塊副本所在節(jié)點(diǎn)的列表發(fā)送給客戶端,以便所述客戶端根據(jù)重新生成的所述文件塊副本所在節(jié)點(diǎn)的列表生成新的存儲(chǔ)流水線?!?br>
25.—種分布式文件系統(tǒng),其特征在于,所述系統(tǒng)包括: 權(quán)利要求13至15任一所述的客戶端、如權(quán)利要求16至18任一所述的主節(jié)點(diǎn)、一至多個(gè)如權(quán)利要求19至21所述的從節(jié)點(diǎn)以及如權(quán)利要求22至24任一所述的信息服務(wù)器。
【文檔編號(hào)】H04L29/08GK103856511SQ201210505110
【公開日】2014年6月11日 申請(qǐng)日期:2012年11月30日 優(yōu)先權(quán)日:2012年11月30日
【發(fā)明者】伍海君, 朱會(huì)燦, 鄧大付, 李銳, 鄒永強(qiáng), 董乘宇, 闕太富, 王磊, 楊紹鵬, 張書鑫, 趙大勇, 劉暢, 陳曉東, 張銀鋒 申請(qǐng)人:騰訊科技(深圳)有限公司