基於FDFS的檔案系統設計
FDFS介紹
FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視訊網站等等。
FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。
1. FDFS原理與過程
1.1. FDFS系統結構
描述
1) 跟蹤器和儲存節點都可以由一臺多臺伺服器構成。跟蹤器和儲存節點中的伺服器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有伺服器都是對等的,可以根據伺服器的壓力情況隨時增加或減少。
2) 為了支援大容量,儲存節點(伺服器)採用了分卷(或分組)的組織方式。儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起到了冗餘備份和負載均衡的作用。
3) 在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。
4) 當儲存空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。
5) FDFS中的檔案標識分為兩個部分:卷名和檔名,二者缺一不可。
1.2. FDFS檔案上傳互動過程
描述
1) client詢問tracker上傳到的storage,不需要附加引數;
2) tracker返回一臺可用的storage;
3) client直接和storage通訊完成檔案上傳。
1.3. FDFS檔案下載互動過程
描述
1) client詢問tracker下載檔案的storage,引數為檔案標識(卷名和檔名);
2) tracker返回一臺可用的storage;
3) client直接和storage通訊完成檔案下載。
4) 需要說明的是client為使用FastDFS服務的呼叫方,client也應該是一臺伺服器,它對tracker和storage的呼叫均為伺服器間的呼叫。
2. 服務部署
描述
1) 檔案下載,利用keepalive和nginx做主主備份,對外只暴露一個ip地址,使用HTTPS安全連線。
2) 檔案上傳,服務端檔案上傳只允許內網訪問,降低安全隱患;基於fastdfs開發,通過Tracker進行負載均衡,直接上傳到負載較低的Storage伺服器上,避免對下載介面頻寬的佔用。(fastdfs會利用空閒時間,把上傳的檔案同步到同組的其他Storage伺服器上)