FastDFS
簡介
- FastDFS是一個開源的分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。
應用場景
- 適合以文件爲載體的在線服務,如相冊網站、視頻網站等
FastDFS角色
- 跟蹤器和存儲節點
- 跟蹤器主要做調度工作,在訪問上起負載均衡的作用
- 存儲節點存儲工作,完成文件管理的所有功能
FastDFS架構
- 跟蹤器和存儲節點都可以由一臺或多臺服務器構成。跟蹤器和存儲節點中的服務器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或減少。
- 爲了支持大容量,存儲節點(服務器)採用了分卷或分組的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷 的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起 到了冗餘備份和負載均衡的作用。
- 在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務
- 當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的捲毛這樣就擴大了存儲系統的容量。
FastDFS文件標識
- FastDFS中的文件標識爲兩個部分:卷名和文件名
上傳
下載
FastDFS使用要點
FastDFS下載恢復原始文件名
-
應用系統在上傳文件到FastDFS成功時將原始文件名和文件索引(FID)保存下來,如保存到數據庫
-
用戶點擊下載時用Nginx的域名和FID拼出url,然後在url後增加一個參數,指定原始文件名。例如:
http://121.14.161.48:9030/group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk?attname=filename.apk
-
在Nginx上進心如下配置,這樣Nginx就會截獲url中的參數attname,在Http響應頭裏面加上字段 Content-Disposition “attachment;filename=$arg_attname”
-
瀏覽器發現響應頭裏面有Content-Disposition “attachment;filename=$arg_attname”時,就會把文件名顯示成filename指定的名稱。
FastDFS從文件的使用技巧
- 使用FastDFS存儲一個圖片的多個分辨率的備份時,希望只記錄源圖的FID,並能將其他分辨率的圖片與源圖管理。可以使用從文件方法
- 主從文件是指文件ID有關聯的文件,一個主文件可以對應多個從文件
- 主文件ID = 主文件名 + 主文件擴展名
- 從文件ID = 主文件名 + 從文件後綴名 + 從文件擴展名