對于存儲來說,性能是繞不開的話題。當提到性能,可靠、高效的緩存策略是極其重要的。在計算機領(lǐng)域,緩存技術(shù)一般是指,用一個更快的存儲設備存儲一些經(jīng)常用到的數(shù)據(jù),供用戶快速訪問。用戶不需要每次都與慢設備去做交互,因此可以提高訪問效率。凡是位于速度相差較大的兩種硬件之間,用于協(xié)調(diào)兩者數(shù)據(jù)傳輸速度差異的結(jié)構(gòu),均可稱之為緩存。緩存是提升訪問性能的一個重要技術(shù)。緩存通過減少系統(tǒng)對數(shù)據(jù)庫的訪問量來提高系統(tǒng)性能。
存儲層使用緩存的優(yōu)勢
目前緩存分為兩種模式,一種是文件緩存,一種是內(nèi)存緩存,文件緩存即緩存數(shù)據(jù)存放在服務器的硬盤空間中,內(nèi)存緩存即緩存數(shù)據(jù)存放在服務器的內(nèi)存空間中。在分布式文件存儲中,客戶端就能提供文件緩存,那為什么存儲層還需要緩存呢?以下是存儲層使用緩存的優(yōu)勢因素:
- 客戶端資源有限,無法緩存海量的文件,而后端存儲則可以線性擴展,可以緩存更多的數(shù)據(jù)。
- 后端存儲可以根據(jù)整個存儲情況提供更全面的緩存,比如說多個客戶端同時訪問熱點。
- 分布式文件存儲中,客戶端散布各個終端節(jié)點,存儲層的緩存可以保證一致性,更加安全可靠。
- 存儲層可以根據(jù)我們數(shù)據(jù)在物理機上的分布特點,靈活調(diào)配緩存大小和策略。
存儲層的緩存能力是提升分布式存儲性能非常重要的部分,今天我們主要討論利用 LRU-K 模型如何實現(xiàn)高效的元數(shù)據(jù)緩存?
LRU-K 模型的優(yōu)勢及運作模式
內(nèi)存中的讀寫速度很快,基于此很多緩存技術(shù)都喜歡將數(shù)據(jù)存在內(nèi)存中,但是內(nèi)存空間是有限的,當?shù)竭_一定量后需要將一些不常用的緩存數(shù)據(jù)刪除或者落盤。緩存淘汰算法順應而生,其中 LRU、LRU-K 就是比較常見的,目的都是為了高效地維護緩存數(shù)據(jù)。
LRU 的基本思想是如果數(shù)據(jù)最近被訪問過,那么將來被訪問的幾率更高。我們實現(xiàn) LRU 時,要維護一個隊列,第一次訪問的數(shù)據(jù)直接入隊,重復訪問的緩存,將該數(shù)據(jù)移至隊尾,需要刪除時刪除隊頭的數(shù)據(jù),這樣就能保持隊列越往后,數(shù)據(jù)再次被訪問的可能性就越大。LRU 緩存變換之快這是它的優(yōu)點也是它的缺點,因為只需要一次訪問就能成為最新鮮的數(shù)據(jù),當出現(xiàn)很多偶發(fā)數(shù)據(jù)時,這些偶發(fā)的數(shù)據(jù)也會被當作最新鮮的,從而成為緩存。但其實這些偶發(fā)數(shù)據(jù)以后并不會被經(jīng)常訪問到。在文件系統(tǒng)里,這個現(xiàn)象會更加明顯,絕大部分文件/目錄只在業(yè)務過程中單次去查詢,而熱點往往集中在少量文件。
LRU-K 的主要目的是為了解決 LRU 算法"緩存污染"的問題,其核心思想是將"最近使用過 1 次"的判斷標準擴展為"最近使用過 K 次"。LRU-K 提供兩個 LRU 隊列,一個是訪問計數(shù)隊列,一個是標準的 LRU 隊列,兩個隊列都按照 LRU 規(guī)則淘汰數(shù)據(jù)。當訪問一個數(shù)據(jù)時,數(shù)據(jù)先進入訪問計數(shù)隊列,當數(shù)據(jù)訪問次數(shù)超過 K 次后,才會進入標準 LRU 隊列。標準的 LRU 算法相當于 LRU-1;LRU-K 具有 LRU 的優(yōu)點,同時能夠避免 LRU 的缺點,實際應用中 LRU-2 是綜合各種因素后最優(yōu)的選擇,LRU-3 或者更大的 K 值命中率會高,但適應性差,需要大量的數(shù)據(jù)訪問才能將歷史訪問記錄清除掉。
目錄的結(jié)構(gòu)是樹形的,這就決定了我們不能平等地去看待每一個目錄,越接近樹頂?shù)哪夸?,它的訪問概率越高,訪問頻次越高,這些是最值得保存的數(shù)據(jù)。所以 LRU-K 更適合海量目錄場景下的緩存淘汰。
采用 LRU-K 模型實現(xiàn)目錄的緩存:
- 數(shù)據(jù)第一次被訪問,加入到訪問歷史列表;
- 如果數(shù)據(jù)在訪問歷史列表里后沒有達到 K 次訪問,則按照一定規(guī)則(LRU)淘汰;
- 當訪問歷史隊列中的數(shù)據(jù)訪問次數(shù)達到 K 次后,將數(shù)據(jù)索引從歷史隊列刪除,將數(shù)據(jù)移到緩存隊列中,并緩存此數(shù)據(jù),緩存隊列重新按照時間排序;
- 緩存數(shù)據(jù)隊列中被再次訪問后,重新排序;
- 需要淘汰數(shù)據(jù)時,淘汰緩存隊列中排在末尾的數(shù)據(jù),即:淘汰“倒數(shù)第 K 次訪問離現(xiàn)在最久”的數(shù)據(jù)。
存儲層使用緩存加速元數(shù)據(jù)性能是一種有效的方法,它可以提高分布式文件存儲的訪問效率和一致性,同時減少對數(shù)據(jù)庫的壓力。LRU-K 模型是一種適合海量目錄場景下的緩存淘汰算法,它可以避免緩存污染的問題,保證緩存數(shù)據(jù)的熱度和新鮮度。焱融分布式文件存儲 YRCloudFile 提供元數(shù)據(jù)服務的組件是 MDS,在海量目錄百億級文件規(guī)模場景下實現(xiàn)了高效的存儲層的元數(shù)據(jù)緩存,能夠提供卓越的性能和可靠性,滿足用戶對文件存儲的各種需求,實測性能成倍提升,為用戶提供了高性能、高可靠、高擴展的存儲服務。
-
存儲器
+關(guān)注
關(guān)注
38文章
7435瀏覽量
163525 -
緩存器
+關(guān)注
關(guān)注
0文章
63瀏覽量
11641 -
MDS
+關(guān)注
關(guān)注
0文章
5瀏覽量
8040
發(fā)布評論請先 登錄
相關(guān)推薦
評論