1. 程式人生 > >FastDFS分散式檔案系統 -- 工作原理

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

FastDFS介紹

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

FastDFS組成及其作用

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

Tracker server:

  • 作用是負載均衡和排程,通過 Tracker server 在檔案上傳時可以根據一些 策略找到 Storage server
    提供檔案上傳服務。可以將 tracker 稱為追蹤伺服器或排程伺服器。
  • 管理叢集,tracker 也可以實現叢集。每個 tracker 節點地位平等。收集 Storage 叢集的狀態。

Storage server:

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

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

工作原理/流程

上傳互動流程
在這裡插入圖片描述

  • 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 用於以後訪問該文 件的索引資訊。檔案索引資訊包括:
組名,虛擬磁碟路徑,資料兩級目錄,檔名
在這裡插入圖片描述

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

  • 虛擬磁碟路徑:storage 配置的虛擬路徑,與磁碟選項 store_path*對應。如果配置了 store_path0 則是 M00,如果配置了 store_path1 則是 M01,以此類推。

  • 資料兩級目錄:storage 伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料 檔案。
    在這裡插入圖片描述

  • 檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含: 源儲存 伺服器 IP地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊。

下載互動流程

  1. client詢問tracker下載檔案的storage,引數為檔案標識(卷名和檔名);
  2. tracker返回一臺可用的storage;
  3. client直接和storage通訊完成檔案下載。

在pycharm中,通過客戶端上傳圖片到FastDFS,並通過nginx來進行訪問獲取圖片的demo :

https://blog.csdn.net/gymaisyl/article/details/84555620