1. 程式人生 > >分散式小檔案系統fastdfs與weedfs的對比

分散式小檔案系統fastdfs與weedfs的對比

最近拿一臺雙核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更先進,更能承受數量更大的小檔案