大量小文件存儲一直是典型的應用場景之一,現在有3KW的數據,單條數據都很小的,如果按key-value來看的話,key就是32位的MD5字元串,value按平均算大概是100位元組左右。下面學步園小編來講解下Nginx+NFS、Redis和分散式文件系統Moosefs有哪些優缺點?
Nginx+NFS、Redis和分散式文件系統Moosefs有哪些優缺點
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非常快,如果硬體條件沒問題,基本選這個最好了。
Nginx+NFS、Redis和分散式文件系統Moosefs有哪些優缺點
3、Moosefs(MFS)【分散式文件存儲系統】
mfs支持NFS的方式mount到本地直接操作(如使用mfs,則現在的架構基本不用改)
最基本的需要一台主控伺服器(MasterServer)、一台數據伺服器(ChunkServer)
文件和目錄的索引需要全部載入到主控伺服器的內存中,所以對主控伺服器的內存有一定的要求
寫入30W文件,到20W的時候寫入就開始下降得厲害了(我的5400轉的筆記本硬碟)
30W文件,4W目錄,主控伺服器佔用大概120M內存
文件存儲方式貌似和普遍的文件一樣單個存儲的(不確定),30W文件大概佔了2.4G的磁碟空間(同樣是8K一個文件)。
小文件一樣很多,不方便維護與遷移(不知是否我設置不對?)。
內存、硬碟都佔用得比較多,而且性能相對來說不是很出眾。
所以這個基本不考慮了。
以上就是關於「Nginx+NFS、Redis和分散式文件系統Moosefs有哪些優缺點」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!