一種分布式系統(tǒng)及其數(shù)據(jù)操作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及分布式系統(tǒng)中存取副本時獲取副本所對應存儲節(jié)點的方法及應用該方法的分布式系統(tǒng)。
【背景技術(shù)】
[0002]分布式文件系統(tǒng)是一種基于計算機存儲節(jié)點進行本地存儲構(gòu)建的分布式存儲系統(tǒng)。其與傳統(tǒng)的存儲系統(tǒng)相比,具有存儲性價比高、可擴展性強等優(yōu)點。
[0003]現(xiàn)有的分布式文件系統(tǒng)通常由元數(shù)據(jù)節(jié)點和多個存儲節(jié)點組成。其中,元數(shù)據(jù)節(jié)點用于保存各個文件的數(shù)據(jù)分塊情況、各個數(shù)據(jù)塊所在的存儲節(jié)點的名稱,以及每個存儲節(jié)點上包含的數(shù)據(jù)塊的信息等。存儲節(jié)點用于保存實際的數(shù)據(jù)塊,通常每個數(shù)據(jù)塊大小為64MB或128MB。存儲節(jié)點會定期地把存儲在本地的數(shù)據(jù)塊發(fā)送給元數(shù)據(jù)節(jié)點,以使得元數(shù)據(jù)節(jié)點能夠感知分布式文件系統(tǒng)中所有文件的數(shù)據(jù)存儲位置。當客戶端需要對上述分布式文件系統(tǒng)進行數(shù)據(jù)存取操作時,首先通過元數(shù)據(jù)節(jié)點獲取或建立文件的數(shù)據(jù)塊的位置;然后直接與相應數(shù)據(jù)塊所在的存儲節(jié)點進行通信,進行讀寫數(shù)據(jù)塊等操作。
[0004]對于現(xiàn)有的分布式文件系統(tǒng),為了提高系統(tǒng)可靠性和數(shù)據(jù)可用性,分布式文件系統(tǒng)通常采用多份副本的方式保存數(shù)據(jù)塊,例如,對于同一個數(shù)據(jù)塊,可以在不同的存儲節(jié)點保存三個或更多個副本,其中,每一個副本存儲在一臺存儲節(jié)點上。這樣,每個文件的內(nèi)容都被存儲在了多個存儲節(jié)點上,一旦個別存儲節(jié)點宕機,整個文件的數(shù)據(jù)仍然可以從存儲該文件的其他副本的存儲節(jié)點上獲取。
[0005]當客戶端需要向分布式文件系統(tǒng)寫一個文件時,客戶端首先和元數(shù)據(jù)節(jié)點+通信,從元數(shù)據(jù)節(jié)點獲取該文件對應塊的位置,即存儲這個文件所對應塊的存儲節(jié)點列表。存儲節(jié)點列表指示了同一份數(shù)據(jù)需要寫到不同的存儲節(jié)點上,即同一份數(shù)據(jù)在不同的存儲節(jié)點上存在多個副本??蛻舳穗S即從返回的+存儲節(jié)點列表中選擇網(wǎng)絡地址上最近的那個存儲節(jié)點,然后將數(shù)據(jù)寫給該存儲節(jié)點,并同時告知該存儲節(jié)點,還需要將這份數(shù)據(jù)寫給哪些存儲節(jié)點。之后,該存儲節(jié)點重復上述的存儲過程,直到存儲節(jié)點列表中的所有存儲節(jié)點都完成存儲為止。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種分布式文件系統(tǒng),其能夠在現(xiàn)有分布式文件系統(tǒng)的基礎(chǔ)上考慮文件存儲操作時的節(jié)點本地性、計算負載以及容量負載。
[0007]—種分布式系統(tǒng),包括:
[0008]客戶端,用于向主節(jié)點發(fā)送數(shù)據(jù)操作請求;
[0009]主節(jié)點,用于響應于客戶端的請求獲取存儲節(jié)點列表,并將存儲節(jié)點列表發(fā)送給客戶端;
[0010]多個存儲節(jié)點,用于存儲客戶端所請求操作的數(shù)據(jù);
[0011]多個計算節(jié)點,用于執(zhí)行由主節(jié)點基于用戶的數(shù)據(jù)操作請求分配的計算任務;
[0012]其中,主節(jié)點在獲取存儲節(jié)點列表時,應用副本位置選擇策略,來選擇數(shù)據(jù)副本所對應的存儲節(jié)點;
[0013]所述副本位置選擇策略包括下述方式的至少一種:選擇容量負載小的存儲節(jié)點;選擇計算負載小的計算節(jié)點;以及選擇本地性差的存儲節(jié)點。
[0014]其中,所述主節(jié)點在獲取存儲節(jié)點列表時,基于主節(jié)點中保存的分布式系統(tǒng)的元數(shù)據(jù)信息來應用副本位置選擇策略。
[0015]其中,所述分布式系統(tǒng)的元數(shù)據(jù)信息包括存儲節(jié)點的狀態(tài)信息和/或計算節(jié)點的狀態(tài)信息。
[0016]其中,所述存儲節(jié)點列表包括至少一個副本位置信息。
[0017]其中,所述至少一個副本位置信息包括第一個副本位置信息,該第一個副本位置信息通過如下方式獲得:
[0018]首先判斷客戶端是否在集群中,如果不在集群中,則在全局范圍內(nèi)應用副本位置選擇策略選擇一個存儲節(jié)點;如果在集群中,則選擇客戶端所在的存儲節(jié)點。
[0019]其中,在選擇客戶端所在的存儲節(jié)點之前,還考慮該存儲節(jié)點的容量負載,如果該存儲節(jié)點不合適,則應用副本位置選擇策略選擇和客戶端在同一個機架下的存儲節(jié)點。
[0020]其中,所述至少一個副本位置信息還包括第二個副本位置信息,該第二個副本位置信息通過如下方式獲得:
[0021]應用副本位置選擇策略選擇同第一個副本所在的存儲節(jié)點所在的不同機架上的存儲節(jié)點,如果選擇不出來,則在和第一個副本所在存儲節(jié)點所在的機架,應用副本位置選擇策略選擇一個存儲節(jié)點。
[0022]其中,所述至少一個副本位置信息還包括第三個副本位置信息,該第三個副本位置信息通過如下方式獲得:如果第一個副本所在的存儲節(jié)點和第二個副本所在的存儲節(jié)點在同一個機架上,則在第一個副本所在的存儲節(jié)點所在的不同機架上,應用副本位置選擇策略選擇一個存儲節(jié)點;否則,在和第二個副本所在的存儲節(jié)點所在的機架上應用副本位置選擇策略選擇一個存儲節(jié)點。
[0023]其中,所述至少一個副本位置信息還包括三個以上的副本位置信息,該三個以上的副本位置信息通過如下方式獲得:在全集群范圍內(nèi)應用副本位置選擇策略選擇存儲節(jié)點。
[0024]其中,所述存儲節(jié)點和計算節(jié)點分開放置,或者以一對一的方式放置在一個機器中。
[0025]一種分布式系統(tǒng)的數(shù)據(jù)操作方法,包括:
[0026]客戶端向主節(jié)點發(fā)送數(shù)據(jù)操作的請求;
[0027]主節(jié)點響應于客戶端的請求獲取存儲節(jié)點列表,并將存儲節(jié)點列表發(fā)送給客戶端;
[0028]其中,主節(jié)點在獲取存儲節(jié)點列表時,應用副本位置選擇策略,來選擇數(shù)據(jù)副本所對應的存儲節(jié)點;
[0029]所述副本位置選擇策略包括下述方式的至少一種:選擇容量負載小的存儲節(jié)點;選擇計算負載小的計算節(jié)點;以及選擇本地性差的存儲節(jié)點。
[0030]其中,所述主節(jié)點在獲取存儲節(jié)點列表時,基于主節(jié)點中保存的分布式系統(tǒng)的元數(shù)據(jù)信息來應用副本位置選擇策略。
[0031]其中,所述分布式系統(tǒng)的元數(shù)據(jù)信息包括存儲節(jié)點的狀態(tài)信息和/或計算節(jié)點的狀態(tài)信息。
[0032]其中,所述存儲節(jié)點列表包括至少一個副本位置信息。
[0033]其中,所述至少一個副本位置信息包括第一個副本位置信息,該第一個副本位置信息通過如下方式獲得:
[0034]首先判斷客戶端是否在集群中,如果不在集群中,則在全局范圍內(nèi)應用副本位置選擇策略選擇一個存儲節(jié)點;如果在集群中,則選擇客戶端所在的存儲節(jié)點。
[0035]其中,在選擇客戶端所在的存儲節(jié)點之前,還考慮該存儲節(jié)點的容量負載,如果該存儲節(jié)點不合適,則應用副本位置選擇策略選擇和客戶端在同一個機架下的存儲節(jié)點。
[0036]其中,所述至少一個副本位置信息還包括第二個副本位置信息,該第二個副本位置信息通過如下方式獲得:
[0037]應用副本位置選擇策略選擇同第一個副本所在的存儲節(jié)點所在的不同機架上的存儲節(jié)點,如果選擇不出來,則在和第一個副本所在存儲節(jié)點所在的機架,應用副本位置選擇策略選擇一個存儲節(jié)點。
[0038]其中,所述至少一個副本位置信息還包括第三個副本位置信息,該第三個副本位置信息通過如下方式獲得:如果第一個副本所在的存儲節(jié)點和第二個副本所在的存儲節(jié)點在同一個機架上,則在第一個副本所在的存儲節(jié)點所在的不同機架上,應用副本位置選擇策略選擇一個存儲節(jié)點;否則,在和第二個副本所在的存儲節(jié)點所在的機架上應用副本位置選擇策略選擇一個存儲節(jié)點。
[0039]其中,所述至少一個副本位置信息還包括三個以上的副本位置信息,該三個以上的副本位置信息通過如下方式獲得:在全集群范圍內(nèi)應用副本位置選擇策略選擇存儲節(jié)點。
[0040]根據(jù)本發(fā)明提供的具體實施例,本發(fā)明公開了以下技術(shù)效果:從一定程度上優(yōu)化計算效率,增加集群整體計算任務本地性特征,以及使得集群整體的計算負載更加均勻,并使得集群中所有存儲節(jié)點的容量負載更加均衡。
[0041]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]圖1是本發(fā)明實施例所述分布式系統(tǒng)的結(jié)構(gòu)示意圖。
[0044]圖2是本發(fā)明實施例所述分布式系統(tǒng)的數(shù)據(jù)操作的流程示意圖。
【具體實施方式】