1. 程式人生 > >Java學習資料為網際網路應用檔案儲存而生之FastDFS

Java學習資料為網際網路應用檔案儲存而生之FastDFS

分散式檔案系統 (Distributed File System) 是一個用來管理檔案的軟體或軟體伺服器,但這個軟體所管理的檔案通常不是在一個伺服器節點上,而是在多個伺服器節點上,這些伺服器節點通過網路相連構成一個龐大的檔案儲存伺服器叢集,這些伺服器都用於儲存檔案資源,通過分散式檔案系統來管理這些伺服器上的檔案;

 

常見的分散式檔案系統有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等;

 

FastDFS是一個開源的輕量級分散式檔案系統,為網際網路應用量身定做,簡單、靈活、高效,採用C語言開發,由阿里巴巴開發並開源;

 

FastDFS對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載、檔案刪除)等,解決了大容量檔案儲存的問題,特別適合以檔案為載體的線上服務,如相簿網站、文件網站、圖片網站等等;

 

FastDFS充分考慮了冗餘備份、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務;

 

FastDFS發展歷史

2008年4月專案啟動,7月釋出第一個版本V1.00,兩年時間內持續升級到V1.29;

2010年8月推出V2.00;

2011年6月推出V3.00;

2012年10月推出V4.0.0;

2013年12月推出V5.0.0;

截止目前最新版是V5.11;(2017年6月釋出)

 

FastDFS系統架構從第一個版本釋出後一直沒有大的調整,高版本完全相容低版本的資料,可以做到平滑升級,推薦更新升級到最新版本;

FastDFS程式碼託管在github上:https://github.com/happyfish100/fastdfs

 

FastDFS整體架構

FastDFS檔案系統由兩大部分構成,一個是客戶端,一個是服務端;

客戶端通常指我們的程式,比如我們的Java程式去連線FastDFS、操作FastDFS,那我們的Java程式就是一個客戶端;

FastDFS提供專有API訪問,目前提供了 C、Java 和 PHP 幾種程式語言的API,用來訪問FastDFS檔案系統;

服務端由兩個部分構成:一個是跟蹤器(tracker),一個是儲存節點(storage);

跟蹤器(tracker)主要做排程工作,在記憶體中記錄叢集中儲存節點storage的狀態資訊,是前端Client和後端儲存節點storage的樞紐;

因為相關資訊全部在記憶體中,Tracker server的效能非常高,一個較大的叢集(比如上百個group)中有3臺就足夠了;

儲存節點(storage)用於儲存檔案,包括檔案和檔案屬性(meta data)都儲存到儲存伺服器磁碟上,完成檔案管理的所有功能:檔案儲存、檔案同步和提供檔案訪問等;