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