FastDFS是一個開源的輕量級Distributed File System,她對檔案進行管理,功能包括:檔案儲存體、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大型存放區和負載平衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視頻網站等等。
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的調用均為伺服器間的調用。
google code地址:http://code.google.com/p/fastdfs/
google code:http://code.google.com/p/fastdfs/downloads/list