一種內(nèi)容分級(jí)存儲(chǔ)裝置、內(nèi)容獲取方法及內(nèi)容獲取裝置制造方法
【專利摘要】本發(fā)明提供了一種內(nèi)容分級(jí)存儲(chǔ)裝置、內(nèi)容獲取方法及內(nèi)容獲取裝置,其中,內(nèi)容分級(jí)存儲(chǔ)裝置包括多級(jí)存儲(chǔ)器和多級(jí)存儲(chǔ)映射表,其中,所述存儲(chǔ)器包括多個(gè)空間大小相同的分片存儲(chǔ)單元,所述分片存儲(chǔ)單元用于存儲(chǔ)文件的分片數(shù)據(jù);且N級(jí)存儲(chǔ)器(N為大于1的整數(shù))的分片存儲(chǔ)單元的空間大小為一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小的整數(shù)倍;所述多級(jí)存儲(chǔ)映射表用于記錄存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)與各級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的映射關(guān)系。本發(fā)明實(shí)施例將能使文件的分片數(shù)據(jù)存儲(chǔ)到具有不同分片大小的各級(jí)存儲(chǔ)器中,并且在各級(jí)存儲(chǔ)器中靈活地進(jìn)行切換,將熱點(diǎn)的內(nèi)容存儲(chǔ)到高速的存儲(chǔ)器上,并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,提高訪問(wèn)的效率。
【專利說(shuō)明】—種內(nèi)容分級(jí)存儲(chǔ)裝置、內(nèi)容獲取方法及內(nèi)容獲取裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及內(nèi)容的分級(jí)存儲(chǔ)和獲取,尤其涉及一種內(nèi)容分級(jí)存儲(chǔ)裝置、內(nèi)容獲取方法及內(nèi)容獲取裝置。
【背景技術(shù)】
[0002]隨著互動(dòng)電視和IPTV (Internet Protocol TV,交互式網(wǎng)絡(luò)電視)的發(fā)展,Q)N(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))發(fā)展迅速,內(nèi)容的豐富多彩和用戶量的不斷增長(zhǎng),使得CDN對(duì)海量?jī)?nèi)容的存儲(chǔ)和分發(fā)顯得越來(lái)越重要。目前的存儲(chǔ)技術(shù)一般是,將內(nèi)容進(jìn)行切片或者整個(gè)文件保存到本地磁盤上,對(duì)于點(diǎn)播的部分內(nèi)容緩存到內(nèi)存中,由⑶N控制中心進(jìn)行熱點(diǎn)統(tǒng)計(jì),對(duì)統(tǒng)計(jì)出來(lái)的熱片分發(fā)到邊緣服務(wù)器。在實(shí)際應(yīng)用中,由于廣電網(wǎng)本身的特性,使得熱點(diǎn)統(tǒng)計(jì)的準(zhǔn)確度不高,從而使得邊緣服務(wù)器的命中率不高,訪問(wèn)效率低。為了避免邊緣服務(wù)器頻繁訪問(wèn)CDN中心服務(wù)器,一般將邊緣服務(wù)器的容量配置得很大,使其能存儲(chǔ)跟CDN中心差不多的媒資文件,但是這種邊緣服務(wù)器由于不支持多級(jí)存儲(chǔ),被動(dòng)分發(fā),雖然命中率提高了,但是其自身的訪問(wèn)速度和CDN系統(tǒng)的整體性能并沒(méi)有提高。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明的目的在于提供一種內(nèi)容分級(jí)存儲(chǔ)裝置、內(nèi)容獲取方法及內(nèi)容獲取裝置,通過(guò)對(duì)多級(jí)存儲(chǔ)器分別采用多級(jí)分片存儲(chǔ)文件,可以將文件的分片數(shù)據(jù)存儲(chǔ)到具有不同分片大小的各級(jí)存儲(chǔ)器中,并且在各級(jí)存儲(chǔ)器中靈活地進(jìn)行切換,將熱點(diǎn)的內(nèi)容存儲(chǔ)到高速的存儲(chǔ)器上,并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,提高訪問(wèn)的效率。
[0004]為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的:
[0005]本發(fā)明提供一種內(nèi)容分級(jí)存儲(chǔ)的裝置,包括多級(jí)存儲(chǔ)器和多級(jí)存儲(chǔ)映射表,其特征在于,所述存儲(chǔ)器包括多個(gè)空間大小相同的分片存儲(chǔ)單元,所述分片存儲(chǔ)單元用于存儲(chǔ)文件的分片數(shù)據(jù);且N級(jí)存儲(chǔ)器(N為大于I的整數(shù))的分片存儲(chǔ)單元的空間大小為一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小的整數(shù)倍;
[0006]所述多級(jí)存儲(chǔ)映射表用于記錄存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)與各級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的映射關(guān)系。
[0007]進(jìn)一步,所述裝置包括三級(jí)存儲(chǔ)器,一級(jí)存儲(chǔ)器為內(nèi)存,二級(jí)存儲(chǔ)器為SSD,三級(jí)存儲(chǔ)器為HDD。
[0008]進(jìn)一步,所述多級(jí)存儲(chǔ)映射表中的第一級(jí)存儲(chǔ)映射表包括文件索引表和分片索引表,所述文件索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的文件名稱和所述文件名稱對(duì)應(yīng)的分片索引表的地址的映射關(guān)系,所述分片索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的各個(gè)文件偏移值和第一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元地址的映射表。
[0009]進(jìn)一步,所述N級(jí)存儲(chǔ)器(N為大于I的整數(shù))對(duì)應(yīng)的第N級(jí)存儲(chǔ)映射表用于存儲(chǔ)所述N級(jí)存儲(chǔ)器中每個(gè)分片存儲(chǔ)單元對(duì)應(yīng)的文件存儲(chǔ)信息,所述文件存儲(chǔ)信息包括文件存儲(chǔ)單元名稱和文件存儲(chǔ)單元位圖。[0010]進(jìn)一步,所述裝置還包括多級(jí)寫策略模塊,用于根據(jù)對(duì)應(yīng)層級(jí)預(yù)設(shè)的寫策略將文件數(shù)據(jù)按照一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小寫入到對(duì)應(yīng)層級(jí)存儲(chǔ)器。
[0011]進(jìn)一步,所述裝置還包括多級(jí)老化模塊,用于統(tǒng)計(jì)對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)分片存儲(chǔ)單元的使用頻率,當(dāng)對(duì)應(yīng)層級(jí)的存儲(chǔ)器空間不足時(shí),將對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)使用頻率低的分片存儲(chǔ)單元存儲(chǔ)的分片文件數(shù)據(jù)進(jìn)行刪除,并更新對(duì)應(yīng)層級(jí)的存儲(chǔ)映射表。
[0012]本發(fā)明提供一種內(nèi)容獲取的方法,包括:
[0013]接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度;
[0014]根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組;
[0015]獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值;
[0016]向所述一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值;
[0017]查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù);
[0018]否則,從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,依次向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)讀取請(qǐng)求,直到將所述分片數(shù)據(jù)讀取到所述緩存為止,所述第二數(shù)據(jù)讀取請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址,當(dāng)所有存儲(chǔ)器中都不存在所述分片數(shù)據(jù)時(shí),則從網(wǎng)絡(luò)側(cè)讀取所述分片數(shù)據(jù)到所述緩存;
[0019]將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端;
[0020]獲取下一個(gè)文件偏移值,繼續(xù)上述的流程,直到所述文件偏移值數(shù)組中的所有文件偏移值都處理完畢。
[0021]進(jìn)一步,所述查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)包括:
[0022]根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址,
[0023]若找到,則根據(jù)所述分片索引表的地址,查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)。
[0024]進(jìn)一步,所述下一級(jí)存儲(chǔ)器接收到所述第二數(shù)據(jù)讀取請(qǐng)求后,包括:
[0025]根據(jù)所述下一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱;
[0026]根據(jù)所述文件存儲(chǔ)單元名稱,查詢每個(gè)分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱;
[0027]若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求;
[0028]若存在,則查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則將所述分片數(shù)據(jù)讀取到所述緩存中;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
[0029]進(jìn)一步,所述方法還包括:
[0030]當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器或者網(wǎng)絡(luò)側(cè)讀取到時(shí),還用于將所述緩存數(shù)據(jù)由所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器根據(jù)該層級(jí)的寫策略進(jìn)行存儲(chǔ)。
[0031]本發(fā)明還提供一種內(nèi)容獲取的裝置,包括:
[0032]文件請(qǐng)求接收模塊,用于接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度;
[0033]數(shù)據(jù)適配模塊,用于根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組,并將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端;
[0034]循環(huán)處理模塊,用于依次獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值,向一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值;
[0035]一級(jí)數(shù)據(jù)讀取模塊,用于查詢一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則讀取所述分片數(shù)據(jù);若不存在,則從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址;
[0036]N(N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊,用于查詢N級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù)到所述緩存;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求;若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
[0037]進(jìn)一步,所述一級(jí)數(shù)據(jù)讀取模塊包括:
[0038]文件查詢單元,用于根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址;
[0039]第一分片查詢單元,用于根據(jù)所述文件偏移值查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);
[0040]第一數(shù)據(jù)讀取單元,用于當(dāng)根據(jù)所述文件名和所述文件偏移值查詢到所述分片數(shù)據(jù)時(shí),讀取所述分片數(shù)據(jù);
[0041]第一讀請(qǐng)求發(fā)送單元,用于當(dāng)根據(jù)所述文件名和所述文件偏移值沒(méi)有查詢到所述分片數(shù)據(jù)時(shí),從一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
[0042]進(jìn)一步,所述N (N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊包括:
[0043]文件片計(jì)算單元,用于根據(jù)所述N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱;
[0044]文件片查詢單元,用于根據(jù)所述文件存儲(chǔ)單元名稱查詢所有分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱;
[0045]第二分片查詢單元,用于當(dāng)所述文件片查詢單元查詢結(jié)果為是時(shí),查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);
[0046]第二數(shù)據(jù)讀取單元,用于當(dāng)所述第二分片單元查詢結(jié)果為是時(shí),讀取所述分片數(shù)據(jù)到所述緩存;
[0047]判斷單元,用于當(dāng)所述第二分片查詢單元查詢結(jié)果為否或者當(dāng)所述文件片查詢單元查詢結(jié)果為否時(shí),判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢;
[0048]第二讀請(qǐng)求發(fā)送單元,用于當(dāng)所述判斷單元判端結(jié)果為否時(shí),向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,用于當(dāng)所述判斷單元判端結(jié)果為是時(shí),向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
[0049]進(jìn)一步,所述裝置還包括:
[0050]存儲(chǔ)通知模塊,當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器獲或者網(wǎng)絡(luò)側(cè)讀取到時(shí),通知讀取到所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器將所述分片數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)層級(jí)的存儲(chǔ)器。
[0051]由上述的技術(shù)方案可見,通過(guò)對(duì)多級(jí)存儲(chǔ)器分別采用多級(jí)分片存儲(chǔ)文件,同時(shí)建立存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)和存儲(chǔ)器分片存儲(chǔ)單元之間的映射關(guān)系,可以將文件的分片數(shù)據(jù)存儲(chǔ)到具有不同分片大小的各級(jí)存儲(chǔ)器中,并且在各級(jí)存儲(chǔ)器中靈活地進(jìn)行切換,將熱點(diǎn)的內(nèi)容存儲(chǔ)到高速的存儲(chǔ)器上,并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,提高訪問(wèn)的效率。
【專利附圖】
【附圖說(shuō)明】
[0052]圖1為本發(fā)明實(shí)施例提供的一種內(nèi)容分級(jí)存儲(chǔ)的裝置的示意圖;
[0053]圖2為一級(jí)存儲(chǔ)映射表的結(jié)構(gòu)示意圖;
[0054]圖3為N (N為大于I的整數(shù))級(jí)存儲(chǔ)映射表的結(jié)構(gòu)示意圖;
[0055]圖4為本發(fā)明實(shí)施例提供的內(nèi)容獲取的方法在CDN邊緣服務(wù)器中的使用流程圖;
[0056]圖5為本發(fā)明實(shí)施例提供的一種內(nèi)容獲取的裝置的結(jié)構(gòu)圖;
[0057]圖6為本發(fā)明實(shí)施例提供的一級(jí)數(shù)據(jù)讀取模塊的結(jié)構(gòu)圖;
[0058]圖7為本發(fā)明實(shí)施例提供的N (N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0059]為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
[0060]本發(fā)明提供一種內(nèi)容分級(jí)存儲(chǔ)的裝置,包括多級(jí)存儲(chǔ)器和多級(jí)存儲(chǔ)映射表,其特征在于,所述存儲(chǔ)器包括多個(gè)空間大小相同的分片存儲(chǔ)單元,所述分片存儲(chǔ)單元用于存儲(chǔ)文件的分片數(shù)據(jù);且N級(jí)存儲(chǔ)器(N為大于I的整數(shù))的分片存儲(chǔ)單元的空間大小為一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小的整數(shù)倍;
[0061]所述多級(jí)存儲(chǔ)映射表用于記錄存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)與各級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的映射關(guān)系。
[0062]如圖1所示為本發(fā)明實(shí)施例提供的一種內(nèi)容分級(jí)存儲(chǔ)的裝置的示意圖,共包括三級(jí)存儲(chǔ)器,一級(jí)存儲(chǔ)器為內(nèi)存,二級(jí)存儲(chǔ)器為SSD(Solid State Disk,固態(tài)硬盤),三級(jí)存儲(chǔ)器為HDD(Hard Disk Drive,硬盤驅(qū)動(dòng)器),其中,內(nèi)存的讀寫速度最快,但容量下,一般只有幾十G,斷電后數(shù)據(jù)丟失;SSD的讀寫速度較快,容量適中,一般有幾個(gè)T,斷電后數(shù)據(jù)不會(huì)丟失,HDD的讀寫速度較慢,但容量大,斷電后數(shù)據(jù)不會(huì)丟失。
[0063]以⑶N邊緣服務(wù)器為例,假設(shè)該⑶N邊緣服務(wù)器中包含圖1所示的內(nèi)容分級(jí)存儲(chǔ)裝置,則當(dāng)邊緣服務(wù)器接收到CDN中心分發(fā)的媒資文件時(shí),可以根據(jù)各級(jí)的存儲(chǔ)器的寫策略決定是否需要將媒資文件的全部或部分寫入到各級(jí)存儲(chǔ)器中。
[0064]根據(jù)各級(jí)存儲(chǔ)器的讀寫速度和存儲(chǔ)容量,一般情況下,對(duì)內(nèi)存的切片的粒度最小,SSD次之,HDD的切片的粒度最大。如,在內(nèi)存中采用的分片大小為2M,SSD中采用的分片大小為8M,HDD中采用的分片大小為16M,假設(shè)一個(gè)文件有20M,如果全部在內(nèi)存中存儲(chǔ),則需要10個(gè)內(nèi)存片,如果全部在SSD中存儲(chǔ),則需要3個(gè)SDD分片,如果全部在HDD中存儲(chǔ)則需要2個(gè)HDD分片。
[0065]為了在各級(jí)存儲(chǔ)器中查找是否存儲(chǔ)有某個(gè)文件對(duì)應(yīng)的分片數(shù)據(jù),需要在各級(jí)存儲(chǔ)器中建立存儲(chǔ)映射表,該存儲(chǔ)映射表用來(lái)記錄在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)與各級(jí)存儲(chǔ)器分片存儲(chǔ)單元的映射關(guān)系。
[0066]優(yōu)選地,所述多級(jí)存儲(chǔ)映射表中的第一級(jí)存儲(chǔ)映射表包括文件索引表和分片索引表,所述文件索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的文件名稱和所述文件名稱對(duì)應(yīng)的分片索引表的地址的映射關(guān)系,所述分片索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的各個(gè)文件偏移值和第一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元地址的映射表。
[0067]如圖2所示為一級(jí)存儲(chǔ)映射表的結(jié)構(gòu)示意圖。文件索引表中包含3條記錄,分別為:文件名稱為“Testl”,分片索引表地址“0x00000001”、文件名稱為“Test2”、分片索引表地址“0x00000002”、文件名稱為“Test3”分片索引表地址“0x00000003”。“Testl”文件對(duì)應(yīng)的分片索引表包含4條記錄,分別為:〈2,0x10000000〉、〈4,0x20000000〉、〈10,0x50000000〉、〈12,0x70000000〉。
[0068]為了簡(jiǎn)化起見,假設(shè)文件偏移值是文件偏移量按M字節(jié)取整后的值,“ Test I”文件的大小為20M,內(nèi)存的切片大小為2M,則根據(jù)圖2中“Testl”文件對(duì)應(yīng)的分片索引表記錄可知,從“0x20000 開始至 0x5fffff” 和從 “OxAOOOOO 開始至 0xA3fffff” 的 “Testl” 文件數(shù)據(jù)在內(nèi)存中有存儲(chǔ)。
[0069]N級(jí)存儲(chǔ)器(N為大于I的整數(shù))對(duì)應(yīng)的第N級(jí)存儲(chǔ)映射表用于存儲(chǔ)所述N級(jí)存儲(chǔ)器中每個(gè)分片存儲(chǔ)單元對(duì)應(yīng)的文件存儲(chǔ)信息,所述文件存儲(chǔ)信息包括文件存儲(chǔ)單元名稱和文件存儲(chǔ)單元位圖。
[0070]由于N級(jí)存儲(chǔ)器的分片大小為一級(jí)存儲(chǔ)器的分片大小的整數(shù)倍,因此,一個(gè)N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元可以看成是多個(gè)一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的組合,文件存儲(chǔ)單元位圖的每一位用來(lái)標(biāo)識(shí)N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元中對(duì)應(yīng)的一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元是否存儲(chǔ)有數(shù)據(jù)。
[0071]如圖3所示為N (N為大于I的整數(shù))級(jí)存儲(chǔ)映射表的結(jié)構(gòu)示意圖。其中,文件存儲(chǔ)單元名稱由文件名和文件偏移值來(lái)唯一確定,具體地,將文件偏移值除以N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小取整得到該文件的存儲(chǔ)單元序號(hào),將文件名和文件的存儲(chǔ)單元序號(hào)組合在一起形成文件存儲(chǔ)單元名稱。如某個(gè)文件名稱為Testl的文件的文件偏移值為2 CM), N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元大小為8M,則其文件存儲(chǔ)單元名稱為Testl_0,表示是Testl文件在N級(jí)存儲(chǔ)器中的第O個(gè)文件存儲(chǔ)單元。Testl_0的文件存儲(chǔ)單元位圖為:1011,假設(shè)從右往左數(shù),依次標(biāo)識(shí)第O個(gè)一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元、第I個(gè)一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元、第2個(gè)一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元和第3個(gè)一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元是否存儲(chǔ)有數(shù)據(jù),從該文件存儲(chǔ)單元位圖可看出,從0?0x3f f f f f和從0x50000(T0x7f f f f f的“ Test I ”文件數(shù)據(jù)在該N級(jí)存儲(chǔ)器中有存儲(chǔ)。
[0072]優(yōu)選地,內(nèi)容分級(jí)存儲(chǔ)裝置多級(jí)寫策略模塊,用于根據(jù)對(duì)應(yīng)層級(jí)預(yù)設(shè)的寫策略將文件數(shù)據(jù)按照一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小寫入到對(duì)應(yīng)層級(jí)存儲(chǔ)器。
[0073]具體的,每級(jí)存儲(chǔ)器都設(shè)置有一定閾值的寫隊(duì)列,當(dāng)有文件數(shù)據(jù)需要寫入到存儲(chǔ)器中時(shí),就將寫入地址加入到寫隊(duì)列,寫隊(duì)列線程檢查寫隊(duì)列的情況,如果隊(duì)列個(gè)數(shù)達(dá)到閾值,則不寫入到存儲(chǔ)器,否則,寫入到存儲(chǔ)器,同時(shí)更新該存儲(chǔ)器對(duì)應(yīng)的存儲(chǔ)映射表。
[0074]優(yōu)選地,內(nèi)容分級(jí)存儲(chǔ)裝置還包括多級(jí)老化模塊,用于統(tǒng)計(jì)對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)分片存儲(chǔ)單元的使用頻率,當(dāng)對(duì)應(yīng)層級(jí)的存儲(chǔ)器空間不足時(shí),將對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)使用頻率低的分片存儲(chǔ)單元存儲(chǔ)的分片文件數(shù)據(jù)進(jìn)行刪除,并更新對(duì)應(yīng)層級(jí)的存儲(chǔ)映射表。
[0075]具體的,對(duì)于N (N為大于I的整數(shù))級(jí)存儲(chǔ)器,如SSD和HDD,可以在文件存儲(chǔ)信息中增加一個(gè)分片使用頻率的參數(shù),當(dāng)該SSD片或HDD片被讀取時(shí),將該分片使用頻率加I。另外,在N級(jí)存儲(chǔ)器中設(shè)置單獨(dú)的線程實(shí)時(shí)檢查磁盤空間使用情況,當(dāng)N級(jí)存儲(chǔ)器的空間不足時(shí),根據(jù)文件存儲(chǔ)信息中的分片使用頻率,將使用頻率低的分片內(nèi)容進(jìn)行刪除。
[0076]對(duì)于一級(jí)存儲(chǔ)器,如內(nèi)存,可以通過(guò)額外的分片使用頻率統(tǒng)計(jì)方法對(duì)每個(gè)分片的使用熱度進(jìn)行統(tǒng)計(jì),同理,一級(jí)存儲(chǔ)器中也設(shè)置有單獨(dú)的線程實(shí)時(shí)檢查內(nèi)存的使用情況,當(dāng)內(nèi)存空間不足時(shí),根據(jù)每個(gè)內(nèi)存片的使用頻率統(tǒng)計(jì),將使用頻率低的內(nèi)存片放到空閑隊(duì)列中。
[0077]本發(fā)明提供的內(nèi)容分級(jí)存儲(chǔ)裝置,通過(guò)對(duì)多級(jí)存儲(chǔ)器分別采用多級(jí)分片存儲(chǔ)文件,同時(shí)建立存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)和存儲(chǔ)器分片存儲(chǔ)單元之間的映射關(guān)系,可以將文件的分片數(shù)據(jù)存儲(chǔ)到具有不同分片大小的各級(jí)存儲(chǔ)器中,并且在各級(jí)存儲(chǔ)器中靈活地進(jìn)行切換,將熱點(diǎn)的內(nèi)容存儲(chǔ)到高速的存儲(chǔ)器上,并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,提高訪問(wèn)的效率。
[0078]本發(fā)明提供一種內(nèi)容獲取的方法,包括:
[0079]步驟I,接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度;
[0080]步驟2,根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組;
[0081]步驟3,獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值;
[0082]步驟4,向所述一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值;
[0083]步驟5,查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù)后轉(zhuǎn)步驟7 ;
[0084]步驟6,否則,從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,依次向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)讀取請(qǐng)求,直到將所述分片數(shù)據(jù)讀取到所述緩存為止,所述第二數(shù)據(jù)讀取請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址,當(dāng)所有存儲(chǔ)器中都不存在所述分片數(shù)據(jù)時(shí),則從網(wǎng)絡(luò)側(cè)讀取所述分片數(shù)據(jù)到所述緩存;
[0085]步驟7,將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端;
[0086]步驟8,判斷所述文件偏移值數(shù)組中的所有文件偏移值是否已經(jīng)處理完畢,若是,則結(jié)束處理,否則,獲取下一個(gè)文件偏移值,轉(zhuǎn)步驟4。
[0087]優(yōu)選地,步驟5中查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)包括:
[0088]根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址,
[0089]若找到,則根據(jù)所述分片索引表的地址,查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)。
[0090]優(yōu)選地,所述下一級(jí)存儲(chǔ)器接收到所述第二數(shù)據(jù)讀取請(qǐng)求后,包括:
[0091]根據(jù)所述下一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱;
[0092]根據(jù)所述文件存儲(chǔ)單元名稱,查詢每個(gè)分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱;
[0093]若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求;
[0094]若存在,則查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則將所述分片數(shù)據(jù)讀取到所述緩存中;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
[0095]優(yōu)選地,所述方法還包括:
[0096]當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器或者網(wǎng)絡(luò)側(cè)讀取到時(shí),還用于將所述緩存數(shù)據(jù)由所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器根據(jù)該層級(jí)的寫策略進(jìn)行存儲(chǔ)。
[0097]下面,結(jié)合圖4來(lái)描述本發(fā)明提供的內(nèi)容獲取的方法在CDN邊緣服務(wù)器中的使用。
[0098]簡(jiǎn)單起見,假設(shè)內(nèi)存中采用的分片大小為2M, SSD中采用的分片大小為8M,HDD中采用的分片大小為16M。
[0099]客戶端發(fā)送文件請(qǐng)求至⑶N邊緣服務(wù)器,攜帶文件名filename、文件讀取偏移量offset和文件讀取長(zhǎng)度len。
[0100]CDN邊緣服務(wù)器的應(yīng)用層接收到上述請(qǐng)求后,需要將文件讀取偏移量offset和文件讀取長(zhǎng)度Ien調(diào)整成內(nèi)存片大小對(duì)齊的方式才能向內(nèi)存發(fā)起讀請(qǐng)求。如果客戶端請(qǐng)求的數(shù)據(jù)大于內(nèi)存片的大小,則應(yīng)用層需要向內(nèi)存層發(fā)起多次讀請(qǐng)求。
[0101]例如,假設(shè)客戶端發(fā)送的文件請(qǐng)求為:請(qǐng)求⑶N邊緣服務(wù)器發(fā)送Testl文件的如下數(shù)據(jù),從第2.5M數(shù)據(jù)開始,讀取5M長(zhǎng)度的數(shù)據(jù)。應(yīng)用層通過(guò)取整和適配,計(jì)算出其文件偏移值數(shù)組為[2,4,6,8],根據(jù)計(jì)算,應(yīng)用層需要向內(nèi)存層發(fā)起4次讀請(qǐng)求。
[0102]首先,根據(jù)第一個(gè)文件偏移值2,向內(nèi)存層發(fā)起讀請(qǐng)求,該讀請(qǐng)求攜帶文件名Test 1、文件偏移值2 ;[0103]當(dāng)內(nèi)存層收到應(yīng)用層的讀請(qǐng)求,根據(jù)Testl查詢內(nèi)存的文件索引表(同圖2中的文件索引表),若存在與Testl對(duì)應(yīng)的記錄,則獲取Testl對(duì)應(yīng)的分片索引表(同圖2中的分片索引表),繼續(xù)在分片索引表中查詢是否存文件偏移值為2的記錄,若存在,則將文件偏移值2對(duì)應(yīng)的一級(jí)分片地址返回給應(yīng)用層。若不存在,則取出一塊空閑的緩存,假設(shè)該緩存的地址為buffer,然后向SSD層發(fā)起讀請(qǐng)求,請(qǐng)求的參數(shù)包括文件名Testl、文件偏移值2和buffer。
[0104]SSD層收到內(nèi)存層的讀請(qǐng)求后,根據(jù)文件偏移值2和SSD層的分片存儲(chǔ)單元大小,計(jì)算出該文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱為Testl_0。根據(jù)Testl_0查詢SSD層的存儲(chǔ)映射表是否存在該文件存儲(chǔ)單元名稱的分片,若存在,繼續(xù)根據(jù)文件偏移值2查詢?cè)摲制瑢?duì)應(yīng)的文件存儲(chǔ)單元位圖的相應(yīng)位置是否表示存儲(chǔ)有數(shù)據(jù)。如該分片對(duì)應(yīng)的文件存儲(chǔ)單元位圖為1011,從右往左數(shù),第I位標(biāo)識(shí)偏移值為O的分片是否存儲(chǔ)有數(shù)據(jù),第2位標(biāo)識(shí)偏移值為2的分片是否存儲(chǔ)有數(shù)據(jù),第3位標(biāo)識(shí)偏移值為4的分片是否存儲(chǔ)有數(shù)據(jù),第4位標(biāo)識(shí)偏移值為6的分片是否存儲(chǔ)有數(shù)據(jù)。文件偏移值為2對(duì)應(yīng)的值為1,表示請(qǐng)求的分片數(shù)據(jù)存在,將所述數(shù)據(jù)讀取到buffer地址對(duì)應(yīng)的內(nèi)存。若該分片對(duì)應(yīng)的文件存儲(chǔ)單元位圖為1001,文件偏移值為2對(duì)應(yīng)的值為0,表示該分片不存在,則繼續(xù)向HDD層發(fā)起讀請(qǐng)求,請(qǐng)求的參數(shù)包括文件名Testl、文件偏移值2和buffer。
[0105]HDD層接收到讀請(qǐng)求后,采取與SSD層同樣的方式進(jìn)行判斷,如果存在,則讀取數(shù)據(jù)到buffer,并將buffer返回給應(yīng)用層,如果不存在,則向網(wǎng)絡(luò)層發(fā)起讀請(qǐng)求,請(qǐng)求的參數(shù)包括文件名Test 1、文件偏移值2和buffer。
[0106]網(wǎng)絡(luò)層收到讀請(qǐng)求后,直接向CDN中心存儲(chǔ)設(shè)備讀取數(shù)據(jù)到buffer地址對(duì)應(yīng)的內(nèi)存,并將buffer返回給應(yīng)用層。由于⑶N中心存儲(chǔ)上存儲(chǔ)有所有上線的媒資文件,所以網(wǎng)絡(luò)層接收到讀請(qǐng)求后,肯定能讀取到對(duì)應(yīng)的數(shù)據(jù)到buffer。
[0107]當(dāng)應(yīng)用層向內(nèi)存層發(fā)起讀請(qǐng)求沒(méi)有找到對(duì)應(yīng)的數(shù)據(jù)時(shí),會(huì)依次將讀請(qǐng)求傳遞給SSD層、HDD層和網(wǎng)絡(luò)層,直到讀取到相應(yīng)數(shù)據(jù)為止。當(dāng)所述數(shù)據(jù)不是在內(nèi)存讀取到時(shí),根據(jù)各層級(jí)的寫策略,可以將緩存數(shù)據(jù)存儲(chǔ)到讀取到分片數(shù)據(jù)所在存儲(chǔ)器的上級(jí)存儲(chǔ)器中。
[0108]如,在HDD層獲取到數(shù)據(jù)后,將數(shù)據(jù)填充到buffer地址對(duì)應(yīng)的內(nèi)存,則SDD層根據(jù)本層的寫策略決定是否要將buffer地址的數(shù)據(jù)寫入到SDD層。具體的,SDD層有一個(gè)寫隊(duì)列,隊(duì)列里記錄了要寫磁盤的buffer地址。應(yīng)用層接收到HDD層返回的buffer地址后,通知SDD層,SDD層檢查寫隊(duì)列的情況,如果隊(duì)列個(gè)數(shù)沒(méi)有達(dá)到閾值,則把buffer地址加入到寫隊(duì)列,如果達(dá)到閾值,則不加入寫隊(duì)列,即不保存對(duì)應(yīng)數(shù)據(jù)。另外,SDD層有專門的線程從寫隊(duì)列中取出buffer,寫到SDD的分片中,同時(shí)更新SDD的存儲(chǔ)映射表。
[0109]內(nèi)存層獲知HDD層返回的buffer地址后,將buffer地址對(duì)應(yīng)的信息記錄到文件索引表和分片索引表中。
[0110]應(yīng)用層根據(jù)接收到的一級(jí)分片地址或者buffer地址讀取數(shù)據(jù)到應(yīng)用層的緩存中,并根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行處理后發(fā)送給客戶端。由于從內(nèi)容分級(jí)存儲(chǔ)裝置中每次讀取的數(shù)據(jù)為一級(jí)分片的大小,如內(nèi)存的分片大小為2M,則每次請(qǐng)求讀取的數(shù)據(jù)固定為2M,而來(lái)自于客戶端的請(qǐng)求并不一定是2M字節(jié)對(duì)齊方式的,此時(shí),應(yīng)用層需要根據(jù)文件本身的索引信息對(duì)其進(jìn)行拼接和拆分后再發(fā)送給客戶端。
[0111]對(duì)于件片偏移序號(hào)為4、6、8的數(shù)據(jù)讀取流程同上。[0112]本發(fā)明提供的內(nèi)容獲取的方法,將文件讀取請(qǐng)求拆分成按片讀取請(qǐng)求,由上至下依次訪問(wèn)各級(jí)存儲(chǔ)器,直到讀取到對(duì)應(yīng)的分片數(shù)據(jù)為止,按分片方式讀取數(shù)據(jù),并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,能提高訪問(wèn)速率和命中率。
[0113]如圖5所示為本發(fā)明實(shí)施例提供的一種內(nèi)容獲取的裝置的結(jié)構(gòu)圖,內(nèi)容獲取裝置10包括:
[0114]文件請(qǐng)求接收模塊101,用于接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度;
[0115]數(shù)據(jù)適配模塊102,用于根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組,并將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端;
[0116]循環(huán)處理模塊103,用于依次獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值,向一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值;
[0117]一級(jí)數(shù)據(jù)讀取模塊104,查詢一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則讀取所述分片數(shù)據(jù);若不存在,則從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址;
[0118]N (N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊105,用于查詢N級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù)到所述緩存;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求;若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
[0119]優(yōu)選地,一級(jí)數(shù)據(jù)讀取模塊104包括(如圖6所示):
[0120]文件查詢單元1041,用于根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址;
[0121]第一分片查詢單元1042,用于根據(jù)所述文件偏移值查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);
[0122]第一數(shù)據(jù)讀取單元1043,用于當(dāng)根據(jù)所述文件名和所述文件偏移值查詢到所述分片數(shù)據(jù)時(shí),讀取所述分片數(shù)據(jù);
[0123]第一讀請(qǐng)求發(fā)送單元1044,用于當(dāng)根據(jù)所述文件名和所述文件偏移值沒(méi)有查詢到所述分片數(shù)據(jù)時(shí),從一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
[0124]優(yōu)選地,N (N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊105包括(如圖7所示):
[0125]文件片計(jì)算單元1051,用于根據(jù)所述N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱;
[0126]文件片查詢單元1052,用于根據(jù)所述文件存儲(chǔ)單元名稱查詢所有分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱;
[0127]第二分片查詢單元1053,用于當(dāng)文件片查詢單元1052查詢結(jié)果為是時(shí),查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);
[0128]第二數(shù)據(jù)讀取單元1054,用于當(dāng)?shù)诙制瑔卧?053查詢結(jié)果為是時(shí),讀取所述分片數(shù)據(jù)到所述緩存;
[0129]判斷單元1055,用于當(dāng)?shù)诙制樵儐卧?053查詢結(jié)果為否或者當(dāng)文件片查詢單元1052查詢結(jié)果為否時(shí),判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢;
[0130]第二讀請(qǐng)求發(fā)送單元1056,用于當(dāng)判斷單元1055判端結(jié)果為否時(shí),向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,用于當(dāng)判斷單元1055判端結(jié)果為是時(shí),向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
[0131]優(yōu)選地,內(nèi)容獲取裝置10還包括存儲(chǔ)通知模塊(未在圖中示出),用于當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器獲或者網(wǎng)絡(luò)側(cè)讀取到時(shí),通知讀取到所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器將所述分片數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)層級(jí)的存儲(chǔ)器。
[0132]具體的,當(dāng)所述分片數(shù)據(jù)是從N (N為大于I的整數(shù))級(jí)存儲(chǔ)器獲取到時(shí),用于通知一級(jí)存儲(chǔ)器、二級(jí)存儲(chǔ)器、…、(N-1)級(jí)存儲(chǔ)器對(duì)分片數(shù)據(jù)進(jìn)行存儲(chǔ);
[0133]當(dāng)所述分片數(shù)據(jù)是從網(wǎng)絡(luò)側(cè)獲取到時(shí),用于通知一級(jí)存儲(chǔ)器、二級(jí)存儲(chǔ)器、…、N級(jí)存儲(chǔ)器對(duì)分片數(shù) [0134]本發(fā)明提供的內(nèi)容獲取的裝置,為上述提供的內(nèi)容獲取的方法相對(duì)應(yīng)的裝置,具體的示例描述參見上述對(duì)圖4的使用方法,本發(fā)明實(shí)施例通過(guò)將文件讀取請(qǐng)求拆分成按片讀取請(qǐng)求,由上至下依次訪問(wèn)各級(jí)存儲(chǔ)器,直到讀取到對(duì)應(yīng)的分片數(shù)據(jù)為止,按分片方式讀取數(shù)據(jù),并自動(dòng)從網(wǎng)絡(luò)側(cè)獲取內(nèi)容,能提高訪問(wèn)速率和命中率。
[0135]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種內(nèi)容分級(jí)存儲(chǔ)的裝置,包括多級(jí)存儲(chǔ)器和多級(jí)存儲(chǔ)映射表,其特征在于,所述存儲(chǔ)器包括多個(gè)空間大小相同的分片存儲(chǔ)單元,所述分片存儲(chǔ)單元用于存儲(chǔ)文件的分片數(shù)據(jù);且N級(jí)存儲(chǔ)器(N為大于I的整數(shù))的分片存儲(chǔ)單元的空間大小為一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小的整數(shù)倍; 所述多級(jí)存儲(chǔ)映射表用于記錄存儲(chǔ)在各級(jí)存儲(chǔ)器中的文件的分片數(shù)據(jù)與各級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的映射關(guān)系。
2.如權(quán)利要求1所述的裝置,其特征在于,所述裝置包括三級(jí)存儲(chǔ)器,一級(jí)存儲(chǔ)器為內(nèi)存,二級(jí)存儲(chǔ)器為SSD,三級(jí)存儲(chǔ)器為HDD。
3.如權(quán)利要求1或2所述的裝置,其特征在于,所述多級(jí)存儲(chǔ)映射表中的第一級(jí)存儲(chǔ)映射表包括文件索引表和分片索引表,所述文件索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的文件名稱和所述文件名稱對(duì)應(yīng)的分片索引表的地址的映射關(guān)系,所述分片索引表用于記錄第一級(jí)存儲(chǔ)器所存儲(chǔ)的文件的各個(gè)文件偏移值和第一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元地址的映射表。
4.如權(quán)利要求3所述的裝置,其特征在于,所述N級(jí)存儲(chǔ)器(N為大于I的整數(shù))對(duì)應(yīng)的第N級(jí)存儲(chǔ)映射表用于存儲(chǔ)所述N級(jí)存儲(chǔ)器中每個(gè)分片存儲(chǔ)單元對(duì)應(yīng)的文件存儲(chǔ)信息,所述文件存儲(chǔ)信息包括文件存儲(chǔ)單元名稱和文件存儲(chǔ)單元位圖。
5.如權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括多級(jí)寫策略模塊,用于根據(jù)對(duì)應(yīng)層級(jí)預(yù)設(shè)的寫策略將文件數(shù)據(jù)按照一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小寫入到對(duì)應(yīng)層級(jí)存儲(chǔ)器。
6.如權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括多級(jí)老化模塊,用于統(tǒng)計(jì)對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)分片存儲(chǔ)單元的使用頻率,當(dāng)對(duì)應(yīng)層級(jí)的存儲(chǔ)器空間不足時(shí),將對(duì)應(yīng)層級(jí)的存儲(chǔ)器內(nèi)使用頻率低的分片存儲(chǔ)單元存儲(chǔ)的分片文件數(shù)據(jù)進(jìn)行刪除,并更新對(duì)應(yīng)層級(jí)的存儲(chǔ)映射表。
7.一種內(nèi)容獲取的方法,其特征在于,包括: 接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度; 根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組; 獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值; 向所述一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值; 查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù); 否則,從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,依次向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)讀取請(qǐng)求,直到將所述分片數(shù)據(jù)讀取到所述緩存為止,所述第二數(shù)據(jù)讀取請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址,當(dāng)所有存儲(chǔ)器中都不存在所述分片數(shù)據(jù)時(shí),則從網(wǎng)絡(luò)側(cè)讀取所述分片數(shù)據(jù)到所述緩存; 將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端;獲取下一個(gè)文件偏移值,繼續(xù)上述的流程,直到所述文件偏移值數(shù)組中的所有文件偏移值都處理完畢。
8.如權(quán)利要求7所述的方法,其特征在于,所述查詢所述一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)包括: 根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址, 若找到,則根據(jù)所述分片索引表的地址,查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù)。
9.如權(quán)利要求7或8所述的方法,其特征在于,所述下一級(jí)存儲(chǔ)器接收到所述第二數(shù)據(jù)讀取請(qǐng)求后,包括: 根據(jù)所述下一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱; 根據(jù)所述文件存儲(chǔ)單元名稱,查詢每個(gè)分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱; 若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求; 若存在,則查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則將所述分片數(shù)據(jù)讀取到所述緩存中;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
10.如權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器或者網(wǎng)絡(luò)側(cè)讀取到時(shí),還用于將所述緩存數(shù)據(jù)由所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器根據(jù)該層級(jí)的寫策略進(jìn)行存儲(chǔ)。
11.一種內(nèi)容獲取的裝置,其特征在于,包括: 文件請(qǐng)求接收模塊,用于接收客戶端發(fā)送的文件讀取請(qǐng)求,所述文件讀取請(qǐng)求攜帶有文件名、文件讀取偏移量和文件讀取長(zhǎng)度; 數(shù)據(jù)適配模塊,用于根據(jù)文件讀取偏移量和文件讀取長(zhǎng)度,計(jì)算出與一級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小相對(duì)應(yīng)的文件偏移值數(shù)組,并將所述分片數(shù)據(jù)根據(jù)所述文件讀取偏移量和文件讀取長(zhǎng)度進(jìn)行相應(yīng)的處理后發(fā)送給所述客戶端; 循環(huán)處理模塊,用于依次獲取所述文件偏移值數(shù)組中的一個(gè)文件偏移值,向一級(jí)存儲(chǔ)器發(fā)起第一數(shù)據(jù)讀取請(qǐng)求,所述第一數(shù)據(jù)讀取請(qǐng)求攜帶有文件名和所述文件偏移值; 一級(jí)數(shù)據(jù)讀取模塊,用于查詢一級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù);若存在,則讀取所述分片數(shù)據(jù);若不存在,則從所述一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址; N(N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊,用于查詢N級(jí)存儲(chǔ)器中是否存在與所述文件名和所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù),若存在,則讀取所述分片數(shù)據(jù)到所述緩存;若不存在,則判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢,若是,則向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求;若否,則向下一級(jí)存儲(chǔ)器發(fā)起所述第二數(shù)據(jù)請(qǐng)求。
12.如權(quán)利要求11所述的裝置,其特征在于,所述一級(jí)數(shù)據(jù)讀取模塊包括: 文件查詢單元,用于根據(jù)所述文件名在一級(jí)存儲(chǔ)器對(duì)應(yīng)的文件索引表中查詢所述文件名對(duì)應(yīng)的分片索引表的地址; 第一分片查詢單元,用于根據(jù)所述文件偏移值查詢所述分片索引表中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù); 第一數(shù)據(jù)讀取單元,用于當(dāng)根據(jù)所述文件名和所述文件偏移值查詢到所述分片數(shù)據(jù)時(shí),讀取所述分片數(shù)據(jù); 第一讀請(qǐng)求發(fā)送單元,用于當(dāng)根據(jù)所述文件名和所述文件偏移值沒(méi)有查詢到所述分片數(shù)據(jù)時(shí),從一級(jí)存儲(chǔ)器中取出一塊空閑的緩存,所述緩存大小大于等于所述一級(jí)分片大小,向二級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
13.如權(quán)利要求11或12所述的裝置,其特征在于,所述N(N為大于I的整數(shù))級(jí)數(shù)據(jù)讀取模塊包括: 文件片計(jì)算單元,用于根據(jù)所述N級(jí)存儲(chǔ)器的分片存儲(chǔ)單元的空間大小和所述第二數(shù)據(jù)讀取請(qǐng)求攜帶的所述文件偏移值,計(jì)算出所述文件偏移值對(duì)應(yīng)的文件存儲(chǔ)單元名稱; 文件片查詢單元,用于根據(jù)所述文件存儲(chǔ)單元名稱查詢所有分片存儲(chǔ)單元的文件存儲(chǔ)信息中是否存在所述文件存儲(chǔ)單元名稱; 第二分片查詢單元,用于當(dāng)所述文件片查詢單元查詢結(jié)果為是時(shí),查詢對(duì)應(yīng)的文件存儲(chǔ)信息包含的文件存儲(chǔ)單元位圖中是否存在所述文件偏移值對(duì)應(yīng)的分片數(shù)據(jù); 第二數(shù)據(jù)讀取單元,用于當(dāng)所述第二分片單元查詢結(jié)果為是時(shí),讀取所述分片數(shù)據(jù)到所述緩存; 判斷單元,用于當(dāng)所述第二分片查詢單元查詢結(jié)果為否或者當(dāng)所述文件片查詢單元查詢結(jié)果為否時(shí),判斷所有存儲(chǔ)器是否已經(jīng)訪問(wèn)完畢; 第二讀請(qǐng)求發(fā)送單元,用于當(dāng)所述判斷單元判端結(jié)果為否時(shí),向下一級(jí)存儲(chǔ)器發(fā)起第二數(shù)據(jù)請(qǐng)求,用于當(dāng)所述判斷單元判端結(jié)果為是時(shí),向網(wǎng)絡(luò)側(cè)發(fā)起所述第二數(shù)據(jù)請(qǐng)求,所述第二數(shù)據(jù)請(qǐng)求攜帶有所述文件名、所述文件偏移值和緩存地址。
14.如權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括: 存儲(chǔ)通知模塊,用于當(dāng)所述分片數(shù)據(jù)是從一級(jí)存儲(chǔ)器以外的其他層級(jí)存儲(chǔ)器獲或者網(wǎng)絡(luò)側(cè)讀取到時(shí),通知讀取到所述分片數(shù)據(jù)所在存儲(chǔ)器的所有上級(jí)存儲(chǔ)器將所述分片數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)層級(jí)的存儲(chǔ)器。
【文檔編號(hào)】G06F12/08GK103927265SQ201310000508
【公開日】2014年7月16日 申請(qǐng)日期:2013年1月4日 優(yōu)先權(quán)日:2013年1月4日
【發(fā)明者】楊大維 申請(qǐng)人:深圳市龍視傳媒有限公司