分佈式小文件系統fastdfs與weedfs的對比

https://www.tuicool.com/articles/uaiimu

最近拿一臺雙核1G的kvm vps搭建了一個圖片的服務器,前面用百度雲加速扛着,有了個專業圖片存儲及CDN的樣子。每天還是有50W左右的PV,流量在30G左右。總結一下最近接觸過的兩個分佈式小文件系統weedfs和fastdfs。

fastdfs的詳細介紹看這裏=》 傳送門

weedfs官方地址= >傳送門

在兩個系統中都有一個負責管理存儲節點或者存儲卷的服務,weedfs中叫master,而fastdfs中叫做tracker。下面是在文檔中對各自的master的解釋

 

 

 

 

 

 

PHP

 

FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。


Weed-FS的master server選擇管理數據卷(data volumes)而不是數據塊,每個數據卷大小是32GB,能夠保存大量的文件( 小文件 ),每個存儲節點能夠擁有很多個數據卷,master節點只需要保存這些卷的元數據就可以了,並且這些數據量很少,並且大部分情況下是很少會變化的。 
所有的卷都由master服務器來管理,master服務器包含了卷id和卷服務器的mapping,這些信息基本不變,可以很好的緩存起來。

 

FastDFS 服務端有兩個角色:跟蹤器( tracker )和存儲節點( storage )。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。

Weed - FS 的 master server 選擇管理數據卷( data volumes )而不是數據塊,每個數據卷大小是 32GB ,能夠保存大量的文件( 小文件 ),每個存儲節點能夠擁有很多個數據卷, master節點只需要保存這些卷的元數據就可以了,並且這些數據量很少,並且大部分情況下是很少會變化的。

所有的卷都由 master 服務器來管理, master 服務器包含了卷 id 和卷服務器的 mapping ,這些信息基本不變,可以很好的緩存起來。

根據上面的解釋就可以知道,master在上傳和下載文件的過程中都承載着定位文件需要上傳或者下載的具體的卷。

在具體存儲小文件的時候,weedfs是通過將多個小文件的二級制存儲到一個大文件中,然後通過索引進行具體的位置的定位。而fastdfs是通過文件夾散列的方式將文件直接存儲在硬盤上面。但從這裏就可以看出來,在海量小文件的情況下,weedfs產生的文件的元數據是很少的,因他他至於每個數據卷的元數據。而weedfs會產生大量的元數據,因爲他依賴的是操作系統的文件管理系統,對每一個文件的定位以及驗證都是通過元數據來進行的。

從上面的對比就可以看出來,在海量小文件的情況下肯定是weedfs的性能更高,因爲他的文件元數據是相當少的,所以這部分經常被訪問的元數據能夠被操作系統或者內存直接緩存住,這樣就減少了對磁盤的操作,而磁盤的操作只需要進行一次,就是在進行文件讀取的時候。而fastdfs回產生海量的文件的元數據,大到一定程序了操作系統的緩存或者內存就無法進行全部存儲了,這樣就造成了在硬盤上進行隨機讀寫來查找文件了,兩個效率和速度以及對系統和硬盤造成的負載顯而易見了。

總結:小文件存儲不同於大文件,大文件的性能和時間消耗,主要在傳輸的帶寬等限制上。而小文件主要在於系統本身的讀取速度上。所以綜合來說,個人覺得weedfs比fastdfs更先進,更能承受數量更大的小文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章