1. 程式人生 > 實用技巧 >FastDFS分散式檔案系統

FastDFS分散式檔案系統

FastDFS

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

為什麼要用FastDFS?

1.解決海量儲存,同時儲存容量拓展方便。
2.解決檔案內容重複,如果使用者上傳的檔案重複(檔案指紋一樣 md5_files sha1_fiels),那麼系統只有儲存一份資料,這項技術目前被廣泛應用在網盤和即時通訊中。
3.結合Nginx提高網站讀取圖片的效率。

FastDFS的原理

FastDFS 架構包括 Tracker server

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

  • Tracker server作用是負載均衡和儲存排程,通過Traker server在檔案上傳時可以根據一些策略演算法找到Storage server提供檔案上傳服務。可以將tracker成為追蹤伺服器或排程伺服器
  • Storage server 作用是檔案儲存,客戶端上傳的檔案最終儲存在Storage伺服器上,Storage Server利用作業系統的檔案系統來管理檔案,可以將storage成為儲存伺服器。
  • 圖解:
1.儲存伺服器執行以後,持續不斷的傳送自身狀態給指定的排程伺服器。排程伺服器就會一直清楚當前整個系統下有多少臺儲存伺服器,每臺儲存伺服器的具體情況
2.客戶端需要上傳檔案,就需要向指定的排程伺服器來獲取空間的儲存伺服器,排程伺服器會通過計算得到空間的儲存伺服器,把儲存伺服器的ip地址和埠返回客戶端,所以客戶端上傳檔案的時候,就自動上傳到對應的儲存伺服器。
3.客戶端上傳檔案完成了以後,由儲存伺服器會自動儲存檔案並返回訪問檔案的地址,所以客戶端把檔案的訪問地址儲存到資料庫中,將來就可以不斷的訪問到上傳的檔案了。

服務端由兩部分組成:

  • Tracker:管理叢集,tracker也可以實現叢集。每個tracker節點地位平等。收集Storage叢集的狀態
  • Storage:實際儲存檔案,Storage分為多個組,每個組之間儲存的檔案是不同的。每個組內部可以有多個成員,組成員內部儲存的內容是一樣的,組成員的地位是一致的,沒有主從的概念。

檔案上傳流程


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

  • 組名:檔案上傳後所在的 storage 組名稱,在檔案上傳成功後有 storage 伺服器返回, 需要客戶端自行儲存。
  • 虛擬磁碟路徑:storage 配置的虛擬路徑,與磁碟選項 store_path*對應。如果配置了 store_path0 則是 M00,如果配置了 store_path1 則是 M01,以此類推。
  • 資料兩級目錄:storage 伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料 檔案。
  • 檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含:源儲存 伺服器 IP 地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊。