緩存大量小文件?Redis是首選!
現(xiàn)在有3KW的數(shù)據(jù),單條數(shù)據(jù)都很小的,如果按key-value來(lái)看的話,key就是32位的MD5字符串,value按平均算大概是100字節(jié)左右。
現(xiàn)在需要將這些數(shù)據(jù)做緩存以在高并發(fā)的時(shí)候依然可以快速響應(yīng)。
因?yàn)檫@些數(shù)據(jù)基本沒(méi)有冷熱數(shù)據(jù)之分,所以需要將全部數(shù)據(jù)都放到緩存中。
1、直接生成靜態(tài)文件,利用nginx對(duì)靜態(tài)文件的高效做靜態(tài)緩存。
- 當(dāng)時(shí)服務(wù)器硬件資源有限,所以就采用這種方式,一直源用至今。
- 服務(wù)器間通過(guò)NFS來(lái)共享
- 太多小文件,不方便管理
- NFS不方便運(yùn)維與擴(kuò)展
- 文件內(nèi)容很小(100字節(jié)左右),3KW大概就是2.5G大小左右
- 不過(guò)文件存儲(chǔ)的時(shí)候和硬盤(pán)分區(qū)的族大小有關(guān),在這里磁盤(pán)分區(qū)的族大小為8K,所以盡管文件內(nèi)容只有100字節(jié),但是實(shí)際存儲(chǔ)到磁盤(pán)上的時(shí)候單個(gè)文件其實(shí)是8K
- 所以3KW的文件世界占的磁盤(pán)空間大約為:200G左右(嚴(yán)重浪費(fèi)空間啊)
2、Redis(V2.2.11)【KV數(shù)據(jù)庫(kù)】
- 聽(tīng)同事說(shuō)開(kāi)啟VM會(huì)使性能急劇下降,所以基本無(wú)視VM,數(shù)據(jù)全放內(nèi)存。
- key為32位MD5字符串
- 測(cè)試數(shù)據(jù):10W數(shù)據(jù)大概占內(nèi)存20M
- 測(cè)試數(shù)據(jù):500W數(shù)據(jù)大概占內(nèi)存1G,持久化的rdb數(shù)據(jù)文件大概350M
- 推算3KW數(shù)據(jù):內(nèi)存6G,持久化的rdb數(shù)據(jù)文件大概為2G(壓縮了?)
- 因?yàn)镽edis在持久化的時(shí)候內(nèi)存會(huì)加倍,和考慮到數(shù)據(jù)的增長(zhǎng),所以需要1臺(tái)20G內(nèi)存的機(jī)器基本就沒(méi)問(wèn)題了(容災(zāi)啥的另算)。
- Redis非常快,如果硬件條件沒(méi)問(wèn)題,基本選這個(gè)***了。
3、Moosefs(MFS)【分布式文件存儲(chǔ)系統(tǒng)】
- mfs支持NFS的方式mount到本地直接操作(如使用mfs,則現(xiàn)在的架構(gòu)基本不用改)
- 最基本的需要一臺(tái)主控服務(wù)器(Master Server)、一臺(tái)數(shù)據(jù)服務(wù)器(Chunk Server)
- 文件和目錄的索引需要全部加載到主控服務(wù)器的內(nèi)存中,所以對(duì)主控服務(wù)器的內(nèi)存有一定的要求
- 寫(xiě)入30W文件,到20W的時(shí)候?qū)懭刖烷_(kāi)始下降得厲害了(我的5400轉(zhuǎn)的筆記本硬盤(pán))
- 30W文件,4W目錄,主控服務(wù)器占用大概120M內(nèi)存
- 文件存儲(chǔ)方式貌似和普遍的文件一樣單個(gè)存儲(chǔ)的(不確定),30W文件大概占了2.4G的磁盤(pán)空間(同樣是8K一個(gè)文件)。
- 小文件一樣很多,不方便維護(hù)與遷移(不知是否我設(shè)置不對(duì)?)。
- 內(nèi)存、硬盤(pán)都占用得比較多,而且性能相對(duì)來(lái)說(shuō)不是很出眾。
- 所以這個(gè)基本不考慮了。
作者:QLeelulu 出處:http://QLeelulu.cnblogs.com/
【編輯推薦】