在(zai)CDN的(de)服務中,有(you)些內容(rong)訪問(wen)會比較(jiao)頻繁,這(zhe)種(zhong)資源在(zai)性(xing)能(neng)更好(hao)的(de)SSD中,會帶來更好(hao)的(de)訪問(wen)體驗。另外一些內容(rong)訪問(wen)較(jiao)少,作為相對冷的(de)資源,只需要(yao)在(zai)HDD磁盤獲(huo)取內容(rong),即可達到較(jiao)好(hao)的(de)性(xing)能(neng)。這(zhe)時(shi)就需要(yao)有(you)策略的(de)實現(xian)緩存的(de)冷熱遷移(yi)。
ats緩存在寫入(ru)磁盤(pan)時,會將內容(rong)拆(chai)成1兆一(yi)(yi)個(ge)(ge)fragment的(de)方(fang)式,鏈式的(de)寫入(ru)到單個(ge)(ge)磁盤(pan)中(zhong)。如果某個(ge)(ge)大文(wen)件(jian)命中(zhong)到HDD磁盤(pan),但(dan)訪(fang)問(wen)時卻(que)只(zhi)(zhi)按照Range方(fang)式訪(fang)問(wen)了其中(zhong)一(yi)(yi)部分(fen),這樣只(zhi)(zhi)加熱了單個(ge)(ge)文(wen)件(jian)的(de)某一(yi)(yi)部分(fen)。如果因為單個(ge)(ge)部分(fen)的(de)訪(fang)問(wen)就將全部文(wen)件(jian)遷(qian)入(ru)到ssd中(zhong),消耗的(de)代價會比(bi)較大。但(dan)是如果只(zhi)(zhi)遷(qian)移(yi)單個(ge)(ge)fragment,就會破(po)壞ats原有的(de)單文(wen)件(jian)單磁盤(pan)的(de)訪(fang)問(wen)方(fang)式。
在SSD緩(huan)存被(bei)覆蓋前(qian),資源(yuan)需(xu)要被(bei)遷(qian)入(ru)到(dao)hdd盤(pan)(pan)(pan),保證冷資源(yuan)不會(hui)被(bei)很(hen)快的(de)淘(tao)汰。但也(ye)是在大文(wen)件(jian)場(chang)景中,如(ru)(ru)果(guo)將完整(zheng)文(wen)件(jian)冷遷(qian)到(dao)HDD盤(pan)(pan)(pan),那就需(xu)要保證在遷(qian)移完成后,資源(yuan)不會(hui)被(bei)覆蓋掉。這樣的(de)話,單磁盤(pan)(pan)(pan)的(de)鎖被(bei)獨占,資源(yuan)寫入(ru)被(bei)擱置,性價比太差。如(ru)(ru)果(guo)只遷(qian)移單個fragment,也(ye)是相同的(de)原因:破壞(huai)了ats原有(you)的(de)單文(wen)件(jian)單磁盤(pan)(pan)(pan)的(de)訪(fang)問方式(shi)。
基于以上原(yuan)因,需要(yao)對ats的單(dan)文件單(dan)磁(ci)盤模(mo)式重新進行設計,實現單(dan)個fragment重新做磁(ci)盤映射(she)hash,大文件的存儲就像Range請(qing)求一樣(yang),分散在不同的磁(ci)盤,遷移不再依賴(lai)首片的磁(ci)盤索引。