FastDFS是一個開源的分布式檔案系統,她對檔案進行管理,功能包括:檔案存儲、檔案同步、檔案通路(檔案上傳、檔案下載下傳)等,解決了大容量存儲和負載均衡的問題。特别适合以檔案為載體的線上服務,如相冊網站、視訊網站等等。 FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做排程工作,在通路上起負載均衡的作用。 存儲節點存儲檔案,完成檔案管理的所有功能:存儲、同步和提供存取接口,FastDFS同時對檔案的meta data進行管理。所謂檔案的meta data就是檔案的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的key為width,value為1024。檔案meta data是檔案屬性清單,可以包含多個鍵值對。 FastDFS系統結構如下圖所示:

跟蹤器和存儲節點都可以由一台多台伺服器構成。跟蹤器和存儲節點中的伺服器均可以随時增加或下線而不會影響線上服務。其中跟蹤器中的所有伺服器都是對等的,可以根據伺服器的壓力情況随時增加或減少。 為了支援大容量,存儲節點(伺服器)采用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的檔案是互相獨立的,所有卷 的檔案容量累加就是整個存儲系統中的檔案容量。一個卷可以由一台或多台存儲伺服器組成,一個卷下的存儲伺服器中的檔案都是相同的,卷中的多台存儲伺服器起 到了備援備份和負載均衡的作用。 在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動将新增伺服器切換到線上提供服務。 當存儲空間不足或即将耗盡時,可以動态添加卷。隻需要增加一台或多台伺服器,并将它們配置為一個新的卷,這樣就擴大了存儲系統的容量。 FastDFS中的檔案辨別分為兩個部分:卷名和檔案名,二者缺一不可。
FastDFS file upload 上傳檔案互動過程: 1. client詢問tracker上傳到的storage,不需要附加參數; 2. tracker傳回一台可用的storage; 3. client直接和storage通訊完成檔案上傳。
FastDFS file download 下載下傳檔案互動過程: 1. client詢問tracker下載下傳檔案的storage,參數為檔案辨別(卷名和檔案名); 2. tracker傳回一台可用的storage; 3. client直接和storage通訊完成檔案下載下傳。 需要說明的是,client為使用FastDFS服務的調用方,client也應該是一台伺服器,它對tracker和storage的調用均為伺服器間的調用。