0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于LRU-K模型如何實現(xiàn)高效的元數(shù)據(jù)緩存?

冬至配餃子 ? 來源:焱融科技 ? 作者:焱融科技 ? 2023-06-29 15:05 ? 次閱讀

對于存儲來說,性能是繞不開的話題。當提到性能,可靠、高效的緩存策略是極其重要的。在計算機領(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)勢因素:

  1. 客戶端資源有限,無法緩存海量的文件,而后端存儲則可以線性擴展,可以緩存更多的數(shù)據(jù)。
  2. 后端存儲可以根據(jù)整個存儲情況提供更全面的緩存,比如說多個客戶端同時訪問熱點。
  3. 分布式文件存儲中,客戶端散布各個終端節(jié)點,存儲層的緩存可以保證一致性,更加安全可靠。
  4. 存儲層可以根據(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)目錄的緩存:

  1. 數(shù)據(jù)第一次被訪問,加入到訪問歷史列表;
  2. 如果數(shù)據(jù)在訪問歷史列表里后沒有達到 K 次訪問,則按照一定規(guī)則(LRU)淘汰;
  3. 當訪問歷史隊列中的數(shù)據(jù)訪問次數(shù)達到 K 次后,將數(shù)據(jù)索引從歷史隊列刪除,將數(shù)據(jù)移到緩存隊列中,并緩存此數(shù)據(jù),緩存隊列重新按照時間排序;
  4. 緩存數(shù)據(jù)隊列中被再次訪問后,重新排序;
  5. 需要淘汰數(shù)據(jù)時,淘汰緩存隊列中排在末尾的數(shù)據(jù),即:淘汰“倒數(shù)第 K 次訪問離現(xiàn)在最久”的數(shù)據(jù)。

1.PNG

存儲層使用緩存加速元數(shù)據(jù)性能是一種有效的方法,它可以提高分布式文件存儲的訪問效率和一致性,同時減少對數(shù)據(jù)庫的壓力。LRU-K 模型是一種適合海量目錄場景下的緩存淘汰算法,它可以避免緩存污染的問題,保證緩存數(shù)據(jù)的熱度和新鮮度。焱融分布式文件存儲 YRCloudFile 提供元數(shù)據(jù)服務的組件是 MDS,在海量目錄百億級文件規(guī)模場景下實現(xiàn)了高效的存儲層的元數(shù)據(jù)緩存,能夠提供卓越的性能和可靠性,滿足用戶對文件存儲的各種需求,實測性能成倍提升,為用戶提供了高性能、高可靠、高擴展的存儲服務。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7435

    瀏覽量

    163525
  • 緩存器
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    11641
  • MDS
    MDS
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    8040
收藏 人收藏

    評論

    相關(guān)推薦

    LRU緩存模塊最佳實踐

    LRU(Least Recently Used)是一種緩存替換算法,它的核心思想是當緩存滿時,替換最近最少使用的數(shù)據(jù)。在實際應用中,LRU
    的頭像 發(fā)表于 09-30 16:47 ?843次閱讀

    Redis的LRU實現(xiàn)和應用

    在編程中,計數(shù)器是一種基本但強大的工具,用于跟蹤和管理數(shù)據(jù)和資源。本文將深入探討不同類型的計數(shù)器的應用,從Redis的LRU(最近最少使用)緩存淘汰算法的實現(xiàn),到如何在內(nèi)存受限的環(huán)境中
    的頭像 發(fā)表于 12-15 09:24 ?559次閱讀

    【原創(chuàng)】Android開發(fā)—Lru核心數(shù)據(jù)結(jié)構(gòu)實現(xiàn)突破緩存框架

    【原創(chuàng)】Android開發(fā)—Lru核心數(shù)據(jù)結(jié)構(gòu)實現(xiàn)突破緩存框架回復即可獲取下載鏈接[hide=d15]鏈接:http://pan.baidu.com/s/1c2BfjsW 密碼:bta
    發(fā)表于 06-21 16:58

    STM32向串口發(fā)送大量數(shù)據(jù)如何定義緩存區(qū)?

    用STM32向串口發(fā)送大量數(shù)據(jù),我的想法是定義一個大的緩存區(qū),等緩存區(qū)滿了后一次性將緩存區(qū)的數(shù)據(jù)發(fā)送出去。
    發(fā)表于 06-09 10:49

    高速緩存/海量緩存的設計實現(xiàn)

    ?! 。?、海量緩存的設計實現(xiàn)  本系統(tǒng)使用了兩片25616bit容量的SRAM作為高速緩存,系統(tǒng)中的4個通道可同時存儲每通道128點采樣
    發(fā)表于 12-04 15:59

    架構(gòu)設計應用級緩存回收策略

      緩存,筆者的理解是讓數(shù)據(jù)更接近于使用者,目的是讓訪問速度更快。工作機制是先從緩存中讀取數(shù)據(jù),如果沒有,再從慢速設備上讀取實際數(shù)據(jù)并同步到
    發(fā)表于 01-14 17:08

    高速數(shù)據(jù)采集系統(tǒng)中高速緩存與海量緩存實現(xiàn)

    探討了高速數(shù)據(jù)采集系統(tǒng)中高速采樣緩存的重要性和實現(xiàn)途徑,闡述了基于ADSP-21065L的并行多通道數(shù)據(jù)采集板上高速采樣緩存的設計與電路結(jié)構(gòu)
    發(fā)表于 04-23 17:08 ?23次下載

    基于PC的多通道自帶緩存數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)

    基于PC的多通道自帶緩存數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn):本文描述了一自帶緩存數(shù)據(jù)采集系統(tǒng), 并將本系統(tǒng)所采用的技術(shù)與通用的
    發(fā)表于 10-11 11:12 ?12次下載

    Ceph文件系統(tǒng)的數(shù)據(jù)緩存備份

    針對Ceph文件系統(tǒng)數(shù)據(jù)寫操作響應時間較長的問題,提出一種對數(shù)據(jù)緩存進行備份的方案。該方案采用多個
    發(fā)表于 02-08 15:38 ?0次下載
    Ceph文件系統(tǒng)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>緩存</b>備份

    基于OpenFlow分組緩存管理模型

    基于OpenFlow的軟件定義網(wǎng)絡(SDN)技術(shù)通過在OpenFlow交換機中建立有效的緩存模型,能夠大幅減少控制平面和數(shù)據(jù)平面的通信負載,但整條數(shù)據(jù)流的
    發(fā)表于 02-26 15:35 ?1次下載
    基于OpenFlow分組<b class='flag-5'>緩存</b>管理<b class='flag-5'>模型</b>

    適用于命名數(shù)據(jù)網(wǎng)絡的緩存內(nèi)容分類模型

    的 Diffserv模型,提出一個適用于NDN的緩存內(nèi)容分類模型,并給出同時考慮內(nèi)容分類、路由器本地流行度和內(nèi)容下載時延的概率緩存算法 Diffcache。實驗結(jié)果表明,該算法可
    發(fā)表于 05-12 11:33 ?4次下載

    基于高斯混合模型的Web代理服務器緩存

    基于高斯混合模型的Web代理服務器緩存
    發(fā)表于 06-23 16:46 ?17次下載

    設計并實現(xiàn)一個滿足LRU約束的數(shù)據(jù)結(jié)構(gòu)

    LRUCache(int capacity)` 以 **「正整數(shù)」** 作為容量 `capacity` 初始化 `LRU` 緩存
    的頭像 發(fā)表于 06-07 17:05 ?949次閱讀
    設計并<b class='flag-5'>實現(xiàn)</b>一個滿足<b class='flag-5'>LRU</b>約束的<b class='flag-5'>數(shù)據(jù)</b>結(jié)構(gòu)

    Redis的LRU與LFU算法實現(xiàn)

    Redis是一款基于內(nèi)存的高性能NoSQL數(shù)據(jù)庫,數(shù)據(jù)緩存在內(nèi)存里, 這使得Redis可以每秒輕松地處理數(shù)萬的讀寫請求。
    的頭像 發(fā)表于 07-11 09:48 ?1031次閱讀
    Redis的<b class='flag-5'>LRU</b>與LFU算法<b class='flag-5'>實現(xiàn)</b>

    redis的lru原理

    Redis是一種基于內(nèi)存的鍵值數(shù)據(jù)庫,它使用了LRU(Least Recently Used)算法來進行緩存數(shù)據(jù)淘汰。LRU算法的核心思想
    的頭像 發(fā)表于 12-05 09:56 ?592次閱讀