請問阿里云云存儲網(wǎng)關(guān)緩存工作原理是什么?
云存儲網(wǎng)關(guān)支持通過傳統(tǒng)的文件協(xié)議(SMB/NFS)來訪問OSS Bucket里面的數(shù)據(jù),并能夠通過緩存技術(shù)將用戶頻繁訪問的熱點數(shù)據(jù)保留在網(wǎng)關(guān)側(cè)的緩存盤里,從而提供給用戶更好的訪問體驗。使得用戶在享受云上海量OSS存儲空間的同時,還兼具本地的高速訪問性能。下面是阿里云文件網(wǎng)關(guān)的架構(gòu)圖。
文件網(wǎng)關(guān)支持緩存模式和復(fù)制模式兩種模式,絕大部分用戶使用的應(yīng)該都是緩存模式。緩存模式是指緩存盤的數(shù)據(jù)到一定比例之后,文件網(wǎng)關(guān)會自動淘汰那些訪問不頻繁的數(shù)據(jù)。在這種模式下,固定容量的緩存盤可以管理遠(yuǎn)遠(yuǎn)大于緩存盤實際容量的OSS Bucket。復(fù)制模式則不同,數(shù)據(jù)在網(wǎng)關(guān)側(cè)和OSS Bucket里面是1:1的,所以網(wǎng)關(guān)不會去做數(shù)據(jù)的淘汰,一定容量的緩存盤理論上只能管理對應(yīng)于緩存盤容量的OSS Bucket。復(fù)制模式針對的場景主要是OSS Bucket總數(shù)據(jù)量基本不會增長且總數(shù)據(jù)量不是特別大,同時希望將所有數(shù)據(jù)都保持在網(wǎng)關(guān)共享里加速訪問。不過這種場景畢竟在少數(shù),絕大多數(shù)用戶會選擇緩存模式以應(yīng)對日后OSS Bucket里面的數(shù)據(jù)增長。
在緩存模式下,緩存盤的數(shù)據(jù)會在60%滿的時候觸發(fā)淘汰直到實際數(shù)據(jù)量落到60%以下,從而保證永遠(yuǎn)有足夠的緩存容量面對新的數(shù)據(jù)寫入。那么淘汰的策略是如何的呢,如何決定哪些數(shù)據(jù)是可以淘汰的呢?文件網(wǎng)關(guān)淘汰的實際上是已經(jīng)同步到OSS Bucket里面的文件,也就是說對某個文件的最后一次修改應(yīng)用到網(wǎng)關(guān)的SMB或者NFS共享之后,并且網(wǎng)關(guān)已經(jīng)將這個文件上傳到OSS Bucket里面,那么這個文件就是可以淘汰的。如果用戶還在持續(xù)的對某個文件進(jìn)行寫入,這個文件是不會被選為一個淘汰的對象的。所以用戶如果同時打開多個文件進(jìn)行寫入,緩存盤的容量就應(yīng)該比同時在寫的所有文件的總?cè)萘恳?,否則就有可能導(dǎo)致數(shù)據(jù)來不及淘汰而造成寫入錯誤?。?!
在復(fù)制模式下,因為數(shù)據(jù)不會發(fā)生淘汰,相對來說就簡單很多。緩存盤的容量比OSS Bucket里面的總數(shù)據(jù)大就可以,這種模式注定它不可能管理特別大的數(shù)據(jù)量,因為當(dāng)前支持的緩存盤的最大容量32TB。所以除非對復(fù)制模式有強需求,還是推薦使用緩存模式,相對來說更加靈活。
另外文件網(wǎng)關(guān)會預(yù)留一部分緩存盤空間存儲元數(shù)據(jù),一般會預(yù)留20%。這部分元數(shù)據(jù)主要是用來存儲單個文件的元數(shù)據(jù),包括大小,修改時間等等。所以即使某個文件的數(shù)據(jù)被淘汰之后,網(wǎng)關(guān)還是存儲了一個樁文件在元數(shù)據(jù)里,這樣用戶從客戶端進(jìn)行文件夾瀏覽的時候,還是能夠看到數(shù)據(jù)被淘汰掉的這個文件,給用戶一致的體驗。用戶如果試圖讀取這個文件內(nèi)容,網(wǎng)關(guān)會負(fù)責(zé)將數(shù)據(jù)再次從OSS Bucket里獲取到緩存盤里面。這部分元數(shù)據(jù)空間關(guān)系到當(dāng)前共享可以支持的最大文件數(shù)目,畢竟40GB的緩存盤的元數(shù)據(jù)空間肯定低于50GB的緩存盤的元數(shù)據(jù)空間。一般來說100G的緩存盤已經(jīng)可以支持到1000萬文件了。