FastFDS 分布式檔案系統
底下附伺服器搭建
介紹
FastDFS是一個開源的輕量級分布式檔案系統。它解決了大資料量存儲和負載均衡等問題。特别适合以中小檔案(建議範圍:4KB < file_size <500MB)為載體的線上服務,如相冊網站、視訊網站等等。在UC基于FastDFS開發向使用者提供了:網盤,社群,廣告和應用下載下傳等業務的存儲服務。
FastDFS是一款開源的輕量級分布式檔案系統純C實作,支援Linux、FreeBSD等UNIX系統類google FS,不是通用的檔案系統,隻能通過專有API通路,目前提供了C、Java和PHP API為網際網路應用量身定做,解決大容量檔案存儲問題,追求高性能和高擴充性FastDFS可以看做是基于檔案的key value pair存儲系統,稱作分布式檔案存儲服務更為合适。
FastDFS特性:
- 檔案不分塊存儲,上傳的檔案和OS檔案系統中的檔案一一對應
- 支援相同内容的檔案隻儲存一份,節約磁盤空間
- 下載下傳檔案支援HTTP協定,可以使用内置Web Server,也可以和其他Web Server配合使用
- 支援線上擴容
- 支援主從檔案
- 存儲伺服器上可以儲存檔案屬性(meta-data)V2.0網絡通信采用libevent,支援大并發通路,整體性能更好
伺服器:
Tracker相當于FastDFS的大腦,不論是上傳還是下載下傳都是通過tracker來配置設定資源;用戶端一般可以使用ngnix等靜态伺服器來調用或者做一部分的緩存;存儲伺服器内部分為卷(或者叫做組),卷于卷之間是平行的關系,可以根據資源的使用情況随時增加,卷内伺服器檔案互相同步備份,以達到容災的目的。
流程
上傳:
下載下傳:
精巧的檔案ID-FID
說到下載下傳就不得不提檔案索引(又稱:FID)的精巧設計了。檔案索引結構如下圖,是用戶端上傳檔案後存儲伺服器傳回給用戶端,用于以後通路該檔案的索引資訊。檔案索引資訊包括:組名,虛拟磁盤路徑,資料兩級目錄,檔案名:
group1/M00/nn/mm/xxx.jpg
- 組名:檔案上傳後所在的存儲組名稱,在檔案上傳成功後有存儲伺服器傳回,需要用戶端自行儲存。
- 虛拟磁盤路徑:存儲伺服器配置的虛拟路徑,與磁盤選項store_path*對應。
- 資料兩級目錄:存儲伺服器在每個虛拟磁盤路徑下建立的兩級目錄,用于存儲資料檔案。
- 檔案名:與檔案上傳時不同。是由存儲伺服器根據特定資訊生成,檔案名包含:源存儲伺服器IP位址、檔案建立時間戳、檔案大小、随機數和檔案拓展名等資訊。
快速定位檔案
知道FastDFS FID的組成後,我們來看看FastDFS是如何通過這個精巧的FID定位到需要通路的檔案。
- 1、通過組名tracker能夠很快的定位到用戶端需要通路的存儲伺服器組,并将選擇合适的存儲伺服器提供用戶端通路;
- 2、存儲伺服器根據“檔案存儲虛拟磁盤路徑”和“資料檔案兩級目錄”可以很快定位到檔案所在目錄,并根據檔案名找到用戶端需要通路的檔案。
點選伺服器搭建