本發(fā)明涉及分布式數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種分布式文件系統(tǒng)中節(jié)點選擇計算方法及系統(tǒng)。
背景技術(shù):
雖然分布式系統(tǒng)研究了很多年,但是,直到近年來,互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用的興起才使得它大規(guī)模地應(yīng)用到工程實踐中。相比傳統(tǒng)的分布式系統(tǒng),互聯(lián)網(wǎng)公司的分布式系統(tǒng)具有兩個特點:一個特點是規(guī)模大,另一個特點是成本低。不同的需求造就了不同的設(shè)計方案,可以這么說,Google等互聯(lián)網(wǎng)公司重新定義了大規(guī)模分布式系統(tǒng),成功催生了云計算和大數(shù)據(jù)兩大熱門領(lǐng)域。在現(xiàn)有技術(shù)中,在低成本及可擴展的分布式數(shù)據(jù)中,如何解決數(shù)據(jù)存儲及提取的方式為當(dāng)前解決要點。
上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種分布式文件系統(tǒng)中節(jié)點選擇計算方法,旨在解決現(xiàn)有的分布式存儲方式中分布式數(shù)據(jù)存儲正確性、可靠性及擴展性的問題。
本發(fā)明提供的一種分布式文件系統(tǒng)中節(jié)點選擇計算方法,包括:
在數(shù)據(jù)寫入時,獲取所述數(shù)據(jù)的寫入路徑;
將所述寫入路徑作為HASH算法的計算參數(shù),并根據(jù)所述計算參數(shù)計算HASH值;
根據(jù)所計算的HASH值以及預(yù)設(shè)HASH算法從預(yù)設(shè)的OSD節(jié)點中確定寫入所述數(shù)據(jù)的節(jié)點,將所述數(shù)據(jù)寫入所確定的節(jié)點。
優(yōu)選地,還包括:
通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點建立連接,并為OSD節(jié)點分配標(biāo)簽KEY值;
順時針方向依次排列已分配的標(biāo)簽KEY值,形成HASH數(shù)據(jù)環(huán)。
優(yōu)選地,所述通過HASH算法將備份數(shù)據(jù)的OSD備份節(jié)點建立連接,并分配標(biāo)簽KEY值,還包括:
將分配標(biāo)簽KEY值與對應(yīng)已存儲備份數(shù)據(jù)的OSD備份節(jié)點生成映射關(guān)系。
優(yōu)選地,所述方法,還包括:
讀取標(biāo)簽KEY值,根據(jù)該KEY值對應(yīng)的映射OSD備份節(jié)點,獲取該OSD備份節(jié)點對應(yīng)的備份數(shù)據(jù)。
優(yōu)選地,還包括:
多線程讀寫數(shù)據(jù),并在讀寫數(shù)據(jù)時添加數(shù)據(jù)鎖,以免出現(xiàn)數(shù)據(jù)混亂。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng),包括:
獲取模塊,用于在數(shù)據(jù)寫入時,獲取所述數(shù)據(jù)的寫入路徑;
計算模塊,用于將所述寫入路徑作為HASH算法的計算參數(shù),并根據(jù)所述計算參數(shù)計算HASH值;
備份模塊,用于根據(jù)所計算的HASH值以及預(yù)設(shè)HASH算法從預(yù)設(shè)的OSD節(jié)點中確定寫入所述數(shù)據(jù)的節(jié)點,將所述數(shù)據(jù)寫入所確定的節(jié)點。
優(yōu)選地,還包括:
連接模塊,用于通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點建立連接;
分配模塊,用于為OSD節(jié)點分配標(biāo)簽KEY值;
排列模塊,用于順時針方向依次排列已分配的標(biāo)簽KEY值,形成HASH數(shù)據(jù)環(huán)。
優(yōu)選地,還包括:
生成模塊,用于將分配標(biāo)簽KEY值與對應(yīng)已存儲備份數(shù)據(jù)的OSD備份節(jié)點生成映射關(guān)系。
優(yōu)選地,還包括:
備份數(shù)據(jù)讀取模塊,用于讀取標(biāo)簽KEY值,根據(jù)該KEY值對應(yīng)的映射OSD備份節(jié)點,獲取該OSD備份節(jié)點對應(yīng)的備份數(shù)據(jù)。
優(yōu)選地,還包括:
設(shè)置模塊,用于多線程讀寫數(shù)據(jù),并在讀寫數(shù)據(jù)時添加數(shù)據(jù)鎖,以免出現(xiàn)數(shù)據(jù)混亂。
本發(fā)明通過在數(shù)據(jù)寫入時,獲取所述數(shù)據(jù)的寫入路徑;將所述寫入路徑作為HASH算法的計算參數(shù),并根據(jù)所述計算參數(shù)計算HASH值;根據(jù)所計算的HASH值以及預(yù)設(shè)HASH算法從預(yù)設(shè)的OSD節(jié)點中確定寫入所述數(shù)據(jù)的節(jié)點,將所述數(shù)據(jù)寫入所確定的節(jié)點。實現(xiàn)現(xiàn)有的分布式存儲方式中,提高分布式數(shù)據(jù)存儲的正確性、可靠性,并提高了數(shù)據(jù)備份的擴展性,降低數(shù)據(jù)備份的成本。
附圖說明
圖1為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第一實施例的流程示意圖;
圖2為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第二實施例的流程示意圖;
圖3為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第三實施例的流程示意圖;
圖4為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第四實施例的流程示意圖;
圖5為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法通過HASH算法分離數(shù)據(jù)備份圖;
圖6為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第一實施例的功能模塊示意圖;
圖7為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第二實施例的功能模塊示意圖;
圖8為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第三實施例的功能模塊示意圖;
圖9為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第四實施例的功能模塊示意圖;
圖10為新增OSD備份節(jié)點的表現(xiàn)方式;
圖11為HASH環(huán)物理表現(xiàn)形式圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
具體實施方式
應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
基于上述問題,本發(fā)明提供一種分布式文件系統(tǒng)中節(jié)點選擇計算方法。
參照圖1,圖1為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第一實施例的流程示意圖。
在一實施例中,所述方法包括:
步驟S10,在數(shù)據(jù)寫入時,獲取所述數(shù)據(jù)的寫入路徑;
獲取到需備份的數(shù)據(jù),所述數(shù)據(jù)為自遠(yuǎn)端WEB或者客戶端中接收到了某一時刻的大量數(shù)據(jù),為了減少來自網(wǎng)絡(luò)和備份節(jié)點的壓力,對該數(shù)據(jù)進行備份。在將備份數(shù)據(jù)寫入備份節(jié)點之前,定義該備份數(shù)據(jù)的寫入備份節(jié)點,所述定義備份節(jié)點,根據(jù)所述備份數(shù)據(jù)大小確定備份節(jié)點數(shù)量,并根據(jù)備份節(jié)點數(shù)量,平均分布在該備份數(shù)據(jù)中,用以在使用備份節(jié)點備份數(shù)據(jù)時,使用與備份數(shù)據(jù)距離最近的備份節(jié)點備份數(shù)據(jù);在將備份數(shù)據(jù)寫入對應(yīng)備份節(jié)點之前,獲取所述數(shù)據(jù)寫入備份節(jié)點的寫入路徑。所述路徑,為數(shù)據(jù)寫入備份節(jié)點的寫入路徑。
步驟S20,將所述寫入路徑作為HASH算法的計算參數(shù),并根據(jù)所述計算參數(shù)計算HASH值;
將已獲取到的數(shù)據(jù)寫入備份節(jié)點路徑,作為HASH算法計算參數(shù),用以計算HASH值,所述HASH算法,將任意長度的二進制值映射為較短的固定長度的二進制值,即這個小的二進制值稱為HASH值,HASH值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。所述固定長度的HASH值,使得在HASHMAP(基于哈希表的Map接口的實現(xiàn))等可以按照高低位進行位操作,同時能夠提供統(tǒng)一的方式及數(shù)據(jù)唯一的數(shù)值,使得返回HASHCODE(HASHCODE是JDK根據(jù)對象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值)可以作為查找的依據(jù)。
步驟S30,根據(jù)所計算的HASH值以及預(yù)設(shè)HASH算法從預(yù)設(shè)的OSD節(jié)點中確定寫入所述數(shù)據(jù)的節(jié)點,將所述數(shù)據(jù)寫入所確定的節(jié)點。
計算出來的HASH值,即較短的固定長度的二進制值,在以預(yù)設(shè)的OSD備份節(jié)點中,根據(jù)計算出來的HASH值長度,確定寫入數(shù)據(jù)的備份節(jié)點。所述確認(rèn)方式為,以該HASH值為基準(zhǔn),距離最近的一個OSD備份節(jié)點為當(dāng)前寫入備份數(shù)據(jù)的OSD備份節(jié)點,將需備份的數(shù)據(jù)寫入到該節(jié)點中,完成數(shù)據(jù)備份。進一步的,若該OSD備份節(jié)點所存儲的備份數(shù)據(jù)超出預(yù)設(shè)的備份數(shù)據(jù)存儲內(nèi)存,在該OSD備份節(jié)點附近,即兩個OSD備份節(jié)點之間,新建一個OSD備份節(jié)點,進行少量的數(shù)據(jù)遷移,以此分擔(dān)數(shù)據(jù)存儲量過大的OSD備份節(jié)點的備份數(shù)據(jù)。如圖10,圖10為新增OSD備份節(jié)點的表現(xiàn)方式。所述預(yù)設(shè)的備份數(shù)據(jù)存儲內(nèi)存,為管理員設(shè)置的OSD存儲節(jié)點的最大備份內(nèi)存容量,該容量是在高效率數(shù)據(jù)備份及快速讀取數(shù)據(jù)備份數(shù)據(jù)的基礎(chǔ)上,OSD備份節(jié)點所能備份數(shù)據(jù)的最大內(nèi)存。
本實施例中,通過預(yù)設(shè)OSD備份節(jié)點,并使用寫入備份節(jié)點的路徑作為HASH算法的計算參數(shù),計算出的HASH值確定當(dāng)前數(shù)據(jù)備份的OSD備份節(jié)點,并將數(shù)據(jù)寫入該OSD備份節(jié)點完成該OSD備份節(jié)點的數(shù)據(jù)備份工作,通過計算的HASH值確認(rèn)數(shù)據(jù)備份的OSD備份節(jié)點,提高了數(shù)據(jù)備份的效率。
參照圖2,圖2為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第二實施例的流程示意圖?;谏鲜龇椒ǖ牡谝粚嵤├?,所述選擇與HASH值最接近的OSD備份節(jié)點,作為寫入備份數(shù)據(jù)的節(jié)點,還包括:
步驟S40,通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點建立連接,并為OSD節(jié)點分配標(biāo)簽KEY值;
將已寫入數(shù)據(jù)的OSD備份節(jié)點通過HASH算法建立連接,所述連接OSD備份節(jié)點,為當(dāng)前HASH算法的現(xiàn)有技術(shù);并為已進行連接的OSD備份節(jié)點,分配標(biāo)簽KEY值,所述標(biāo)簽KEY值的分配,為管理員設(shè)置的OSD備份節(jié)點的標(biāo)簽KEY值定義規(guī)則,根據(jù)該定義規(guī)則,為已保存?zhèn)浞輸?shù)據(jù)的OSD備份節(jié)點分配標(biāo)簽KEY值。
步驟S40,順時針方向依次排列已分配的標(biāo)簽KEY值,形成HASH數(shù)據(jù)環(huán)。
將已分配KEY值的OSD備份節(jié)點按照順時針的方向依次排列,形成一個圓環(huán)的形式,該圓環(huán)是由HASH算法所進行連接及排列的,稱為HASH環(huán),頭尾相接,為一個圓環(huán)的形式,如圖11,圖11為HASH環(huán)物理表現(xiàn)形式圖。
步驟S60,將分配標(biāo)簽KEY值與對應(yīng)已存儲備份數(shù)據(jù)的OSD備份節(jié)點生成映射關(guān)系。
已分配標(biāo)簽KEY值及對應(yīng)的OSD備份節(jié)點,將二者生成映射關(guān)系表,并將該映射關(guān)系表保存至內(nèi)存中,用以在讀取備份數(shù)據(jù)時,先讀取該映射關(guān)系表,用以通過映射關(guān)系表中的KEY值讀取到該標(biāo)簽KEY值對應(yīng)的OSD備份節(jié)點。
進一步的,在采用一致性HASH算法對數(shù)據(jù)進行OSD節(jié)點備份時,若需備份的數(shù)據(jù)是不同的數(shù)據(jù)源,即數(shù)據(jù)來源不是同一個地址。依舊通過一致性HASH算法處理該備份數(shù)據(jù),將所述不同源的數(shù)據(jù)寫入同一個OSD備份節(jié)點中,并通過標(biāo)簽KEY關(guān)聯(lián)映射關(guān)系,按照順時針方向排列有備份數(shù)據(jù)的OSD備份節(jié)點,方便后期快速定位及檢索。
本實施例中,通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點進行關(guān)聯(lián),并將已關(guān)聯(lián)的OSD備份節(jié)點按順時針的方向依次排列,形成HASH數(shù)據(jù)環(huán),繼而通過HASH算法將已排列的OSD備份節(jié)點分配標(biāo)簽KEY值,并將標(biāo)簽KEY值及對應(yīng)的OSD備份節(jié)點生成映射關(guān)系,用以將備份的數(shù)據(jù)關(guān)聯(lián)起來,形成一個完成的數(shù)據(jù)備份環(huán),并能按照順時針的順序定點至指定的OSD備份節(jié)點中讀取備份數(shù)據(jù)。
參照圖3,圖3為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第三實施例的流程示意圖?;谏鲜龇椒ǖ牡谝粚嵤├龇椒?,還包括:
步驟S70,讀取標(biāo)簽KEY值,根據(jù)該KEY值對應(yīng)的映射OSD備份節(jié)點,獲取該OSD備份節(jié)點對應(yīng)的備份數(shù)據(jù)。
在讀取備份數(shù)據(jù)時,首先讀取標(biāo)簽KEY值,通過該標(biāo)簽KEY值對應(yīng)的映射關(guān)系讀取至對應(yīng)的OSD備份節(jié)點,待讀取到對應(yīng)OSD備份節(jié)點后,繼而讀取該OSD備份節(jié)點中所存儲的備份數(shù)據(jù),并根據(jù)該OSD備份節(jié)點所處HASH環(huán)的位置,確認(rèn)該備份數(shù)據(jù)為整個備份數(shù)據(jù)的位置。進一步的,可根據(jù)已排列成HASH環(huán)的OSD備份節(jié)點,對應(yīng)讀取所需備份數(shù)據(jù)。
參照圖4,圖4為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算方法的第四實施例的流程示意圖。基于上述方法的第一實施例,所述方法,還包括:
步驟S80,多線程讀寫數(shù)據(jù),并在讀寫數(shù)據(jù)時添加數(shù)據(jù)鎖,以免出現(xiàn)數(shù)據(jù)混亂。
多線程方式讀寫數(shù)據(jù),所述多線程,指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進而提升整體處理性能。所述讀寫數(shù)據(jù),讀取已備份至OSD備份節(jié)點的備份數(shù)據(jù),在讀取一個OSD備份節(jié)點的備份數(shù)據(jù)時,其他HASH數(shù)據(jù)換中的已保存?zhèn)浞輸?shù)據(jù)的OSD備份節(jié)點添加數(shù)據(jù)鎖,避免在讀取OSD備份節(jié)點的數(shù)據(jù)時,出現(xiàn)數(shù)據(jù)混亂。
在備份通過遠(yuǎn)程WEB或者客戶端傳來的大量數(shù)據(jù)時,通過一致性HASH算法將備份數(shù)據(jù)分離,并備份至OSD備份節(jié)點中,具體結(jié)構(gòu)邏輯參考圖5?;诳蛻舳?、瀏覽器及其他產(chǎn)生會話及數(shù)據(jù)方向,傳輸大量數(shù)據(jù)至服務(wù)器備份,在備份時,通過一致性HASH算法進行備份,首先,通過一致性HASH求余分配該備份數(shù)據(jù)節(jié)點,即分配OSD備份節(jié)點,并通過HASH值確定寫入備份數(shù)據(jù)的某一OSD備份節(jié)點,將備份數(shù)據(jù)寫入后,通過HASH算法連接已寫入備份數(shù)據(jù)的OSD備份節(jié)點,用以檢索查詢備份數(shù)據(jù)。
上述第一至第四實施例的分布式文件系統(tǒng)中節(jié)點選擇計算方法的執(zhí)行主體均可以為數(shù)據(jù)備份需求電子設(shè)備或與該電子設(shè)備關(guān)聯(lián)的其他電子設(shè)備。其中,該電子設(shè)備可以包括但不限于手機、pad、筆記本電腦等。
本發(fā)明進一步提供一種分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)。
參照圖6,圖6為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第一實施例的功能模塊示意圖。
在一實施例中,所述系統(tǒng)包括:獲取模塊10、計算模塊20、備份模塊30。
獲取模塊10,用于在數(shù)據(jù)寫入時,獲取所述數(shù)據(jù)的寫入路徑;
獲取到需備份的數(shù)據(jù),所述數(shù)據(jù)為自遠(yuǎn)端WEB或者客戶端中接收到了某一時刻的大量數(shù)據(jù),為了減少來自網(wǎng)絡(luò)和備份節(jié)點的壓力,對該數(shù)據(jù)進行備份。在將備份數(shù)據(jù)寫入備份節(jié)點之前,定義該備份數(shù)據(jù)的寫入備份節(jié)點,所述定義備份節(jié)點,根據(jù)所述備份數(shù)據(jù)大小確定備份節(jié)點數(shù)量,并根據(jù)備份節(jié)點數(shù)量,平均分布在該備份數(shù)據(jù)中,用以在使用備份節(jié)點備份數(shù)據(jù)時,使用與備份數(shù)據(jù)距離最近的備份節(jié)點備份數(shù)據(jù);在將備份數(shù)據(jù)寫入對應(yīng)備份節(jié)點之前,獲取所述數(shù)據(jù)寫入備份節(jié)點的寫入路徑。所述路徑,為數(shù)據(jù)寫入備份節(jié)點的寫入路徑。
計算模塊20,用于將所述寫入路徑作為HASH算法的計算參數(shù),并根據(jù)所述計算參數(shù)計算HASH值;
將已獲取到的數(shù)據(jù)寫入備份節(jié)點路徑,作為HASH算法計算參數(shù),用以計算HASH值,所述HASH算法,將任意長度的二進制值映射為較短的固定長度的二進制值,即這個小的二進制值稱為HASH值,HASH值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。所述固定長度的HASH值,使得在HASHMAP(基于哈希表的Map接口的實現(xiàn))等可以按照高低位進行位操作,同時能夠提供統(tǒng)一的方式及數(shù)據(jù)唯一的數(shù)值,使得返回HASHCODE(HASHCODE是JDK根據(jù)對象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值)可以作為查找的依據(jù)。
備份模塊30,用于根據(jù)所計算的HASH值以及預(yù)設(shè)HASH算法從預(yù)設(shè)的OSD節(jié)點中確定寫入所述數(shù)據(jù)的節(jié)點,將所述數(shù)據(jù)寫入所確定的節(jié)點。
計算出來的HASH值,即較短的固定長度的二進制值,在以預(yù)設(shè)的OSD備份節(jié)點中,根據(jù)計算出來的HASH值長度,確定寫入數(shù)據(jù)的備份節(jié)點。所述確認(rèn)方式為,以該HASH值為基準(zhǔn),距離最近的一個OSD備份節(jié)點為當(dāng)前寫入備份數(shù)據(jù)的OSD備份節(jié)點,將需備份的數(shù)據(jù)寫入到該節(jié)點中,完成數(shù)據(jù)備份。進一步的,若該OSD備份節(jié)點所存儲的備份數(shù)據(jù)超出預(yù)設(shè)的備份數(shù)據(jù)存儲內(nèi)存,在該OSD備份節(jié)點附近,即兩個OSD備份節(jié)點之間,新建一個OSD備份節(jié)點,進行少量的數(shù)據(jù)遷移,以此分擔(dān)數(shù)據(jù)存儲量過大的OSD備份節(jié)點的備份數(shù)據(jù)。如圖10,圖10為新增OSD備份節(jié)點的表現(xiàn)方式。所述預(yù)設(shè)的備份數(shù)據(jù)存儲內(nèi)存,為管理員設(shè)置的OSD存儲節(jié)點的最大備份內(nèi)存容量,該容量是在高效率數(shù)據(jù)備份及快速讀取數(shù)據(jù)備份數(shù)據(jù)的基礎(chǔ)上,OSD備份節(jié)點所能備份數(shù)據(jù)的最大內(nèi)存。
本實施例中,通過預(yù)設(shè)OSD備份節(jié)點,并使用寫入備份節(jié)點的路徑作為HASH算法的計算參數(shù),計算出的HASH值確定當(dāng)前數(shù)據(jù)備份的OSD備份節(jié)點,并將數(shù)據(jù)寫入該OSD備份節(jié)點完成該OSD備份節(jié)點的數(shù)據(jù)備份工作,通過計算的HASH值確認(rèn)數(shù)據(jù)備份的OSD備份節(jié)點,提高了數(shù)據(jù)備份的效率。
參照圖7,圖7為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第二實施例的功能模塊示意圖。所述系統(tǒng)還包括:連接模塊40、分配模塊50、排列模塊60、生成模塊70。
連接模塊40,用于通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點建立連接;
將已寫入數(shù)據(jù)的OSD備份節(jié)點通過HASH算法建立連接,所述連接OSD備份節(jié)點,為當(dāng)前HASH算法的現(xiàn)有技術(shù);
分配模塊50,用于為OSD節(jié)點分配標(biāo)簽KEY值;
為已進行連接的OSD備份節(jié)點,分配標(biāo)簽KEY值,所述標(biāo)簽KEY值的分配,為管理員設(shè)置的OSD備份節(jié)點的標(biāo)簽KEY值定義規(guī)則,根據(jù)該定義規(guī)則,為已保存?zhèn)浞輸?shù)據(jù)的OSD備份節(jié)點分配標(biāo)簽KEY值。
排列模塊60,用于順時針方向依次排列已分配的標(biāo)簽KEY值,形成HASH數(shù)據(jù)環(huán)。
將已分配KEY值的OSD備份節(jié)點按照順時針的方向依次排列,形成一個圓環(huán)的形式,該圓環(huán)是由HASH算法所進行連接及排列的,稱為HASH環(huán),頭尾相接,為一個圓環(huán)的形式,如圖11,圖11為HASH環(huán)物理表現(xiàn)形式圖。
生成模塊70,用于將分配標(biāo)簽KEY值與對應(yīng)已存儲備份數(shù)據(jù)的OSD備份節(jié)點生成映射關(guān)系。
已分配標(biāo)簽KEY值及對應(yīng)的OSD備份節(jié)點,將二者生成映射關(guān)系表,并將該映射關(guān)系表保存至內(nèi)存中,用以在讀取備份數(shù)據(jù)時,先讀取該映射關(guān)系表,用以通過映射關(guān)系表中的KEY值讀取到該標(biāo)簽KEY值對應(yīng)的OSD備份節(jié)點。
進一步的,在采用一致性HASH算法對數(shù)據(jù)進行OSD節(jié)點備份時,若需備份的數(shù)據(jù)是不同的數(shù)據(jù)源,即數(shù)據(jù)來源不是同一個地址。依舊通過一致性HASH算法處理該備份數(shù)據(jù),將所述不同源的數(shù)據(jù)寫入同一個OSD備份節(jié)點中,并通過標(biāo)簽KEY關(guān)聯(lián)映射關(guān)系,按照順時針方向排列有備份數(shù)據(jù)的OSD備份節(jié)點,方便后期快速定位及檢索。
本實施例中,通過HASH算法將已寫入備份數(shù)據(jù)的OSD備份節(jié)點進行關(guān)聯(lián),并將已關(guān)聯(lián)的OSD備份節(jié)點按順時針的方向依次排列,形成HASH數(shù)據(jù)環(huán),繼而通過HASH算法將已排列的OSD備份節(jié)點分配標(biāo)簽KEY值,并將標(biāo)簽KEY值及對應(yīng)的OSD備份節(jié)點生成映射關(guān)系,用以將備份的數(shù)據(jù)關(guān)聯(lián)起來,形成一個完成的數(shù)據(jù)備份環(huán),并能按照順時針的順序定點至指定的OSD備份節(jié)點中讀取備份數(shù)據(jù)。
參照圖8,圖8為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第三實施例的功能模塊示意圖。所述系統(tǒng)還包括:備份數(shù)據(jù)讀取模塊80。
備份數(shù)據(jù)讀取模塊80,用于讀取標(biāo)簽KEY值,根據(jù)該KEY值對應(yīng)的映射OSD備份節(jié)點,獲取該OSD備份節(jié)點對應(yīng)的備份數(shù)據(jù)。
在讀取備份數(shù)據(jù)時,首先讀取標(biāo)簽KEY值,通過該標(biāo)簽KEY值對應(yīng)的映射關(guān)系讀取至對應(yīng)的OSD備份節(jié)點,待讀取到對應(yīng)OSD備份節(jié)點后,繼而讀取該OSD備份節(jié)點中所存儲的備份數(shù)據(jù),并根據(jù)該OSD備份節(jié)點所處HASH環(huán)的位置,確認(rèn)該備份數(shù)據(jù)為整個備份數(shù)據(jù)的位置。進一步的,可根據(jù)已排列成HASH環(huán)的OSD備份節(jié)點,對應(yīng)讀取所需備份數(shù)據(jù)。
參照圖9,圖9為本發(fā)明分布式文件系統(tǒng)中節(jié)點選擇計算系統(tǒng)的第四實施例的功能模塊示意圖。所述系統(tǒng)還包括:設(shè)置模塊90。
設(shè)置模塊90,用于多線程讀寫數(shù)據(jù),并在讀寫數(shù)據(jù)時添加數(shù)據(jù)鎖,以免出現(xiàn)數(shù)據(jù)混亂。
多線程方式讀寫數(shù)據(jù),所述多線程,指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進而提升整體處理性能。所述讀寫數(shù)據(jù),讀取已備份至OSD備份節(jié)點的備份數(shù)據(jù),在讀取一個OSD備份節(jié)點的備份數(shù)據(jù)時,其他HASH數(shù)據(jù)換中的已保存?zhèn)浞輸?shù)據(jù)的OSD備份節(jié)點添加數(shù)據(jù)鎖,避免在讀取OSD備份節(jié)點的數(shù)據(jù)時,出現(xiàn)數(shù)據(jù)混亂。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。