一種用于緩存節點的緩存置換方法
【技術領域】
[0001] 本發明涉及計算機網絡傳輸控制領域,具體地說,本發明涉及一種用于緩存節點 的緩存置換算法。
【背景技術】
[0002] 隨著移動和無線網絡的不斷發展,移動終端數目急劇增加。大量的WLAN (Wireless Local Area Networks,無線局域網絡)用戶通過AP(Access Point)接入互聯網,加劇 了匯聚鏈路上的網絡擁塞,從而進一步降低了實際的可用帶寬,導致平均訪問延時增加, TCP(Transmission Control Protocol,傳輸控制協議)吞吐率下降等各種問題。為了緩解 上述問題,提高網絡業務服務性能,改善用戶上網體驗,當前較為通用的一種方式是利用緩 存技術來實現緩存加速。
[0003] 然而,海量的數據訪問使得傳統的利用緩存服務器等網絡邊緣設備實現的諸如 CDN(Content Delivery Network,內容分發網絡)緩存的方法正逐步受到設備成本和部署 規模的制約,越來越多的研究轉移到如何利用網絡內部設備來實現緩存。另一方面,APs由 于其龐大的使用規模、廣泛的應用場景和自身硬件平臺的可編程化以及可外接存儲擴展等 特點已經逐漸開始受到研究者們的青睞。APs作為緩存設備在降低開發成本的同時,還能大 大增加對終端用戶的服務能力。
[0004] 盡管AP的硬件性能較近年來已經取得了較大的提高,但是整體而言,絕大多數AP 的計算能力以及存儲空間還十分有限。例如通用AP的配置如下:CPU頻率為400MHz,內存 大小為125MB,存儲空間為1GB。這就使得AP的單點緩存策略面臨著嚴峻的性能挑戰。
[0005] 此外,考慮到AP硬件設備有限的存儲資源,其不可能將所有的用戶歷史訪問記錄 全部保存下來,這就必然要求有合適的置換策略來不斷更新緩存中的內容,以保證在一定 的存儲空間下盡可能大地提高緩存效果。當前主流的緩存替換算法主要考慮了對象訪問 時間、對象訪問頻率、對象大小和緩存內容的老化時間等因素,而綜合考慮了如上要素的 ⑶FS (Greedy-Dual-Frequency-Size)算法和Hybrid算法雖然一定程度上解決了基于單要 素替換(如LRU、LFU、SIZE)等算法各自帶來的誤差以及緩存污染等問題,但是Hybrid混合 策略的高度復雜性使得其不適合APs的應用場景;GDFS中,由于未充分考慮到體積較大對 象對BHR(Byte Hit Ratio,字節命中率)的影響,從而在BHR指標方面仍存在很大改進空 間。
【發明內容】
[0006] 本發明的目的是提供一種能夠克服上述技術問題的解決方案。
[0007] 本發明提供了一種用于緩存節點的緩存置換方法,包括:僅將小于預定的最大緩 存對象大小的緩存對象存入所述緩存節點;根據所述緩存節點中存儲的緩存對象的參數計 算所述緩存對象的價值;根據所述緩存節點中的所有緩存對象的價值的大小關系,維護所 述緩存節點中所有緩存對象的優先順序列表;在所述緩存節點所存儲的所有緩存對象的總 大小等于所述緩存節點的緩存空間的最大存儲量的值的情況下,從所述列表中取出優先順 序最低的緩存對象進行置換;其中,所述緩存對象的參數,包括:從原始服務器獲取所述緩 存對象的代價的參數值、所述緩存對象的大小的參數值、所述緩存對象的被訪問頻率的參 數值以及所述緩存對象的老化時間的參數值。
[0008] 優選地,將所述緩存對象的實際大小值的對數值作為用于計算所述緩存對象的價 值的所述緩存對象的大小的參數值。
[0009] 優選地,將所述緩存對象被用戶再次訪問的可能性大小作為用于計算所述緩存對 象的價值的所述緩存對象的被訪問頻率的參數值。
[0010] 優選地,對所述緩存對象當前的被用戶再次訪問的可能性的計算依賴于其前一次 被訪問的時刻到當前時刻的時間間隔以及其前一次被訪問的時刻的被用戶再次訪問的可 能性。
[0011] 優選地,所述緩存對象的參數還包括,與所述緩存對象上次被訪問的實際時間的 微小偏離參數。
[0012] 優選地,在所述緩存節點所存儲的所有緩存對象的總大小大于預定的所述緩存節 點的存儲空間的上限的情況下,進行所述緩存置換,其中所述緩存節點的存儲空間的上限 小于或等于所述緩存節點的緩存空間的最大存儲量的值。
[0013] 優選地,所述緩存置換開始之后一直持續,直到所述緩存節點所存儲的所有緩存 對象的總大小小于預定的所述緩存節點的存儲空間的下限的情況下,停止所述緩存置換, 其中所述緩存節點的存儲空間的下限小于所述緩存節點的緩存空間的上限。
[0014] 優選地,在進行所述緩存置換的情況下,還向所述緩存節點的所有兄弟節點查詢 是否存儲有所述緩存節點置換出的緩存對象,并在所有所述兄弟節點都沒有存儲所述緩存 對象的情況下,向所有所述兄弟節點發送所述緩存對象。
[0015] 與現有技術相比,本發明提出的技術方案具有以下優點:
[0016] 本發明的技術方案可以有效提高緩存節點的緩存空間的資源利用率和緩存命中 率;提高緩存節點的字節命中率;提高緩存系統的全局命中率。
【附圖說明】
[0017] 為了更清楚地說明本發明的技術方案,下面將對實施例描述中所需要使用的附圖 作簡單地介紹,顯而易見地,下面描述中的附圖不構成對于本發明的限制。
[0018] 圖1是根據本發明的實施例的對象流行度對比示意圖;
[0019] 圖2是根據本發明的實施例的緩存空間狀態示意圖;
[0020] 圖3是根據本發明的實施例的緩存節點協同環境下的緩存置換方法的流程圖。
【具體實施方式】
[0021] 下面將結合附圖和具體實施例對本發明做進一步地描述。
[0022] 下面描述根據本發明的實施例的緩存置換方法中對緩存對象價值的計算方法。
[0023] 為了更好的描述根據本發明的下述實施例,現對現有技術中的原始的GDFS算法 進行描述。
[0024] 在原始的GDFS算法中,其基本置換方法是根據取得對象所花費的代價、對象大 小、對象訪問頻率、對象老化時間來對每一個緩存的對象計算出一個緩存的鍵值(Key值), 該值表示了緩存該對象的價值,并按照該值對所有已緩存對象按照從大到小的順序維護一 個優先列表。每次置換操作發生時,從列表尾依次取出對象進行置換。Key值的計算公式如 下公式(1):
[0026] 其中,i表示第i個緩存對象;Key(i)表示第i個對象的價值;Cost(i)表示從原 始服務器上取得第i個對象所需花費的代價,計算時可以用常量代替;Size (i)表示第i個 對象的大小;Freq(i)表示第i個對象的用戶訪問頻率;Age (i)表示第i個對象的老化時 間。
[0027] 下面具體描述根據本發明的實施例的對緩存對象價值的計算方法的改進。
[0028] 根據本發明的一個實施例,對現有技術中的緩存節點對緩存對象的存儲附加如下 條件:當緩存對象大于或等于事先定義的緩存對象的大小的最大值Size_時,緩存節點, 例如AP,不對該緩存對象進行存儲,直接丟棄該緩存對象。可具體表示為如下公式(2):
[0030] 其中,Sizei表示緩存對象i的大小經計算處理之前的值;Size(i)表示緩存對象 i的大小經計算處理之后的值。
[0031] 根據本發明的一個實施例,具體的Size_可以根據緩存節點(比如AP)的實際存 儲空間和用戶請求對象的大小來具體確定。例如,經統計,緩存對象中間圖片和視頻是兩 類較大的對象,圖片的平均大小約100KB,視頻的平均大小約為4M。如果AP的存儲空間為 1GB,可以將Size_設置為2倍于平均視頻大小,即8M。
[0032] 通過上述改進,可以改進現有技術中的如下情況:所有的新對象由于加入了老化 時間Age(i)而使得其價值Key(i)值較高,從而都會比較容易被緩存節點緩存下來;當存在 非常大的新對象被緩存節點獲得需要發生緩存置換時,該新對象會導致眾多的較小的緩存 對象被替換出緩存節點的緩存空間;然而根據緩存對象的訪問特性可知,較大的緩存對象 被再次訪問的概率會降低;這就使得對非常大的對象的緩存會明顯降低緩存節點的緩存命 中率。
[0033] 通過前述改進,直接排除對部分過大的緩存對象進行存儲,從而可以有效提高緩 存節點的緩存空間的資源利用率和緩存命中率。
[0034] 根據本發明的一個實施例,對現有技術中的原始的GDFS算法(前述公式(1))中 的Size (i)參數做如下改進:對Size (i)做取對數處理,即以logx Size代替原本的Size參 數,以使得到的新的關于緩存對象的大小的參數值對緩存對象的Key值影響相對降低。可 具體表示為如下公式(3):
[0035] Size (i) = logx Size; (3)
[0036] 其中,x>l,進一步可選地,x = 2 ;Sizei表示緩存對象i的大小經計算處理之前的 值;Size (i)表示緩存對象i的大小經計算處理之后的值。
[0037] 通過上述改進,可以改進現有技術中的如下情況:由于原始的GDFS算法的公式 中,越大的對象計算出來的Key值越小,進而導致其被置換出去的可能性越大,也就是說, 越大的對象被緩存節點緩存的概率越小,故而,隨著較大的對象的緩存概率降低,導致緩存 節點的字節命中率也隨之降低。
[0038] 通過前述改進,可利用對數函數的性質有效縮小不同大小的緩存對象之間key值 的差距,進而提高緩存節點的字節命中率。
[0039] 根據本發明的的一個實施例,將前述改進同時加入原始的⑶FS算法(公式(1)) 中,可以如下公式(4)表示:
[0041] 其中,χ>1,進一步可選地,X = 2 ;Sizei表示緩存對象i的大小經計算處理之前的 值;Size (i)表示緩存對象i的大小經計算處理之后的值;Sizemax為事先定義的緩存對象的 大小的最大值,即緩存對象超過此大小即被直接丟棄。
[0042] 通過上述改進,既可以直接排除對部分過大的緩存對象進行存儲,從而有效提高 緩存節點的緩存空間的資源利用率和緩存命中率,同時利用對數函數的性質有效縮小不同 大小的緩存對象之間key值的差距,進而兼顧緩存節點的字節命中率。
[0043] 根據本發明的一個實施例,對現有技術中的原始的GDFS算法(前述公式(1))中 的Freq(i)參數的計算可以進行如下改進:將緩存對象i的Freq(i)值重新定義為緩存對 象i當前的流行度,即緩存對象i被用戶再次訪問的可能性大小。具體而言,將對緩存對象 i當前的Freq(i)的計算與其前一次被訪問的時刻到當前時刻的時間間隔以及其前一次被 訪問的時刻的Freq(i