小文件、nginx、Redis、Moosefs


現在有3KW的數據,單條數據都很小的,如果按key-value來看的話,key就是32位的MD5字符串,value按平均算大概是100字節左右。

現在需要將這些數據做緩存以在高並非的時候依然可以快速響應。
因為這些數據基本沒有冷熱數據之分,所以需要將全部數據都放到緩存中。

1、直接生成靜態文件,利用nginx對靜態文件的高效做靜態緩存。

    • 當時服務器硬件資源有限,所以就采用這種方式,一直源用至今。
    • 服務器間通過NFS來共享
    • 太多小文件,不方便管理
    • NFS不方便運維與擴展
    • 文件內容很小(100字節左右),3KW大概就是2.5G大小左右
      • 不過文件存儲的時候和硬盤分區的族大小有關,在這里磁盤分區的族大小為8K,所以盡管文件內容只有100字節,但是實際存儲到磁盤上的時候單個文件其實是8K
      • 所以3KW的文件世界占的磁盤空間大約為:200G左右(嚴重浪費空間啊

2、Redis(V2.2.11)【KV數據庫】

    • 聽同事說開啟VM會使性能急劇下降,所以基本無視VM,數據全放內存。
    • key為32位MD5字符串
    • 測試數據:10W數據大概占內存20M
    • 測試數據:500W數據大概占內存1G,持久化的rdb數據文件大概350M
    • 推算3KW數據:內存6G,持久化的rdb數據文件大概為2G(壓縮了?)
    • 因為Redis在持久化的時候內存會加倍,和考慮到數據的增長,所以需要1台20G內存的機器基本就沒問題了(容災啥的另算)。
    • Redis非常快,如果硬件條件沒問題,基本選這個最好了。

3、Moosefs(MFS)【分布式文件存儲系統】

    • mfs支持NFS的方式mount到本地直接操作(如使用mfs,則現在的架構基本不用改)
    • 最基本的需要一台主控服務器(Master Server)、一台數據服務器(Chunk Server)
    • 文件和目錄的索引需要全部加載到主控服務器的內存中,所以對主控服務器的內存有一定的要求
    • 寫入30W文件,到20W的時候寫入就開始下降得厲害了(我的5400轉的筆記本硬盤)
    • 30W文件,4W目錄,主控服務器占用大概120M內存
    • 文件存儲方式貌似和普遍的文件一樣單個存儲的(不確定),30W文件大概占了2.4G的磁盤空間(同樣是8K一個文件)。
    • 小文件一樣很多,不方便維護與遷移(不知是否我設置不對?)。
    • 內存、硬盤都占用得比較多,而且性能相對來說不是很出眾。
    • 所以這個基本不考慮了。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



spark小文件合並 CDN小文件的原理 MR合並小文件 Hive小文件合並 關於小文件同步 小文件存儲組件 海量小文件的管理 海量小文件存儲 分布式文件系統moosefs hive壓縮之小文件合並
 
粤ICP备14056181号  © 2014-2021 ITdaan.com