1. 程式人生 > >FastDFS和nginx實現檔案上傳詳解

FastDFS和nginx實現檔案上傳詳解

1.什麼是FastDFS

FastDFS 是用 c 語言編寫的一款開源的分散式檔案系統FastDFS 為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

FastDFS 架構包括 Tracker server 和 Storage server。客戶端請求 Tracker server 進行檔案上傳、下載,通過 Tracker server 排程最終由 Storage server 完成檔案上傳和下載。

Tracker server 作用是負載均衡和排程,通過 Tracker server 在檔案上傳時可以根據一些策略找到 Storage server 提供檔案上傳服務。可以將 tracker 稱為追蹤伺服器或排程伺服器。

Storage server 作用是檔案儲存,客戶端上傳的檔案最終儲存在 Storage 伺服器上,Storageserver 沒有實現自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以將storage稱為儲存伺服器。

 

服務端兩個角色:

Tracker:管理叢集,tracker 也可以實現叢集。每個 tracker 節點地位平等。收集 Storage 叢集的狀態。

Storage:實際儲存檔案   Storage 分為多個組,每個組之間儲存的檔案是不同的。每個組內部可以有多個成員,組成員內部儲存的內容是一樣的,組成員的地位是一致的,沒有主從的概念。

 

2.檔案上傳流程

 

 

客戶端上傳檔案後儲存伺服器將檔案 ID 返回給客戶端,此檔案 ID 用於以後訪問該檔案的索引資訊。檔案索引資訊包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。

n 組名:檔案上傳後所在的 storage 組名稱,在檔案上傳成功後有 storage 伺服器返回,需要客戶端自行儲存。

n 虛擬磁碟路徑:storage 配置的虛擬路徑,與磁碟選項 store_path*對應。如果配置了

store_path0 則是 M00,如果配置了 store_path1 則是 M01,以此類推。

n 資料兩級目錄:storage 伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料

檔案。

n 檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含:源儲存

伺服器 IP 地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊。

 3.檔案下載流程

 4.為什麼要與nginx結合使用

因為FastDFS預設自帶的http伺服器效能不好,所以一般建議用外接的apache或者nginx來解決http下載,以應付大併發的情況

注意nginx擴充套件模組只支援GET和HEAD模式獲取檔案,需要開發那邊配合修改程式

簡單來說就是nginx替代FastDFS的內建Web server

5.什麼是nginx

Nginx (engine x) 是一個高效能的HTTP反向代理服務,也是一個IMAP/POP3/SMTP服務

能夠支援高達 50,000 個併發連線數的響應

其實nginx在平時就是放一些靜態資源的伺服器

5.nginx的優點

1.可以高併發連線

官方測試Nginx能夠支撐5萬併發連線,實際生產環境中可以支撐2~4萬併發連線數。

2.記憶體消耗少

Nginx+PHP(FastCGI)伺服器,在3萬併發連線下,開啟10個Nginx程序消耗150MB記憶體

3.支援熱部署

  Nginx支援熱部署,它的自動特別容易,並且,幾乎可以7天*24小時不間斷的執行

6.nginx自身可以做到負載均衡