FastDFS 介紹
- 用
c語言
編寫的一款開源的輕量級分布式文件系統。 - 功能包括:文件存儲、文件訪問(文件上傳、文件下載)、文件同步等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。
- 為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標。
- 可以幫助我們搭建一套高性能的文件服務器集群,並提供文件上傳、下載等服務。
- FastDFS 架構 包括
Client
、Tracker server
和Storage server
。Client
請求Tracker
進行文件上傳、下載,Tracker
再調度Storage
完成文件上傳和下載。
- Client: 客戶端,業務請求的發起方,通過專有接口,使用 TCP/IP 協議與
Tracker
或Storage
進行數據交互。FastDFS 提供了upload
、download
、delete
等接口供客戶端使用。 - Tracker server:跟蹤服務器,主要做調度工作,起負載均衡的作用。在內存中記錄集群中所有存儲組和存儲服務器的狀態信息,是客戶端和數據服務器交互的樞紐。
- Storage server:存儲服務器(存儲節點或數據服務器),文件和文件屬性都保存到存儲服務器上。Storage server 直接利用 OS 的文件系統調用管理文件。
- Storage 群中的橫向可以擴容,縱向可以備份。
FastDFS 上傳和下載流程
FastDFS 文件索引
FastDFS 上傳和下載流程 可以看出都涉及到一個數據叫文件索引( file_id )。
- 文件索引( file_id )是客戶端上傳文件后Storage返回給客戶端的一個字符串,是以后訪問該文件的索引信息
文件索引( file_id )信息包括:組名、虛擬磁盤路徑、數據兩級目錄、文件名等信息。
- 組名:文件上傳后所在的 Storage 組名稱。
- 虛擬磁盤路徑:Storage 配置的虛擬路徑,與磁盤選項
store_path*
對應。如果配置了store_path0
則是M00
,如果配置了store_path1
則是M01
,以此類推。 - 數據兩級目錄:Storage 服務器在每個虛擬磁盤路徑下創建的兩級目錄,用於存儲數據文件。
- 文件名:由存儲服務器根據特定信息生成,文件名包含:源存儲服務器IP地址、文件創建時間戳、文件大小、隨機數和文件拓展名等信息。