專(zhuān)利名稱(chēng):一種高效利用存儲(chǔ)空間的自適應(yīng)自組織塔式緩存方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,涉及一種緩存方法,具體涉及一種合理分配和高效利用存儲(chǔ)空間的自適應(yīng)自組織塔式緩存方法。
背景技術(shù):
對(duì)于流行的異構(gòu)系統(tǒng)而言,緩存是緩解客戶(hù)端和服務(wù)端速度差異的一種普遍采用的技術(shù),如圖1所示,其原理就是把從數(shù)據(jù)中心獲取的數(shù)據(jù)發(fā)給客戶(hù)端的同時(shí),把它在服務(wù)端(或?qū)iT(mén)的緩存服務(wù)上)的內(nèi)存中緩存起來(lái),當(dāng)接收到符合特征的請(qǐng)求后,直接從緩存中取出數(shù)據(jù)返回給客戶(hù)端,避免再次進(jìn)行檢索,以高速地響應(yīng)用戶(hù)的請(qǐng)求。但是單一的緩存不能很好地利用內(nèi)存空間。以緩存數(shù)據(jù)列表為例,假設(shè)緩存有100M空間,緩存100個(gè)列表數(shù)據(jù),如果列表數(shù)據(jù)平均大于1M,顯然會(huì)造成空間不足的問(wèn)題;如果列表數(shù)據(jù)平均小于1M,則緩存空間沒(méi)有充分利用。這種情況下,通常的做法是不指定能緩存數(shù)據(jù)的個(gè)數(shù),按數(shù)據(jù)的大小來(lái)緩存數(shù)據(jù),這為緩存的管理帶來(lái)難度。在存儲(chǔ)領(lǐng)域,多級(jí)緩存也是一種成熟的技術(shù),它主要是利用不同的物理介質(zhì)的速度差異特性而構(gòu)建,將使用最頻繁的數(shù)據(jù)或指令存儲(chǔ)在最快的緩存中,以此來(lái)獲取系統(tǒng)整體響應(yīng)速度的提升。另一種是基于不同的數(shù)據(jù)而構(gòu)建不同的緩存,以方便管理,如發(fā)明專(zhuān)利“基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)自適應(yīng)多級(jí)緩存系統(tǒng)”(專(zhuān)利號(hào)200910063371. 3)所述。但因數(shù)據(jù)內(nèi)容大小不一、尺寸難以估計(jì),現(xiàn)有的多級(jí)緩存方法并不能充分利用存儲(chǔ)空間。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)上述問(wèn)題,提出一種高效利用存儲(chǔ)空間的自適應(yīng)自組織塔式緩存方法,可以自動(dòng)根據(jù)數(shù)據(jù)自身的尺寸選擇合適的緩存,并通過(guò)自動(dòng)調(diào)節(jié)緩存的容量來(lái)最大化緩存的命中率,具有自適應(yīng)性和自組織性。本發(fā)明采用的是多級(jí)緩存,多級(jí)緩存是指按待存數(shù)據(jù)的尺寸為閥值來(lái)分級(jí),各級(jí)緩存只能保存尺寸在一定范圍內(nèi)的數(shù)據(jù),緩存的層級(jí)(緩存的個(gè)數(shù))沒(méi)有限制,緩存數(shù)據(jù)的內(nèi)容不加區(qū)分;這樣使有限的空間能緩存更多的數(shù)據(jù),達(dá)到空間利用的最大化。具體來(lái)說(shuō),本發(fā)明采用的技術(shù)方案是—種自適應(yīng)自組織塔式緩存方法,其步驟包括I)在緩存服務(wù)器上建立以數(shù)據(jù)尺寸為閥值的多級(jí)緩存容器,各級(jí)緩存容器串聯(lián)成一個(gè)數(shù)組,構(gòu)成塔式緩存結(jié)構(gòu);2)所述緩存服務(wù)器從數(shù)據(jù)中心接收數(shù)據(jù),根據(jù)接收的數(shù)據(jù)的大小自動(dòng)選擇合適的緩存容器進(jìn)行存儲(chǔ);3)在保持存儲(chǔ)空間容量總量不變的前提下,根據(jù)各級(jí)緩存容器在指定時(shí)間段內(nèi)的命中率動(dòng)態(tài)調(diào)節(jié)各級(jí)緩存容器的容量值,使命中率越高的緩存容器的容量越大。進(jìn)一步地,本發(fā)明可以根據(jù)緩存的點(diǎn)擊率來(lái)設(shè)定各級(jí)緩存容器的訪問(wèn)優(yōu)先級(jí),點(diǎn)擊率越高優(yōu)先級(jí)越高,這樣在訪問(wèn)緩存數(shù)據(jù)時(shí),就可以按優(yōu)先級(jí)為序來(lái)遍歷各級(jí)緩存容器,從概率上縮短在緩存中查找的時(shí)間,使查詢(xún)緩存的效率最大化。如果緩存的總?cè)萘亢艽?,緩存的效率成瓶頸時(shí),可以考慮運(yùn)用此改進(jìn)方案。上面所描述的緩存結(jié)構(gòu)可以看成是由數(shù)據(jù)的尺寸為閥值的一維結(jié)構(gòu)對(duì)外提供統(tǒng)一的數(shù)據(jù)獲取接口,隱藏?cái)?shù)據(jù)存儲(chǔ)實(shí)現(xiàn)細(xì)節(jié)。進(jìn)一步的,本發(fā)明可以在以數(shù)據(jù)尺寸為閥值的多級(jí)緩存容器基礎(chǔ)上構(gòu)建N維緩存結(jié)構(gòu),其中N > 2,并對(duì)外隱藏?cái)?shù)據(jù)存儲(chǔ)的細(xì)節(jié),提供統(tǒng)一的訪問(wèn)接口。比如可以在此基礎(chǔ)上構(gòu)建二維的結(jié)構(gòu),如將從數(shù)據(jù)中心獲取數(shù)據(jù)的查詢(xún)時(shí)間作為另一個(gè)閥值構(gòu)建二維結(jié)構(gòu),查詢(xún)時(shí)間越長(zhǎng)的數(shù)據(jù)在緩存中保留的時(shí)間也越長(zhǎng)。同理可以同樣的原理構(gòu)建三維,四維甚至更多維的結(jié)構(gòu)。本發(fā)明所述的塔式是指各級(jí)緩存的容量按命中率成比例分配,命中率越高,緩存的數(shù)據(jù)個(gè)數(shù)越多。本發(fā)明所述的自適應(yīng)有三個(gè)方面的含義一是緩存數(shù)據(jù)時(shí),自動(dòng)根據(jù)數(shù)據(jù)自身的尺寸選擇合適的緩存,保證一個(gè)新數(shù)據(jù)只能進(jìn)一個(gè)緩存;二是當(dāng)緩存的容量達(dá)到上限時(shí),自動(dòng)將最近最少訪問(wèn)的數(shù)據(jù)清除出緩存;三是從緩存中獲取數(shù)據(jù)時(shí),自動(dòng)判斷數(shù)據(jù)保存的位置(數(shù)據(jù)保存在哪一級(jí)緩存中),提供統(tǒng)一的訪問(wèn)接口,對(duì)用戶(hù)隱藏細(xì)節(jié)。本發(fā)明所述的自組織是指各級(jí)緩存的容量可以動(dòng)態(tài)進(jìn)行調(diào)節(jié),根據(jù)實(shí)時(shí)采集到的命中率,在一定的觸發(fā)條件下,保證緩存空間總量不變的前提下,使各級(jí)緩存容量調(diào)節(jié)到最佳狀態(tài),以使整個(gè)緩存有最大的命中率。本發(fā)明的的自適應(yīng)自組織塔式緩存方法,可以在同質(zhì)存儲(chǔ)介質(zhì)、同質(zhì)數(shù)據(jù)的前提下,自動(dòng)根據(jù)數(shù)據(jù)自身的尺寸選擇合適的緩存,并通過(guò)自動(dòng)調(diào)節(jié)緩存的容量來(lái)最大化緩存的命中率,具有自適應(yīng)性自組織性,對(duì)外提供統(tǒng)一的訪問(wèn)接口,可以實(shí)現(xiàn)對(duì)存儲(chǔ)空間的高效利用。
圖1是基于緩存技術(shù)的數(shù)據(jù)調(diào)用示意圖;圖2是實(shí)施例中塔式緩存結(jié)構(gòu)示意圖;圖3是實(shí)施例中將從數(shù)據(jù)中心獲取的數(shù)據(jù)添加到緩存的流程圖;圖4是實(shí)施例中從緩存中獲取數(shù)據(jù)的流程圖;圖5是實(shí)施例中調(diào)整各級(jí)緩存容量大小的流程圖。
具體實(shí)施例方式下面通過(guò)具體實(shí)施例,并配合附圖,對(duì)本發(fā)明做進(jìn)一步的說(shuō)明。圖2是本發(fā)明的塔式緩存的結(jié)構(gòu)示意圖,將大小不等的數(shù)據(jù)按其大小分別存放在對(duì)應(yīng)的緩存中,對(duì)外提供統(tǒng)一的訪問(wèn)接口,每一級(jí)緩存的容量可以自動(dòng)調(diào)節(jié)。塔式緩存數(shù)據(jù)結(jié)構(gòu)由一系列相互關(guān)聯(lián)的緩存容器構(gòu)成,每一個(gè)容器能容納的數(shù)據(jù)的尺寸,以及數(shù)據(jù)的個(gè)數(shù)構(gòu)成塔狀??梢栽谂渲梦募性O(shè)定各級(jí)緩存容器的存儲(chǔ)策略包括a)緩存容器(Container):存儲(chǔ)數(shù)據(jù)的容器;b)存儲(chǔ)層級(jí)(Level):結(jié)構(gòu)中包含的緩存容器的個(gè)數(shù);c)容器閥值(Limit):每一級(jí)容器能存儲(chǔ)數(shù)據(jù)大小的上限和下限容器閥值上界(LimitUp):每一級(jí)容器能存儲(chǔ)數(shù)據(jù)大小的上限,同時(shí)是下一級(jí)緩存的下界;容器閥值下界(LimitDown):每一級(jí)容器能存儲(chǔ)數(shù)據(jù)大小的下限,同時(shí)是上一級(jí)緩存的上界;d)容器容量(Size):每一級(jí)容器能存儲(chǔ)數(shù)據(jù)的個(gè)數(shù)。上述緩存結(jié)構(gòu)是一種自適應(yīng)的存儲(chǔ)結(jié)構(gòu)。當(dāng)緩存服務(wù)器從數(shù)據(jù)中心收到新數(shù)據(jù)后,根據(jù)數(shù)據(jù)的大小自動(dòng)選擇合適的緩存容器進(jìn)行存儲(chǔ)。對(duì)外提供服務(wù)的方式是根據(jù)查詢(xún)特征值(查詢(xún)條件),在各級(jí)緩存中查找,如果有,則命中,返回給用戶(hù),同時(shí)把該特征值移動(dòng)到隊(duì)尾;如果各級(jí)緩存中都沒(méi)有查到,則從數(shù)據(jù)中心上提取,返回給調(diào)用方,同時(shí)把數(shù)據(jù)保存在相應(yīng)大小的緩存容器中,供后續(xù)的查詢(xún)使用。上述緩存結(jié)構(gòu)可以根據(jù)可利用的存儲(chǔ)空間的大小(Capacity)進(jìn)行精確的容量規(guī)劃,既不浪費(fèi)空間,又不至于造成內(nèi)存漏洞等問(wèn)題發(fā)生。其存儲(chǔ)空間占用公式為:
權(quán)利要求
1.一種自適應(yīng)自組織塔式緩存方法,其步驟包括: 1)在緩存服務(wù)器上建立以數(shù)據(jù)尺寸為閥值的多級(jí)緩存容器,各級(jí)緩存容器串聯(lián)成一個(gè)數(shù)組,構(gòu)成塔式緩存結(jié)構(gòu); 2)所述緩存服務(wù)器從數(shù)據(jù)中心接收數(shù)據(jù),根據(jù)接收的數(shù)據(jù)的大小自動(dòng)選擇合適的緩存容器進(jìn)行存儲(chǔ); 3)在保持存儲(chǔ)空間容量總量不變的前提下,根據(jù)各級(jí)緩存容器在指定時(shí)間段內(nèi)的命中率動(dòng)態(tài)調(diào)節(jié)各級(jí)緩存容器的容量值,使命中率越高的緩存容器的容量越大。
2.如權(quán)利要求1所述的方法,其特征在于:根據(jù)緩存點(diǎn)擊率來(lái)設(shè)定各級(jí)緩存容器的訪問(wèn)優(yōu)先級(jí),點(diǎn)擊率越高則優(yōu)先級(jí)越高。
3.如權(quán)利要求1所述的方法,其特征在于:所述多級(jí)緩存容器對(duì)外提供統(tǒng)一的數(shù)據(jù)獲取接口,并隱藏?cái)?shù)據(jù)存儲(chǔ)實(shí)現(xiàn)細(xì)節(jié)。
4.如權(quán)利要求1所述的方法,其特征在于:每級(jí)緩存容器含有一個(gè)用于保存數(shù)據(jù)的鍵值對(duì)的數(shù)據(jù)映射,以及一個(gè)數(shù)據(jù)特征值隊(duì)列。
5.如權(quán)利要求4所述的方法,其特征在于:所述數(shù)據(jù)特征值隊(duì)列采用LRU算法管理緩存數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,其特征在于,步驟3)所述動(dòng)態(tài)調(diào)節(jié)各級(jí)緩存容器的容量值的計(jì)算公式為:
7.如權(quán)利要求1所述的方法,其特征在于:在以數(shù)據(jù)尺寸為閥值的所述多級(jí)緩存容器基礎(chǔ)上構(gòu)建N維緩存結(jié)構(gòu),其中N ≥2。
8.如權(quán)利要求7所述的方法,其特征在于:在以數(shù)據(jù)尺寸為閥值的所述多級(jí)緩存容器基礎(chǔ)上,將從數(shù)據(jù)中心獲取數(shù)據(jù)的查詢(xún)時(shí)間作為另一個(gè)閥值構(gòu)建二維緩存結(jié)構(gòu),其中查詢(xún)時(shí)間越長(zhǎng)的數(shù)據(jù)在緩存中保留的時(shí)間越長(zhǎng)。
9.如權(quán)利要求1所述的方法,其特征在于:在配置文件中設(shè)定各級(jí)緩存容器的存儲(chǔ)層級(jí)、容器閥值和容器容量。
10.如權(quán)利要求1所述的方法,其特征在于:在配置文件中配置是否啟動(dòng)調(diào)整容器容量功能以及如何觸動(dòng)調(diào)整容器容量功能,以實(shí)現(xiàn)容量調(diào)整的自組織。
全文摘要
本發(fā)明涉及一種高效利用存儲(chǔ)空間的自適應(yīng)自組織塔式緩存方法,其步驟包括在緩存服務(wù)器上建立以數(shù)據(jù)尺寸為閥值的多級(jí)緩存容器,各級(jí)緩存容器串聯(lián)成一個(gè)數(shù)組,構(gòu)成塔式緩存結(jié)構(gòu);所述緩存服務(wù)器從數(shù)據(jù)中心接收數(shù)據(jù),根據(jù)接收的數(shù)據(jù)的大小自動(dòng)選擇合適的緩存容器進(jìn)行存儲(chǔ);在保持存儲(chǔ)空間容量總量不變的前提下,根據(jù)各級(jí)緩存容器在指定時(shí)間段內(nèi)的命中率動(dòng)態(tài)調(diào)節(jié)各級(jí)緩存容器的容量值,使命中率越高的緩存容器的容量越大。本發(fā)明可以自動(dòng)根據(jù)數(shù)據(jù)自身的尺寸選擇合適的緩存,并通過(guò)自動(dòng)調(diào)節(jié)緩存的容量來(lái)最大化緩存的命中率,具有自適應(yīng)性和自組織性。
文檔編號(hào)G06F12/08GK103077125SQ20121054005
公開(kāi)日2013年5月1日 申請(qǐng)日期2012年12月13日 優(yōu)先權(quán)日2012年12月13日
發(fā)明者郭俸明 申請(qǐng)人:北京銳安科技有限公司