本發(fā)明實(shí)施例涉及計(jì)算機(jī)存儲(chǔ),具體涉及一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法及系統(tǒng)。
背景技術(shù):
1、隨著數(shù)據(jù)量的爆炸式增長(zhǎng)和對(duì)數(shù)據(jù)處理速度要求的不斷提高,傳統(tǒng)的分布式存儲(chǔ)架構(gòu)面臨著性能瓶頸和擴(kuò)展性限制。諸如內(nèi)存帶寬不足、數(shù)據(jù)傳輸延遲高、存儲(chǔ)資源管理復(fù)雜等問(wèn)題,嚴(yán)重影響了數(shù)據(jù)中心和高性能計(jì)算系統(tǒng)的整體性能。
2、在分布式儲(chǔ)存應(yīng)用中,存儲(chǔ)軟件由于分布式cap理論的限制,無(wú)法構(gòu)建一個(gè)完美的分布式儲(chǔ)存系統(tǒng)。在構(gòu)建分布式儲(chǔ)存系統(tǒng)中,用戶希望搭建的系統(tǒng)能夠持續(xù)提供更可靠的服務(wù),那么就需要滿足數(shù)據(jù)一致性、系統(tǒng)可用性、網(wǎng)絡(luò)分區(qū)容錯(cuò)性的特點(diǎn)。然而在軟件架構(gòu)中的實(shí)際情況是在一致性和可用性之間的搖擺,即是cp與ap之間選擇。
3、由于分布式存儲(chǔ)的單臺(tái)服務(wù)器上受到內(nèi)存擴(kuò)展的限制,導(dǎo)致存儲(chǔ)系統(tǒng)的共享內(nèi)存受限,那么元數(shù)據(jù)服務(wù)器的存儲(chǔ)空間就是瓶頸。如果繼續(xù)搭建內(nèi)存集群,那么系統(tǒng)架構(gòu)會(huì)受到cap理論的限制,會(huì)大大的降低用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、為此,本發(fā)明實(shí)施例提供一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法及系統(tǒng),以解決現(xiàn)有技術(shù)易受到內(nèi)存擴(kuò)展的限制和cap理論的限制、用戶體驗(yàn)差的技術(shù)問(wèn)題。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:
3、根據(jù)本發(fā)明實(shí)施例的第一方面,提供了一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,所述方法應(yīng)用于共享內(nèi)存池,其包括:
4、s1、獲取用戶需求并判斷所述需求的類型,當(dāng)用戶需求為寫(xiě)數(shù)據(jù)請(qǐng)求時(shí),客戶端通過(guò)網(wǎng)絡(luò)發(fā)起寫(xiě)數(shù)據(jù)請(qǐng)求并通過(guò)負(fù)載均衡將所述寫(xiě)數(shù)據(jù)請(qǐng)求分發(fā)至元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到所述寫(xiě)數(shù)據(jù)請(qǐng)求后先檢查所述寫(xiě)數(shù)據(jù)請(qǐng)求的權(quán)限并獲取待寫(xiě)入數(shù)據(jù)文件,根據(jù)當(dāng)前的塊配置信息為所述待寫(xiě)入文件分配數(shù)據(jù)塊,生成數(shù)據(jù)塊分配信息并發(fā)送至客戶端;
5、s2、客戶端接收到所述數(shù)據(jù)塊分配信息后與第一個(gè)數(shù)據(jù)塊的一組數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)建立管道連接,進(jìn)行寫(xiě)入數(shù)據(jù)準(zhǔn)備后向管道中的第一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)發(fā)送數(shù)據(jù),數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到數(shù)據(jù)后,將接收到的數(shù)據(jù)寫(xiě)入本地存儲(chǔ)介質(zhì)并將接收到的數(shù)據(jù)傳輸至管道中的下一數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),所述數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)以預(yù)設(shè)周期向元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)發(fā)送心跳信息,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)利用所述心跳信息更新數(shù)據(jù)塊狀態(tài),當(dāng)所有數(shù)據(jù)塊都成功寫(xiě)入數(shù)據(jù)并元數(shù)據(jù)更新完畢,將完整的元數(shù)據(jù)保存至共享內(nèi)存池中;
6、s3、當(dāng)用戶需求為數(shù)據(jù)讀取請(qǐng)求時(shí),通過(guò)負(fù)載均衡將所述數(shù)據(jù)讀取請(qǐng)求分發(fā)至元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中并獲取對(duì)應(yīng)文件路徑,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到來(lái)自客戶端的請(qǐng)求后,利用對(duì)應(yīng)文件路徑在所述共享內(nèi)存池內(nèi)查找對(duì)應(yīng)的元數(shù)據(jù)并獲取待讀取文件數(shù)據(jù)的數(shù)據(jù)塊信息,從數(shù)據(jù)塊信息中提取數(shù)據(jù)塊位置信息并發(fā)送至客戶端;
7、s4、所述客戶端接收到所述數(shù)據(jù)塊位置信息后于對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)建立連接,用戶端通過(guò)所述數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù)塊。
8、進(jìn)一步地,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到所述寫(xiě)數(shù)據(jù)請(qǐng)求后先檢查所述寫(xiě)數(shù)據(jù)請(qǐng)求的權(quán)限并獲取待寫(xiě)入數(shù)據(jù)文件,還包括:
9、客戶端通過(guò)網(wǎng)絡(luò)發(fā)起寫(xiě)數(shù)據(jù)請(qǐng)求,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到所述寫(xiě)數(shù)據(jù)請(qǐng)求并判斷所述寫(xiě)數(shù)據(jù)請(qǐng)求是否合法;
10、如果所述寫(xiě)數(shù)據(jù)請(qǐng)求為合法請(qǐng)求,則根據(jù)當(dāng)前的塊配置信息為所述待寫(xiě)入文件分配數(shù)據(jù)塊;
11、如果所述寫(xiě)數(shù)據(jù)請(qǐng)求為非法請(qǐng)求,則拒絕所述寫(xiě)數(shù)據(jù)請(qǐng)求。
12、進(jìn)一步地,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)用于將分配的數(shù)據(jù)塊信息記錄在對(duì)應(yīng)元數(shù)據(jù)中。
13、進(jìn)一步地,元數(shù)據(jù)中的信息包括:數(shù)據(jù)塊標(biāo)識(shí)與所在的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)位置。
14、進(jìn)一步地,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)利用所述心跳信息更新元數(shù)據(jù)中的數(shù)據(jù)塊狀態(tài)。
15、進(jìn)一步地,所述數(shù)據(jù)塊信息包括數(shù)據(jù)塊標(biāo)識(shí)與數(shù)據(jù)塊的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)位置信息。
16、進(jìn)一步地,當(dāng)前數(shù)據(jù)塊存儲(chǔ)節(jié)點(diǎn)出現(xiàn)故障/無(wú)法響應(yīng)時(shí),獲取所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)的副本位置信息,從可用的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中讀取副本數(shù)據(jù)塊。
17、根據(jù)本發(fā)明實(shí)施例的第二方面,提供了一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng),所述系統(tǒng)包括:
18、需求分類模塊,用于獲取用戶需求并判斷所述需求的類型,當(dāng)用戶需求為寫(xiě)數(shù)據(jù)請(qǐng)求時(shí),客戶端通過(guò)網(wǎng)絡(luò)發(fā)起寫(xiě)數(shù)據(jù)請(qǐng)求并通過(guò)負(fù)載均衡將所述寫(xiě)數(shù)據(jù)請(qǐng)求分發(fā)至元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到所述寫(xiě)數(shù)據(jù)請(qǐng)求后先檢查所述寫(xiě)數(shù)據(jù)請(qǐng)求的權(quán)限并獲取待寫(xiě)入數(shù)據(jù)文件,根據(jù)當(dāng)前的塊配置信息為所述待寫(xiě)入文件分配數(shù)據(jù)塊,生成數(shù)據(jù)塊分配信息并發(fā)送至客戶端;
19、寫(xiě)數(shù)據(jù)模塊,用于客戶端接收到所述數(shù)據(jù)塊分配信息后與第一個(gè)數(shù)據(jù)塊的一組數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)建立管道連接,進(jìn)行寫(xiě)入數(shù)據(jù)準(zhǔn)備后向管道中的第一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)發(fā)送數(shù)據(jù),數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到數(shù)據(jù)后,將接收到的數(shù)據(jù)寫(xiě)入本地存儲(chǔ)介質(zhì)并將接收到的數(shù)據(jù)傳輸至管道中的下一數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),所述數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)以預(yù)設(shè)周期向元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)發(fā)送心跳信息,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)利用所述心跳信息更新數(shù)據(jù)塊狀態(tài),當(dāng)所有數(shù)據(jù)塊都成功寫(xiě)入數(shù)據(jù)并元數(shù)據(jù)更新完畢,將完整的元數(shù)據(jù)保存至共享內(nèi)存池中;
20、第一讀取模塊,用于當(dāng)用戶需求為數(shù)據(jù)讀取請(qǐng)求時(shí),通過(guò)負(fù)載均衡將所述數(shù)據(jù)讀取請(qǐng)求分發(fā)至元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中并獲取對(duì)應(yīng)文件路徑,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到來(lái)自客戶端的請(qǐng)求后,利用對(duì)應(yīng)文件路徑在所述共享內(nèi)存池內(nèi)查找對(duì)應(yīng)的元數(shù)據(jù)并獲取待讀取文件數(shù)據(jù)的數(shù)據(jù)塊信息,從數(shù)據(jù)塊信息中提取數(shù)據(jù)塊位置信息并發(fā)送至客戶端;
21、第二讀取模塊,用于所述客戶端接收到所述數(shù)據(jù)塊位置信息后于對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)建立連接,用戶端通過(guò)所述數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù)塊。
22、本發(fā)明實(shí)施例具有如下優(yōu)點(diǎn):
23、本發(fā)明實(shí)施例中的元數(shù)據(jù)主節(jié)點(diǎn)生成了元數(shù)據(jù)后,將元數(shù)據(jù)保存到共享內(nèi)存池中,元數(shù)據(jù)主節(jié)點(diǎn)和從節(jié)點(diǎn)都能通過(guò)訪問(wèn)共享內(nèi)存池,獲得元數(shù)據(jù)信息。通過(guò)cxl.mem協(xié)議,實(shí)現(xiàn)高達(dá)2tb的共享內(nèi)存,使分布式文件系統(tǒng)中的數(shù)據(jù)服務(wù)器能夠共享一個(gè)2tb的元數(shù)據(jù)空間,從而顯著提高系統(tǒng)的擴(kuò)展性。cxl.mem協(xié)議的低延遲特性使得通訊性能大幅提升,進(jìn)一步降低了通訊部分的損耗,增強(qiáng)了系統(tǒng)的擴(kuò)展能力;本發(fā)明能夠顯著提高存儲(chǔ)性能,降低數(shù)據(jù)訪問(wèn)延遲,滿足高性能計(jì)算和大數(shù)據(jù)處理的需求同時(shí)增強(qiáng)系統(tǒng)的擴(kuò)展性,能夠輕松應(yīng)對(duì)不斷增長(zhǎng)的數(shù)據(jù)量和業(yè)務(wù)需求;提高元數(shù)據(jù)存儲(chǔ)資源空間的利用率,降低成本;保障元數(shù)據(jù)的可靠性和一致性。
1.一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,所述方法應(yīng)用于共享內(nèi)存池,其包括:
2.如權(quán)利要求1所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)接收到所述寫(xiě)數(shù)據(jù)請(qǐng)求后先檢查所述寫(xiě)數(shù)據(jù)請(qǐng)求的權(quán)限并獲取待寫(xiě)入數(shù)據(jù)文件,還包括:
3.如權(quán)利要求2所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)用于將分配的數(shù)據(jù)塊信息記錄在對(duì)應(yīng)元數(shù)據(jù)中。
4.如權(quán)利要求3所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,元數(shù)據(jù)中的信息包括:數(shù)據(jù)塊標(biāo)識(shí)與所在的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)位置。
5.如權(quán)利要求4所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)利用所述心跳信息更新元數(shù)據(jù)中的數(shù)據(jù)塊狀態(tài)。
6.如權(quán)利要求5所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,所述數(shù)據(jù)塊信息包括數(shù)據(jù)塊標(biāo)識(shí)與數(shù)據(jù)塊的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)位置信息。
7.如權(quán)利要求6所述的一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)方法,其特征在于,當(dāng)前數(shù)據(jù)塊存儲(chǔ)節(jié)點(diǎn)出現(xiàn)故障/無(wú)法響應(yīng)時(shí),獲取所述元數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)的副本位置信息,從可用的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中讀取副本數(shù)據(jù)塊。
8.一種基于集中式元數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng),其特征在于,所述系統(tǒng)包括: