FastDFS概述及原理


FastDFS概述

FastDFS是一個以C語言開發的開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以中小文件(建議范圍:4KB < file_size <500MB),如相冊網站、視頻網站等等。

FastDFS為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。

FastDFS開源地址:https://github.com/happyfish100

FastDFS原理

FastDFS由跟蹤服務器(Tracker Server)、存儲服務器(Storage Server)和客戶端(Client)構成。

  • Tracker server 追蹤服務器

    主要作用是負載均衡和資源調度。

    追蹤服務器負責接收客戶端的請求,選擇合適的組合storage server ,tracker server 與 storage server之間也會用心跳機制來檢測對方是否活着。

    Tracker需要管理的信息也都放在內存中,並且里面所有的Tracker都是對等的(每個節點地位相等),很容易擴展。

    客戶端訪問集群的時候會隨機分配一個Tracker來和客戶端交互。

  • Storage server 儲存服務器

    實際存儲數據,分成若干個組(group),實際traker就是管理的storage中的組,而組內機器中則存儲數據,group可以隔離不同應用的數據,不同的應用的數據放在不同group里面。

  • 優點:海量的存儲:主從型分布式存儲,存儲空間方便拓展,且集群的實現也使系統不存在單點故障問題,用戶不會因為服務器宕機而無法訪問文件資源。fastDFS對文件內容做hash處理,避免出現重復文件,然后fastDFS結合Nginx集成, 提供網站效率。

  • 客戶端Client

    主要是上傳下載數據的服務器,也就是我們自己的項目所部署在的服務器。每個客戶端服務器都需要安裝Nginx。

fastDFS三方交互圖

FastDFS工作流程

文件上傳:Client會先向Tracker詢問存儲地址,Tracker查詢到存儲地址后返回給Client,Client拿着地址直接和對應的Storage通訊,將文件上傳至改Storage。

storage會將他所掛載的所有數據存儲目錄的底下都創建2級子目錄,每一級256個總共65536個,新寫的文件會以hash的方式被路由到其中某個子目錄下,然后將文件數據作為本地文件存儲到該目錄中。

文件下載:當客戶端向Tracker發起下載請求時,並不會直接下載,而是先查詢storage server(檢測同步狀態),返回storage server的ip和端口,然后客戶端會帶着文件信息(組名,路徑,文件名),去訪問相關的storage,然后下載文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM