摘要: FastDFS簡介 ?FastDFS是一個(gè)輕量級的開源分布式文件系統(tǒng)
?FastDFS主要解決了大容量的文件存儲和高并發(fā)訪問的問題驰后,文件存取時(shí)實(shí)現(xiàn)了負(fù)載均衡
?FastDFS實(shí)現(xiàn)了軟件方式的RAID,可以使用廉價(jià)的IDE硬盤進(jìn)行存儲 ?支持存儲服務(wù)器在線擴(kuò)容
?支持相同內(nèi)容的文件只保存一份横堡,節(jié)約磁盤空間 ?FastDFS只能通過ClientAPI訪問陶夜,不支持POSIX訪問方式
?FastDFS特別適合大中型網(wǎng)站使用,用來存儲資源文件(如:圖片、文檔战惊、音頻、視頻等等)
FastDFS簡介
?FastDFS是一個(gè)輕量級的開源分布式文件系統(tǒng)
?FastDFS主要解決了大容量的文件存儲和高并發(fā)訪問的問題扎即,文件存取時(shí)實(shí)現(xiàn)了負(fù)載均衡
?FastDFS實(shí)現(xiàn)了軟件方式的RAID吞获,可以使用廉價(jià)的IDE硬盤進(jìn)行存儲
?支持存儲服務(wù)器在線擴(kuò)容
?支持相同內(nèi)容的文件只保存一份况凉,節(jié)約磁盤空間
?FastDFS只能通過ClientAPI訪問,不支持POSIX訪問方式
?FastDFS特別適合大中型網(wǎng)站使用各拷,用來存儲資源文件(如:圖片刁绒、文檔、音頻烤黍、視頻等等)
系統(tǒng)架構(gòu)-架構(gòu)圖
系統(tǒng)架構(gòu)-上傳文件流程圖
??1. client詢問tracker上傳到的storage知市,不需要附加參數(shù);
??2. tracker返回一臺可用的storage蚊荣;
??3. client直接和storage通訊完成文件上傳初狰。
系統(tǒng)架構(gòu)-下載文件流程圖
??1. client詢問tracker下載文件的storage,參數(shù)為文件標(biāo)識(組名和文件名)互例;
??2. tracker返回一臺可用的storage奢入;
??3. client直接和storage通訊完成文件下載。
相關(guān)術(shù)語
??Tracker Server:跟蹤服務(wù)器媳叨,主要做調(diào)度工作腥光,在訪問上起負(fù)載均衡的作用。記錄storage server的狀態(tài)糊秆,是連接Client和Storageserver的樞紐武福。
??Storage Server:存儲服務(wù)器,文件和meta data都保存到存儲服務(wù)器上
??group:組痘番,也可稱為卷捉片。同組內(nèi)服務(wù)器上的文件是完全相同的
??文件標(biāo)識:包括兩部分:組名和文件名(包含路徑)
??meta data:文件相關(guān)屬性,鍵值對(Key Value Pair)方式汞舱,如:width=1024,heigth=768
同步機(jī)制
?同一組內(nèi)的storageserver之間是對等的伍纫,文件上傳、刪除等操作可以在任意一臺storage server上進(jìn)行昂芜;
?文件同步只在同組內(nèi)的storage server之間進(jìn)行莹规,采用push方式,即源服務(wù)器同步給目標(biāo)服務(wù)器泌神;
?源頭數(shù)據(jù)才需要同步良漱,備份數(shù)據(jù)不需要再次同步,否則就構(gòu)成環(huán)路了欢际;
?上述第二條規(guī)則有個(gè)例外母市,就是新增加一臺storage server時(shí),由已有的一臺storageserver將已有的所有數(shù)據(jù)(包括源頭數(shù)據(jù)和備份數(shù)據(jù))同步給該新增服務(wù)器损趋。
通信協(xié)議
??協(xié)議包由兩部分組成:header和body
??header共10字節(jié)窒篱,格式如下:
–?8 bytes body length
–?1 byte command
–?1 byte status
??body數(shù)據(jù)包格式由取決于具體的命令,body可以為空
運(yùn)行時(shí)目錄結(jié)構(gòu)-tracker server
???${base_path}
|__data
|???? |__storage_groups.dat:存儲分組信息
|????|__storage_servers.dat:存儲服務(wù)器列表
|__logs
|__trackerd.log:trackerserver日志文件
運(yùn)行時(shí)目錄結(jié)構(gòu)-storage server
???${base_path}
|__data
|???? |__.data_init_flag:當(dāng)前storageserver初始化信息
|????|__storage_stat.dat:當(dāng)前storage server統(tǒng)計(jì)信息
|????|__sync:存放數(shù)據(jù)同步相關(guān)文件
|????|???? |__binlog.index:當(dāng)前的binlog文件索引號
|????|???? |__binlog.###:存放更新操作記錄(日志)
|????|???? |__${ip_addr}_${port}.mark:存放同步的完成情況
|????|
|???? |__一級目錄:256個(gè)存放數(shù)據(jù)文件的目錄,如:00, 1F
|?????????? |__二級目錄:256個(gè)存放數(shù)據(jù)文件的目錄
|__logs
|__storaged.log:storageserver日志文件
安裝和運(yùn)行
?#step 1. download FastDFS source package and unpack it,
?# if you use HTTP to download file, please downloadlibevent 1.4.x and install it
?tar xzf FastDFS_v1.x.tar.gz
?#for example:
?tar xzf FastDFS_v1.20.tar.gz
?
?#step 2. enter the FastDFS dir
?cd FastDFS
?
?#step 3. if HTTP supported, modify make.sh, uncommentthe line:
?# WITH_HTTPD=1, then execute:
?./make.sh
?
?#step 4. make install
?./make.sh install
?
?#step 5. edit/modify the config file of tracker andstorage
?
?#step 6. run server programs
?#start the tracker server:
?/usr/local/bin/fdfs_trackerd
?
?#start the storage server:
?/usr/local/bin/fdfs_storaged
FastDFS和集中存儲方式對比
? FastDFS中文:http://www.csource.org/
??FastDFS英文:http://code.google.com/p/fastdfs/
官網(wǎng)資料墙杯,分享給大家學(xué)習(xí)
愿意了解框架技術(shù)或者源碼的朋友直接加求求(企鵝):2042849237
更多詳細(xì)源碼參考來源:http://minglisoft.cn/technology