Java學(xué)習(xí)資料為互聯(lián)網(wǎng)應(yīng)用文件存儲(chǔ)而生之FastDFS

分布式文件系統(tǒng) (Distributed File System) 是一個(gè)用來管理文件的軟件或軟件服務(wù)器,但這個(gè)軟件所管理的文件通常不是在一個(gè)服務(wù)器節(jié)點(diǎn)上,而是在多個(gè)服務(wù)器節(jié)點(diǎn)上,這些服務(wù)器節(jié)點(diǎn)通過網(wǎng)絡(luò)相連構(gòu)成一個(gè)龐大的文件存儲(chǔ)服務(wù)器集群,這些服務(wù)器都用于存儲(chǔ)文件資源,通過分布式文件系統(tǒng)來管理這些服務(wù)器上的文件;
?
常見的分布式文件系統(tǒng)有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等;
?
FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),為互聯(lián)網(wǎng)應(yīng)用量身定做,簡單、靈活、高效,采用C語言開發(fā),由阿里巴巴開發(fā)并開源;
?
FastDFS對文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(文件上傳、文件下載、文件刪除)等,解決了大容量文件存儲(chǔ)的問題,特別適合以文件為載體的在線服務(wù),如相冊網(wǎng)站、文檔網(wǎng)站、圖片網(wǎng)站等等;
?
FastDFS充分考慮了冗余備份、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù);
?
FastDFS發(fā)展歷史
2008年4月項(xiàng)目啟動(dòng),7月發(fā)布第一個(gè)版本V1.00,兩年時(shí)間內(nèi)持續(xù)升級(jí)到V1.29;
2010年8月推出V2.00;
2011年6月推出V3.00;
2012年10月推出V4.0.0;
2013年12月推出V5.0.0;
截止目前最新版是V5.11;(2017年6月發(fā)布)
?
FastDFS系統(tǒng)架構(gòu)從第一個(gè)版本發(fā)布后一直沒有大的調(diào)整,高版本完全兼容低版本的數(shù)據(jù),可以做到平滑升級(jí),推薦更新升級(jí)到最新版本;
FastDFS代碼托管在github上:https://github.com/happyfish100/fastdfs
?
FastDFS整體架構(gòu)
FastDFS文件系統(tǒng)由兩大部分構(gòu)成,一個(gè)是客戶端,一個(gè)是服務(wù)端;
客戶端通常指我們的程序,比如我們的Java程序去連接FastDFS、操作FastDFS,那我們的Java程序就是一個(gè)客戶端;
FastDFS提供專有API訪問,目前提供了 C、Java 和 PHP 幾種編程語言的API,用來訪問FastDFS文件系統(tǒng);
服務(wù)端由兩個(gè)部分構(gòu)成:一個(gè)是跟蹤器(tracker),一個(gè)是存儲(chǔ)節(jié)點(diǎn)(storage);
跟蹤器(tracker)主要做調(diào)度工作,在內(nèi)存中記錄集群中存儲(chǔ)節(jié)點(diǎn)storage的狀態(tài)信息,是前端Client和后端存儲(chǔ)節(jié)點(diǎn)storage的樞紐;
因?yàn)橄嚓P(guān)信息全部在內(nèi)存中,Tracker server的性能非常高,一個(gè)較大的集群(比如上百個(gè)group)中有3臺(tái)就足夠了;
存儲(chǔ)節(jié)點(diǎn)(storage)用于存儲(chǔ)文件,包括文件和文件屬性(meta data)都保存到存儲(chǔ)服務(wù)器磁盤上,完成文件管理的所有功能:文件存儲(chǔ)、文件同步和提供文件訪問等;