天天看點

FastDFS分布式檔案系統 -- 工作原理

FastDFS介紹

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

FastDFS組成及其作用

FastDFS是一個開源的輕量級分布式檔案系統,由跟蹤伺服器(tracker server)、存儲伺服器(storage server)和用戶端(client)三個部分組成,主要解決了海量資料存儲問題,特别适合以中小檔案(建議範圍:4KB < file_size <500MB)為載體的線上服務。

FastDFS分布式檔案系統 -- 工作原理

Tracker server:

  • 作用是負載均衡和排程,通過 Tracker server 在檔案上傳時可以根據一些 政策找到 Storage server

    提供檔案上傳服務。可以将 tracker 稱為追蹤伺服器或排程伺服器。

  • 管理叢集,tracker 也可以實作叢集。每個 tracker 節點地位平等。收集 Storage 叢集的狀态。

Storage server:

  • 作用是檔案存儲,用戶端上傳的檔案最終存儲在 Storage 伺服器上, Storageserver

    沒有實作自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以将 storage 稱為存儲伺服器;

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

工作原理/流程

上傳互動流程:

FastDFS分布式檔案系統 -- 工作原理
  • Tracker會定期詢問storage的狀态,是否還有存儲空間,是否down機,是否還在運作;
  • clinet上傳連接配接請求;
  • Tracker查詢可用的storage;
  • Tracker将可用storage的ip和端口傳回給client;
  • 用戶端将檔案的内容和檔案的屬性(file content, metadata)上傳到storage中;
  • storage根據client上傳的檔案生成file_id;
  • storage将上傳的内容存儲到本地;
  • storage将file_id傳回給client;
  • 用戶端将file_id存儲在本地

file_id:

此檔案 ID 用于以後通路該文 件的索引資訊。檔案索引資訊包括:

組名,虛拟磁盤路徑,資料兩級目錄,檔案名

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

下載下傳互動流程:

  1. client詢問tracker下載下傳檔案的storage,參數為檔案辨別(卷名和檔案名);
  2. tracker傳回一台可用的storage;
  3. client直接和storage通訊完成檔案下載下傳。

FastDFS安裝使用,請參考 FastDFS安裝

在pycharm中,通過用戶端上傳圖檔到FastDFS,并通過nginx來進行通路擷取圖檔的案例 : 案例

繼續閱讀