一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法
【專利摘要】本發(fā)明提供一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,包括以下步驟:識(shí)別分布式文件系統(tǒng)的緩存設(shè)備,并進(jìn)行管理;構(gòu)建全局緩存元數(shù)據(jù)服務(wù);客戶端文件數(shù)據(jù)操作解析;全局緩存層文件數(shù)據(jù)分布;全局緩存層文件數(shù)據(jù)保護(hù)處理。本發(fā)明將分布式系統(tǒng)中的多種緩存設(shè)備統(tǒng)一到多級(jí)全局緩存層中,實(shí)現(xiàn)了文件數(shù)據(jù)在多級(jí)緩存中遷移,保證了文件數(shù)據(jù)在快速緩存上,提高了文件數(shù)據(jù)的訪問性能。同時(shí)考慮到多級(jí)全局緩存在分布式文件系統(tǒng)中的各種失效問題,采用文件數(shù)據(jù)冗余機(jī)制保證全局緩存在分布式文件系統(tǒng)中節(jié)點(diǎn)故障時(shí)的可用性,極大的提高了分布式文件系統(tǒng)的文件數(shù)據(jù)訪問效率。
【專利說明】一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種實(shí)現(xiàn)方法,具體涉及一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]隨著分布式文件系統(tǒng)的廣泛應(yīng)用,其提供的存儲(chǔ)容量和節(jié)點(diǎn)規(guī)模變得越來越大,系統(tǒng)對(duì)分布式系統(tǒng)提供的文件操作的性能和可擴(kuò)展性提出了更高的要求。在分布式系統(tǒng)中客戶端的文件訪問請(qǐng)求,經(jīng)過元數(shù)據(jù)服務(wù)器進(jìn)行解析之后,客戶端文件請(qǐng)求最終會(huì)變成對(duì)數(shù)據(jù)服務(wù)器上的對(duì)應(yīng)文件對(duì)象操作,對(duì)于數(shù)據(jù)服務(wù)器的對(duì)象讀寫操作性能直接決定了分布式文件系統(tǒng)的性能。
[0003]而現(xiàn)有磁盤在容量和操作速度上相比CPU,內(nèi)存,網(wǎng)絡(luò)來說存在數(shù)量級(jí)的差異,為了平衡速度的差異,緩存技術(shù)在分布式文件系統(tǒng)中廣泛使用,利用訪問的局部性原理,將訪問盡可能的在快速設(shè)備上操作,以減少對(duì)慢速設(shè)備的訪問,提高系統(tǒng)的訪問帶寬。由于單機(jī)文件系統(tǒng)是分布式文件系統(tǒng)的基本組成部分,數(shù)據(jù)節(jié)點(diǎn)上的文件系統(tǒng)的緩存效率直接關(guān)系到分布式文件系統(tǒng)的整體效率。單機(jī)文件系統(tǒng)一般使用本機(jī)內(nèi)存作文件緩存,通過緩存文件寫和文件預(yù)讀操作,極大的提高了本地文件的操作性能,典型的代表有Linux系統(tǒng)的Page cache系統(tǒng),在內(nèi)存實(shí)現(xiàn)了一個(gè)文件系統(tǒng)緩存。
[0004]新型存儲(chǔ)介質(zhì)如固態(tài)硬盤(SolidState Disk, SSD) NVRAM (Non-VolatileRAM),由于其優(yōu)異的讀寫性能,被廣泛應(yīng)用于內(nèi)存和磁盤之間,作為數(shù)據(jù)緩存,用來保留讀取的熱點(diǎn)數(shù)據(jù)和寫入的數(shù)據(jù),提高存儲(chǔ)系統(tǒng)的讀寫效率。典型的代表有Facebook公司的f Iashcache 技術(shù)等。
[0005]分布式系統(tǒng)的基于內(nèi)存的緩存系統(tǒng),已經(jīng)在互聯(lián)網(wǎng)服務(wù)等領(lǐng)域得到廣泛的應(yīng)用,典型的系統(tǒng)如MemCached系統(tǒng),其在多個(gè)節(jié)點(diǎn)之間構(gòu)建一個(gè)全局的基于內(nèi)存的鍵值存取系統(tǒng)(Key-Value Store),緩存網(wǎng)站的后端數(shù)據(jù)庫查詢結(jié)果等操作,以加速網(wǎng)站的訪問效率。
[0006]然而上現(xiàn)有技術(shù)存在如下問題:
[0007]I)全局特性考慮較少:由于分布式文件系統(tǒng)由多個(gè)節(jié)點(diǎn)組成,需要一種全局緩存技術(shù)來協(xié)同考慮,緩存分布式文件系統(tǒng)的訪問請(qǐng)求,并提供一致,高效的文件操作。單機(jī)緩存系統(tǒng)在全局方面考慮較少。
[0008]2)設(shè)備支持簡(jiǎn)單:現(xiàn)有緩存設(shè)備在訪問速度和容量上存在較大差距,需要緩存系統(tǒng)支持多種設(shè)備,而現(xiàn)有緩存系統(tǒng)支持較為簡(jiǎn)單。
[0009]3)故障處理簡(jiǎn)單:分布式緩存系統(tǒng)由于分布在多個(gè)不同節(jié)點(diǎn),節(jié)點(diǎn)或者緩存設(shè)備存在故障時(shí),需要分布式緩存系統(tǒng)仍然能正確高效的提供緩存服務(wù)。
【發(fā)明內(nèi)容】
[0010]為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,將多種不同分布在不同節(jié)點(diǎn)上的緩存設(shè)備聚合在分布式緩存中,向分布式文件系統(tǒng)提供高效的文件數(shù)據(jù)緩存服務(wù),并且容忍各種系統(tǒng)故障,保證分布式緩存的正確性。
[0011]為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
[0012]本發(fā)明提供一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,所述方法包括以下步驟:
[0013]步驟1:識(shí)別分布式文件系統(tǒng)的緩存設(shè)備,并進(jìn)行管理;
[0014]步驟2:構(gòu)建全局緩存元數(shù)據(jù)服務(wù);
[0015]步驟3:客戶端文件數(shù)據(jù)操作解析;
[0016]步驟4:全局緩存層文件數(shù)據(jù)分布;
[0017]步驟5:全局緩存層文件數(shù)據(jù)保護(hù)處理。
[0018]所述步驟I中,分布式文件系統(tǒng)的緩存層由多級(jí)全局緩存層組成,每級(jí)全局緩存層由分布在不同緩存節(jié)點(diǎn)上的緩存組成,全局緩存層的存儲(chǔ)介質(zhì)包括內(nèi)存卡、固態(tài)硬盤、非易失性隨機(jī)訪問存儲(chǔ)器、磁盤陣列和磁盤等。
[0019]所述緩存節(jié)點(diǎn)上的緩存并不相同,且至少存在一種緩存;
[0020]緩存節(jié)點(diǎn)的物理形態(tài)存在于元數(shù)據(jù)節(jié)點(diǎn)或數(shù)據(jù)節(jié)點(diǎn)上,與元數(shù)據(jù)和數(shù)據(jù)服務(wù)共用服務(wù)器或單獨(dú)使用緩存服務(wù)器,該緩存服務(wù)器只提供緩存服務(wù);
[0021]緩存節(jié)點(diǎn)之間使用高速網(wǎng)絡(luò)連接,通過消息交互共同完成分布式文件系統(tǒng)緩存層的功能。
[0022]所述步驟2中,在分布式文件系統(tǒng)的元數(shù)據(jù)服務(wù)中間增加全局緩存元數(shù)據(jù)服務(wù),全局緩存元數(shù)據(jù)服務(wù)負(fù)責(zé)實(shí)現(xiàn)分布式文件系統(tǒng)全局緩存層的管理,客戶端通過全局緩存元數(shù)據(jù)服務(wù)獲取到文件數(shù)據(jù)對(duì)應(yīng)的緩存,并負(fù)責(zé)緩存的狀態(tài)維護(hù);全局緩存元數(shù)據(jù)服務(wù)分布在多個(gè)緩存節(jié)點(diǎn)上。
[0023]全局緩存元數(shù)據(jù)服務(wù)包括位置解析、狀態(tài)監(jiān)控、頻度監(jiān)控和任務(wù)控制;
[0024]位置解析負(fù)責(zé)客戶端發(fā)起的文件數(shù)據(jù)位置解析,返回文件數(shù)據(jù)所在的全局緩存層,以及在緩存節(jié)點(diǎn)的具體位置信息;
[0025]狀態(tài)監(jiān)控用于監(jiān)控緩存節(jié)點(diǎn)的狀態(tài),如果出現(xiàn)故障,對(duì)出現(xiàn)故障的緩存節(jié)點(diǎn)上的臟緩存實(shí)現(xiàn)緩存重建任務(wù);
[0026]頻度監(jiān)控用于監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,并根據(jù)訪問頻度生成文件數(shù)據(jù)在全局緩存層之間的調(diào)度任務(wù);
[0027]所述任務(wù)控制負(fù)責(zé)與緩存節(jié)點(diǎn)和其他全局緩存元數(shù)據(jù)服務(wù)節(jié)點(diǎn)之間進(jìn)行消息通信,實(shí)現(xiàn)緩存重建任務(wù)和緩存調(diào)度任務(wù)的具體操作。
[0028]所述頻度監(jiān)控使用權(quán)重監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,全局緩存層依據(jù)該文件數(shù)據(jù)的權(quán)重進(jìn)行數(shù)據(jù)塊在多層緩存層中間的替換操作;權(quán)重Q表示為:
[0029]Q = A1*(1/I)+A2*F
[0030]其中,I表示上次文件數(shù)據(jù)訪問的間隔時(shí)間,Al為訪問間隔時(shí)間的加權(quán)因子,F(xiàn)表示本文件數(shù)據(jù)的訪問次數(shù),A2為訪問次數(shù)的加權(quán)因子。
[0031]所述步驟3中,客戶端數(shù)據(jù)先發(fā)送給全局緩存元數(shù)據(jù)服務(wù),確定數(shù)據(jù)操作對(duì)應(yīng)的全局緩存層的位置,然后客戶端和該全局緩存層交互,共同完成客戶端文件數(shù)據(jù)操作解析;具體包括以下步驟:
[0032]步驟3-1:客戶端首先向全局緩存元數(shù)據(jù)服務(wù)發(fā)起文件數(shù)據(jù)查詢操作,確定對(duì)應(yīng)文件數(shù)據(jù)是否存在于全局緩存層的緩存中;
[0033]步驟3-2:若發(fā)現(xiàn)全局緩存層的緩存中存在文件數(shù)據(jù),則進(jìn)行客戶端文件數(shù)據(jù)的讀寫處理,并更新文件數(shù)據(jù)的訪問時(shí)間和頻度;客戶端文件數(shù)據(jù)讀寫處理具體步驟如下:
[0034]步驟3-2-1:對(duì)于文件數(shù)據(jù)讀操作,直接返回文件數(shù)據(jù);
[0035]步驟3-2-2:對(duì)于文件數(shù)據(jù)修改操作,在全局緩存層中對(duì)文件數(shù)據(jù)進(jìn)行加緩存鎖,修改文件數(shù)據(jù),并設(shè)置對(duì)應(yīng)文件數(shù)據(jù)為已修改,完成修改之后解除對(duì)應(yīng)緩存鎖;后臺(tái)線程進(jìn)行數(shù)據(jù)向后端數(shù)據(jù)服務(wù)器的回刷操作;
[0036]步驟3-3:若所有全局緩存層中均不存在文件數(shù)據(jù),通知數(shù)據(jù)節(jié)點(diǎn)從磁盤上加載文件數(shù)據(jù),并將文件數(shù)據(jù)直接返回給客戶端,更新元數(shù)據(jù)服務(wù)的文件數(shù)據(jù)記錄,如果超過預(yù)設(shè)訪問頻度,執(zhí)行文件數(shù)據(jù)調(diào)入全局緩存層操作。
[0037]所述步驟4中,全局緩存層在接收到文件數(shù)據(jù)后,將數(shù)據(jù)寫入到對(duì)應(yīng)的緩存設(shè)備上,更新全局緩存元數(shù)據(jù)服務(wù)中的文件數(shù)據(jù),并將文件數(shù)據(jù)分布在不同層級(jí)的全局緩存層上。
[0038]所述步驟4具體包括以下步驟:
[0039]步驟4-1:設(shè)第M層全局緩存元數(shù)據(jù)服務(wù)的權(quán)值預(yù)定義為Q(M),其中緩存的文件數(shù)據(jù)的權(quán)值Q(b)范圍為Q(M-1)彡Q(b) < Q(M);
[0040]步驟4-2:客戶端訪問文件數(shù)據(jù)后,根據(jù)重新計(jì)算的權(quán)值Q(bn),由全局緩存層元數(shù)據(jù)服務(wù)模塊將文件數(shù)據(jù)載入到對(duì)應(yīng)的全局緩存層中,定義M-1層的緩存設(shè)備相比M層的緩存設(shè)備性能高,容量大,價(jià)格便宜;
[0041]步驟4-3:全局緩存元數(shù)據(jù)服務(wù)根據(jù)重新計(jì)算的文件數(shù)據(jù)權(quán)重Q(bn)確定文件數(shù)據(jù)需要挪動(dòng)到具體的全局緩存層X ;如果該文件數(shù)據(jù)被客戶端頻繁訪問,需要將文件數(shù)據(jù)挪動(dòng)到高性能的全局緩存層中,以加快文件數(shù)據(jù)操作速度;如果該文件數(shù)據(jù)很少被訪問,則需要將文件數(shù)據(jù)放置到低性能且大容量的緩存設(shè)備中,以提高緩存的整體利用率;確定將該文件數(shù)據(jù)移動(dòng)的全局緩存層X后,文件數(shù)據(jù)存放在本全局緩存層X的具體緩存設(shè)備;
[0042]步驟4-4:文件數(shù)據(jù)在全局緩存層X進(jìn)行放置,出現(xiàn)如下三種情況:
[0043](I)如果對(duì)應(yīng)全局緩存層M存在空閑位置,則直接將文件數(shù)據(jù)放入全局緩存層M中空閑位置對(duì)應(yīng)節(jié)點(diǎn)即可;
[0044](2)如果對(duì)應(yīng)全局緩存層M中不存在空閑位置,則使用緩存替換算法,將最少使用的文件數(shù)據(jù)移動(dòng)到全局緩存層M+1中,移動(dòng)完成之后執(zhí)行步驟4-1,將文件數(shù)據(jù)放入到全局緩存層M中;緩存替換算法包括LRU算法和隨機(jī)替換算法;
[0045](3)如果需要替換的文件數(shù)據(jù)在多級(jí)全局緩存的最下一層,將文件數(shù)據(jù)替換出多級(jí)全局緩存層中,寫入到分布式文件系統(tǒng)的數(shù)據(jù)服務(wù)器上;
[0046]步驟4-5:在步驟4-4完成后,更新步驟2對(duì)應(yīng)的全局緩存元數(shù)據(jù)服務(wù)上的位置信肩、O
[0047]所述步驟5中,使用數(shù)據(jù)冗余技術(shù),將文件數(shù)據(jù)在全局緩存層中放置多份,以保證文件數(shù)據(jù)在全局緩存層的部分緩存設(shè)備發(fā)生故障之后,文件數(shù)據(jù)仍然安全可用;具體包括以下步驟:
[0048]步驟5-1:在文件數(shù)據(jù)調(diào)度進(jìn)入全局緩存層時(shí),由全局緩存元數(shù)據(jù)服務(wù)將該文件數(shù)據(jù)生成幾份文件數(shù)據(jù),并放置在具體的全局緩存層對(duì)應(yīng)的緩存設(shè)備中,生成文件數(shù)據(jù)的份數(shù)和位置信息由預(yù)先定義的策略決定;
[0049]步驟5-2:全局緩存層根據(jù)文件數(shù)據(jù)的份數(shù)和位置信息,將文件數(shù)據(jù)存放到對(duì)應(yīng)的全局緩存層中;
[0050]步驟5-3:全局緩存層發(fā)現(xiàn)在緩存節(jié)點(diǎn)或者緩存節(jié)點(diǎn)上的緩存設(shè)備出現(xiàn)故障時(shí),確定出現(xiàn)故障的文件數(shù)據(jù)的位置和數(shù)量,將對(duì)應(yīng)的文件數(shù)據(jù)在其他緩存節(jié)點(diǎn)上進(jìn)行緩存重建操作;在緩存重建操作完成后,更新全局緩存元數(shù)據(jù)服務(wù)上的信息,將重建的緩存信息加入全局緩存元數(shù)據(jù)服務(wù),此時(shí)重建數(shù)據(jù)對(duì)應(yīng)的全局緩存層也同時(shí)向外提供緩存服務(wù)。
[0051]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0052]本發(fā)明提供的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法將分布式系統(tǒng)中的多種緩存設(shè)備統(tǒng)一到多級(jí)全局緩存層中,實(shí)現(xiàn)了文件數(shù)據(jù)在多級(jí)緩存中遷移,保證了文件數(shù)據(jù)在快速緩存上,提高了文件數(shù)據(jù)的訪問性能。同時(shí)考慮到多級(jí)全局緩存在分布式文件系統(tǒng)中的各種失效問題,采用文件數(shù)據(jù)冗余機(jī)制保證全局緩存在分布式文件系統(tǒng)中節(jié)點(diǎn)故障時(shí)的可用性,極大的提高了分布式文件系統(tǒng)的文件數(shù)據(jù)訪問效率。
【專利附圖】
【附圖說明】
[0053]圖1是本發(fā)明實(shí)施例中全局緩存元數(shù)據(jù)服務(wù)分布示意圖;
[0054]圖2是本發(fā)明實(shí)施例中全局緩存元數(shù)據(jù)服務(wù)示意圖;
[0055]圖3是本發(fā)明實(shí)施例中全局緩存層示意圖。
【具體實(shí)施方式】
[0056]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0057]本發(fā)明提供一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,所述方法包括以下步驟:
[0058]步驟1:識(shí)別分布式文件系統(tǒng)的緩存設(shè)備,并進(jìn)行管理;
[0059]步驟2:構(gòu)建全局緩存元數(shù)據(jù)服務(wù);
[0060]步驟3:客戶端文件數(shù)據(jù)操作解析;
[0061]步驟4:全局緩存層文件數(shù)據(jù)分布;
[0062]步驟5:全局緩存層文件數(shù)據(jù)保護(hù)處理。
[0063]所述步驟I中,分布式文件系統(tǒng)的緩存層由多級(jí)全局緩存層組成,每級(jí)全局緩存層由分布在不同緩存節(jié)點(diǎn)上的緩存組成,全局緩存層的存儲(chǔ)介質(zhì)包括內(nèi)存卡、固態(tài)硬盤、非易失性隨機(jī)訪問存儲(chǔ)器、磁盤陣列和磁盤等。
[0064]所述緩存節(jié)點(diǎn)上的緩存并不相同,且至少存在一種緩存;
[0065]緩存節(jié)點(diǎn)的物理形態(tài)存在于元數(shù)據(jù)節(jié)點(diǎn)或數(shù)據(jù)節(jié)點(diǎn)上,與元數(shù)據(jù)和數(shù)據(jù)服務(wù)共用服務(wù)器或單獨(dú)使用緩存服務(wù)器,該緩存服務(wù)器只提供緩存服務(wù);
[0066]緩存節(jié)點(diǎn)之間使用高速網(wǎng)絡(luò)連接,通過消息交互共同完成分布式文件系統(tǒng)緩存層的功能。
[0067]所述步驟2中,在分布式文件系統(tǒng)的元數(shù)據(jù)服務(wù)中間增加全局緩存元數(shù)據(jù)服務(wù),全局緩存元數(shù)據(jù)服務(wù)負(fù)責(zé)實(shí)現(xiàn)分布式文件系統(tǒng)全局緩存層的管理,客戶端通過全局緩存元數(shù)據(jù)服務(wù)獲取到文件數(shù)據(jù)對(duì)應(yīng)的緩存,并負(fù)責(zé)緩存的狀態(tài)維護(hù);全局緩存元數(shù)據(jù)服務(wù)分布在多個(gè)緩存節(jié)點(diǎn)上(如圖1)。
[0068]如圖2,全局緩存元數(shù)據(jù)服務(wù)包括位置解析、狀態(tài)監(jiān)控、頻度監(jiān)控和任務(wù)控制;
[0069]位置解析負(fù)責(zé)客戶端發(fā)起的文件數(shù)據(jù)位置解析,返回文件數(shù)據(jù)所在的全局緩存層,以及在緩存節(jié)點(diǎn)的具體位置信息;
[0070]狀態(tài)監(jiān)控用于監(jiān)控緩存節(jié)點(diǎn)的狀態(tài),如果出現(xiàn)故障,對(duì)出現(xiàn)故障的緩存節(jié)點(diǎn)上的臟緩存實(shí)現(xiàn)緩存重建任務(wù);
[0071]頻度監(jiān)控用于監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,并根據(jù)訪問頻度生成文件數(shù)據(jù)在全局緩存層之間的調(diào)度任務(wù);
[0072]任務(wù)控制負(fù)責(zé)與緩存節(jié)點(diǎn)和其他全局緩存元數(shù)據(jù)服務(wù)節(jié)點(diǎn)之間進(jìn)行消息通信,實(shí)現(xiàn)緩存重建任務(wù)和緩存調(diào)度任務(wù)的具體操作。
[0073]所述頻度監(jiān)控使用權(quán)重監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,全局緩存層依據(jù)該文件數(shù)據(jù)的權(quán)重進(jìn)行數(shù)據(jù)塊在多層緩存層中間的替換操作;權(quán)重Q表示為:
[0074]Q = A1*(1/I)+A2*F
[0075]其中,I表示上次文件數(shù)據(jù)訪問的間隔時(shí)間,Al為訪問間隔時(shí)間的加權(quán)因子,F(xiàn)表示本文件數(shù)據(jù)的訪問次數(shù),A2為訪問次數(shù)的加權(quán)因子??紤]到了最近訪問時(shí)間和訪問頻度,最近訪問的熱點(diǎn)數(shù)據(jù),權(quán)重Q較大,因此更有可能存在高層次的緩存中,從而提高了熱點(diǎn)數(shù)據(jù)的訪問性能。
[0076]文件塊權(quán)重的計(jì)算情景為:
[0077]情景1:分布式文件系統(tǒng)的元數(shù)據(jù)服務(wù)記錄每一個(gè)文件的訪問頻度和訪問時(shí)間,并根據(jù)此頻度更新全局緩存層元數(shù)據(jù)服務(wù)中的相應(yīng)權(quán)重。
[0078]情景2:分布式文件系統(tǒng)通過API主動(dòng)設(shè)置文件的權(quán)重,以指定將文件對(duì)應(yīng)的數(shù)據(jù)塊放置到對(duì)應(yīng)緩存層中。
[0079]所述步驟3中,客戶端數(shù)據(jù)先發(fā)送給全局緩存元數(shù)據(jù)服務(wù),確定數(shù)據(jù)操作對(duì)應(yīng)的全局緩存層的位置,然后客戶端和該全局緩存層交互,共同完成客戶端文件數(shù)據(jù)操作解析;具體包括以下步驟:
[0080]步驟3-1:客戶端首先向全局緩存元數(shù)據(jù)服務(wù)發(fā)起文件數(shù)據(jù)查詢操作,確定對(duì)應(yīng)文件數(shù)據(jù)是否存在于全局緩存層的緩存中;
[0081]步驟3-2:若發(fā)現(xiàn)全局緩存層的緩存中存在文件數(shù)據(jù),則進(jìn)行客戶端文件數(shù)據(jù)的讀寫處理,并更新文件數(shù)據(jù)的訪問時(shí)間和頻度;客戶端文件數(shù)據(jù)讀寫處理具體步驟如下:
[0082]步驟3-2-1:對(duì)于文件數(shù)據(jù)讀操作,直接返回文件數(shù)據(jù);
[0083]步驟3-2-2:對(duì)于文件數(shù)據(jù)修改操作,在全局緩存層中對(duì)文件數(shù)據(jù)進(jìn)行加緩存鎖,修改文件數(shù)據(jù),并設(shè)置對(duì)應(yīng)文件數(shù)據(jù)為已修改,完成修改之后解除對(duì)應(yīng)緩存鎖;后臺(tái)線程進(jìn)行數(shù)據(jù)向后端數(shù)據(jù)服務(wù)器的回刷操作;
[0084]步驟3-3:若所有全局緩存層中均不存在文件數(shù)據(jù),通知數(shù)據(jù)節(jié)點(diǎn)從磁盤上加載文件數(shù)據(jù),并將文件數(shù)據(jù)直接返回給客戶端,更新元數(shù)據(jù)服務(wù)的文件數(shù)據(jù)記錄,如果超過預(yù)設(shè)訪問頻度,執(zhí)行文件數(shù)據(jù)調(diào)入全局緩存層操作。
[0085]所述步驟4中,全局緩存層在接收到文件數(shù)據(jù)后,將數(shù)據(jù)寫入到對(duì)應(yīng)的緩存設(shè)備上,更新全局緩存元數(shù)據(jù)服務(wù)中的文件數(shù)據(jù),并將文件數(shù)據(jù)分布在不同層級(jí)的全局緩存層上。
[0086]所述步驟4具體包括以下步驟:
[0087]步驟4-1:設(shè)第M層全局緩存元數(shù)據(jù)服務(wù)的權(quán)值預(yù)定義為Q(M),其中緩存的文件數(shù)據(jù)的權(quán)值Q(b)范圍為Q(M-1)彡Q(b) < Q(M)(如圖3);
[0088]步驟4-2:客戶端訪問文件數(shù)據(jù)后,根據(jù)重新計(jì)算的權(quán)值Q(bn),由全局緩存層元數(shù)據(jù)服務(wù)模塊將文件數(shù)據(jù)載入到對(duì)應(yīng)的全局緩存層中,定義M-1層的緩存設(shè)備相比M層的緩存設(shè)備性能高,容量大,價(jià)格便宜;M+1層的全局緩存使用的緩存設(shè)備相比M層的緩存設(shè)備性能低,容量大,價(jià)格便宜;
[0089]步驟4-3:全局緩存元數(shù)據(jù)服務(wù)根據(jù)重新計(jì)算的文件數(shù)據(jù)權(quán)重Q(bn)確定文件數(shù)據(jù)需要挪動(dòng)到具體的全局緩存層X ;如果該文件數(shù)據(jù)被客戶端頻繁訪問,需要將文件數(shù)據(jù)挪動(dòng)到高性能的全局緩存層中,以加快文件數(shù)據(jù)操作速度;如果該文件數(shù)據(jù)很少被訪問,則需要將文件數(shù)據(jù)放置到低性能且大容量的緩存設(shè)備中,以提高緩存的整體利用率;確定將該文件數(shù)據(jù)移動(dòng)的全局緩存層X后,文件數(shù)據(jù)存放在本全局緩存層X的具體緩存設(shè)備;
[0090]步驟4-4:文件數(shù)據(jù)在全局緩存層X進(jìn)行放置,出現(xiàn)如下三種情況:
[0091](I)如果對(duì)應(yīng)全局緩存層M存在空閑位置,則直接將文件數(shù)據(jù)放入全局緩存層M中空閑位置對(duì)應(yīng)節(jié)點(diǎn)即可;
[0092](2)如果對(duì)應(yīng)全局緩存層M中不存在空閑位置,則使用緩存替換算法,將最少使用的文件數(shù)據(jù)移動(dòng)到全局緩存層M+1中,移動(dòng)完成之后執(zhí)行步驟4-1,將文件數(shù)據(jù)放入到全局緩存層M中;緩存替換算法包括LRU算法和隨機(jī)替換算法;
[0093](3)如果需要替換的文件數(shù)據(jù)在多級(jí)全局緩存的最下一層,將文件數(shù)據(jù)替換出多級(jí)全局緩存層中,寫入到分布式文件系統(tǒng)的數(shù)據(jù)服務(wù)器上;
[0094]步驟4-5:在步驟4-4完成后,更新步驟2對(duì)應(yīng)的全局緩存元數(shù)據(jù)服務(wù)上的位置信肩、O
[0095]所述步驟5中,使用數(shù)據(jù)冗余技術(shù),將文件數(shù)據(jù)在全局緩存層中放置多份,以保證文件數(shù)據(jù)在全局緩存層的部分緩存設(shè)備發(fā)生故障之后,文件數(shù)據(jù)仍然安全可用;具體包括以下步驟:
[0096]步驟5-1:在文件數(shù)據(jù)調(diào)度進(jìn)入全局緩存層時(shí),由全局緩存元數(shù)據(jù)服務(wù)將該文件數(shù)據(jù)生成幾份文件數(shù)據(jù),并放置在具體的全局緩存層對(duì)應(yīng)的緩存設(shè)備中,生成文件數(shù)據(jù)的份數(shù)和位置信息由預(yù)先定義的策略決定;
[0097]步驟5-2:全局緩存層根據(jù)文件數(shù)據(jù)的份數(shù)和位置信息,將文件數(shù)據(jù)存放到對(duì)應(yīng)的全局緩存層中;
[0098]步驟5-3:全局緩存層發(fā)現(xiàn)在緩存節(jié)點(diǎn)或者緩存節(jié)點(diǎn)上的緩存設(shè)備出現(xiàn)故障時(shí),確定出現(xiàn)故障的文件數(shù)據(jù)的位置和數(shù)量,將對(duì)應(yīng)的文件數(shù)據(jù)在其他緩存節(jié)點(diǎn)上進(jìn)行緩存重建操作;在緩存重建操作完成后,更新全局緩存元數(shù)據(jù)服務(wù)上的信息,將重建的緩存信息加入全局緩存元數(shù)據(jù)服務(wù),此時(shí)重建數(shù)據(jù)對(duì)應(yīng)的全局緩存層也同時(shí)向外提供緩存服務(wù)。
[0099]最后應(yīng)當(dāng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其限制,所屬領(lǐng)域的普通技術(shù)人員參照上述實(shí)施例依然可以對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行修改或者等同替換,這些未脫離本發(fā)明精神和范圍的任何修改或者等同替換,均在申請(qǐng)待批的本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述方法包括以下步驟: 步驟1:識(shí)別分布式文件系統(tǒng)的緩存設(shè)備,并進(jìn)行管理; 步驟2:構(gòu)建全局緩存元數(shù)據(jù)服務(wù); 步驟3:客戶端文件數(shù)據(jù)操作解析; 步驟4:全局緩存層文件數(shù)據(jù)分布; 步驟5:全局緩存層文件數(shù)據(jù)保護(hù)處理。
2.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟1中,分布式文件系統(tǒng)的緩存層由多級(jí)全局緩存層組成,每級(jí)全局緩存層由分布在不同緩存節(jié)點(diǎn)上的緩存組成,全局緩存層的存儲(chǔ)介質(zhì)包括內(nèi)存卡、固態(tài)硬盤、非易失性隨機(jī)訪問存儲(chǔ)器、磁盤陣列和磁盤等。
3.根據(jù)權(quán)利要求2所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述緩存節(jié)點(diǎn)上的緩存并不相同,且至少存在一種緩存; 緩存節(jié)點(diǎn)的物理形態(tài)存在于元數(shù)據(jù)節(jié)點(diǎn)或數(shù)據(jù)節(jié)點(diǎn)上,與元數(shù)據(jù)和數(shù)據(jù)服務(wù)共用服務(wù)器或單獨(dú)使用緩存服務(wù)器,該緩存服務(wù)器只提供緩存服務(wù); 緩存節(jié)點(diǎn)之間使用高速網(wǎng)絡(luò)連接,通過消息交互共同完成分布式文件系統(tǒng)緩存層的功倉泛。
4.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟2中,在分布式文件系統(tǒng)的元數(shù)據(jù)服務(wù)中間增加全局緩存元數(shù)據(jù)服務(wù),全局緩存元數(shù)據(jù)服務(wù)負(fù)責(zé)實(shí)現(xiàn)分布式文件系統(tǒng)全局緩存層的管理,客戶端通過全局緩存元數(shù)據(jù)服務(wù)獲取到文件數(shù)據(jù)對(duì)應(yīng)的緩存,并負(fù)責(zé)緩存的狀態(tài)維護(hù);全局緩存元數(shù)據(jù)服務(wù)分布在多個(gè)緩存節(jié)點(diǎn)上。
5.根據(jù)權(quán)利要求4所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:全局緩存元數(shù)據(jù)服務(wù)包括位置解析、狀態(tài)監(jiān)控、頻度監(jiān)控和任務(wù)控制; 位置解析負(fù)責(zé)客戶端發(fā)起的文件數(shù)據(jù)位置解析,返回文件數(shù)據(jù)所在的全局緩存層,以及在緩存節(jié)點(diǎn)的具體位置信息; 狀態(tài)監(jiān)控用于監(jiān)控緩存節(jié)點(diǎn)的狀態(tài),如果出現(xiàn)故障,對(duì)出現(xiàn)故障的緩存節(jié)點(diǎn)上的臟緩存實(shí)現(xiàn)緩存重建任務(wù); 頻度監(jiān)控用于監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,并根據(jù)訪問頻度生成文件數(shù)據(jù)在全局緩存層之間的調(diào)度任務(wù); 任務(wù)控制負(fù)責(zé)與緩存節(jié)點(diǎn)和其他全局緩存元數(shù)據(jù)服務(wù)節(jié)點(diǎn)之間進(jìn)行消息通信,實(shí)現(xiàn)緩存重建任務(wù)和緩存調(diào)度任務(wù)的具體操作。
6.根據(jù)權(quán)利要求5所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述頻度監(jiān)控使用權(quán)重監(jiān)控緩存中的文件數(shù)據(jù)訪問頻度,全局緩存層依據(jù)該文件數(shù)據(jù)的權(quán)重進(jìn)行數(shù)據(jù)塊在多層緩存層中間的替換操作;權(quán)重Q表示為:
Q = A1*(1/I)+A2*F 其中,I表示上次文件數(shù)據(jù)訪問的間隔時(shí)間,A1為訪問間隔時(shí)間的加權(quán)因子,F(xiàn)表示本文件數(shù)據(jù)的訪問次數(shù),A2為訪問次數(shù)的加權(quán)因子。
7.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟3中,客戶端數(shù)據(jù)先發(fā)送給全局緩存元數(shù)據(jù)服務(wù),確定數(shù)據(jù)操作對(duì)應(yīng)的全局緩存層的位置,然后客戶端和該全局緩存層交互,共同完成客戶端文件數(shù)據(jù)操作解析;具體包括以下步驟: 步驟3-1:客戶端首先向全局緩存元數(shù)據(jù)服務(wù)發(fā)起文件數(shù)據(jù)查詢操作,確定對(duì)應(yīng)文件數(shù)據(jù)是否存在于全局緩存層的緩存中; 步驟3-2:若發(fā)現(xiàn)全局緩存層的緩存中存在文件數(shù)據(jù),則進(jìn)行客戶端文件數(shù)據(jù)的讀寫處理,并更新文件數(shù)據(jù)的訪問時(shí)間和頻度;客戶端文件數(shù)據(jù)讀寫處理具體步驟如下: 步驟3-2-1:對(duì)于文件數(shù)據(jù)讀操作,直接返回文件數(shù)據(jù); 步驟3-2-2:對(duì)于文件數(shù)據(jù)修改操作,在全局緩存層中對(duì)文件數(shù)據(jù)進(jìn)行加緩存鎖,修改文件數(shù)據(jù),并設(shè)置對(duì)應(yīng)文件數(shù)據(jù)為已修改,完成修改之后解除對(duì)應(yīng)緩存鎖;后臺(tái)線程進(jìn)行數(shù)據(jù)向后端數(shù)據(jù)服務(wù)器的回刷操作; 步驟3-3:若所有全局緩存層中均不存在文件數(shù)據(jù),通知數(shù)據(jù)節(jié)點(diǎn)從磁盤上加載文件數(shù)據(jù),并將文件數(shù)據(jù)直接返回給客戶端,更新元數(shù)據(jù)服務(wù)的文件數(shù)據(jù)記錄,如果超過預(yù)設(shè)訪問頻度,執(zhí)行文件數(shù)據(jù)調(diào)入全局緩存層操作。
8.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟4中,全局緩存層在接收到文件數(shù)據(jù)后,將數(shù)據(jù)寫入到對(duì)應(yīng)的緩存設(shè)備上,更新全局緩存元數(shù)據(jù)服務(wù)中的文件數(shù)據(jù),并將文件數(shù)據(jù)分布在不同層級(jí)的全局緩存層上。
9.根據(jù)權(quán)利要求4所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟4具體包括以下步驟: 步驟4-1:設(shè)第M層全局緩存元數(shù)據(jù)服務(wù)的權(quán)值預(yù)定義為Q(M),其中緩存的文件數(shù)據(jù)的權(quán)值 Q(b)范圍為 Q(M-1)彡 Q(b) < Q(M); 步驟4-2:客戶端訪問文件數(shù)據(jù)后,根據(jù)重新計(jì)算的權(quán)值Q(bn),由全局緩存層元數(shù)據(jù)服務(wù)模塊將文件數(shù)據(jù)載入到對(duì)應(yīng)的全局緩存層中,定義M-1層的緩存設(shè)備相比M層的緩存設(shè)備性能高,容量大,價(jià)格便宜; 步驟4-3:全局緩存元數(shù)據(jù)服務(wù)根據(jù)重新計(jì)算的文件數(shù)據(jù)權(quán)重Q(bn)確定文件數(shù)據(jù)需要挪動(dòng)到具體的全局緩存層X ;如果該文件數(shù)據(jù)被客戶端頻繁訪問,需要將文件數(shù)據(jù)挪動(dòng)到高性能的全局緩存層中,以加快文件數(shù)據(jù)操作速度;如果該文件數(shù)據(jù)很少被訪問,則需要將文件數(shù)據(jù)放置到低性能且大容量的緩存設(shè)備中,以提高緩存的整體利用率;確定將該文件數(shù)據(jù)移動(dòng)的全局緩存層X后,文件數(shù)據(jù)存放在本全局緩存層X的具體緩存設(shè)備; 步驟4-4:文件數(shù)據(jù)在全局緩存層X進(jìn)行放置,出現(xiàn)如下三種情況: (1)如果對(duì)應(yīng)全局緩存層M存在空閑位置,則直接將文件數(shù)據(jù)放入全局緩存層M中空閑位置對(duì)應(yīng)節(jié)點(diǎn)即可; (2)如果對(duì)應(yīng)全局緩存層M中不存在空閑位置,則使用緩存替換算法,將最少使用的文件數(shù)據(jù)移動(dòng)到全局緩存層M+1中,移動(dòng)完成之后執(zhí)行步驟4-1,將文件數(shù)據(jù)放入到全局緩存層M中;緩存替換算法包括LRU算法和隨機(jī)替換算法; (3)如果需要替換的文件數(shù)據(jù)在多級(jí)全局緩存的最下一層,將文件數(shù)據(jù)替換出多級(jí)全局緩存層中,寫入到分布式文件系統(tǒng)的數(shù)據(jù)服務(wù)器上; 步驟4-5:在步驟4-4完成后,更新步驟2對(duì)應(yīng)的全局緩存元數(shù)據(jù)服務(wù)上的位置信息。
10.根據(jù)權(quán)利要求1所述的分布式文件系統(tǒng)多級(jí)緩存實(shí)現(xiàn)方法,其特征在于:所述步驟5中,使用數(shù)據(jù)冗余技術(shù),將文件數(shù)據(jù)在全局緩存層中放置多份,以保證文件數(shù)據(jù)在全局緩存層的部分緩存設(shè)備發(fā)生故障之后,文件數(shù)據(jù)仍然安全可用;具體包括以下步驟: 步驟5-1:在文件數(shù)據(jù)調(diào)度進(jìn)入全局緩存層時(shí),由全局緩存元數(shù)據(jù)服務(wù)將該文件數(shù)據(jù)生成幾份文件數(shù)據(jù),并放置在具體的全局緩存層對(duì)應(yīng)的緩存設(shè)備中,生成文件數(shù)據(jù)的份數(shù)和位置信息由預(yù)先定義的策略決定; 步驟5-2:全局緩存層根據(jù)文件數(shù)據(jù)的份數(shù)和位置信息,將文件數(shù)據(jù)存放到對(duì)應(yīng)的全局緩存層中; 步驟5-3:全局緩存層發(fā)現(xiàn)在緩存節(jié)點(diǎn)或者緩存節(jié)點(diǎn)上的緩存設(shè)備出現(xiàn)故障時(shí),確定出現(xiàn)故障的文件數(shù)據(jù)的位置和數(shù)量,將對(duì)應(yīng)的文件數(shù)據(jù)在其他緩存節(jié)點(diǎn)上進(jìn)行緩存重建操作;在緩存重建操作完成后,更新全局緩存元數(shù)據(jù)服務(wù)上的信息,將重建的緩存信息加入全局緩存元數(shù)據(jù)服務(wù),此時(shí)重建數(shù)據(jù)對(duì)應(yīng)的全局緩存層也同時(shí)向外提供緩存服務(wù)。
【文檔編號(hào)】G06F11/14GK104317736SQ201410508442
【公開日】2015年1月28日 申請(qǐng)日期:2014年9月28日 優(yōu)先權(quán)日:2014年9月28日
【發(fā)明者】張攀勇, 彭成, 季旻, 苗艷超 申請(qǐng)人:曙光信息產(chǎn)業(yè)股份有限公司