FastDFS簡介
?FastDFS是一個輕量級的開源分布式文件系統(tǒng)
?FastDFS主要解決了大容量的文件存儲和高并發(fā)訪問的問題拦坠,文件存取時實現(xiàn)了負載均衡
?FastDFS實現(xiàn)了軟件方式的RAID森渐,可以使用廉價的IDE硬盤進行存儲
?支持存儲服務(wù)器在線擴容
?支持相同內(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ù)為文件標識(組名和文件名)浴捆;
?2. tracker返回一臺可用的storage蒜田;
?3. client直接和storage通訊完成文件下載。
相關(guān)術(shù)語
?Tracker Server:跟蹤服務(wù)器选泻,主要做調(diào)度工作物邑,在訪問上起負載均衡的作用。記錄storage server的狀態(tài)滔金,是連接Client和Storageserver的樞紐。
?Storage Server:存儲服務(wù)器茂嗓,文件和meta data都保存到存儲服務(wù)器上
?group:組餐茵,也可稱為卷。同組內(nèi)服務(wù)器上的文件是完全相同的
?文件標識:包括兩部分:組名和文件名(包含路徑)
?meta data:文件相關(guān)屬性述吸,鍵值對(Key Value Pair)方式忿族,如:width=1024,heigth=768
同步機制
?同一組內(nèi)的storageserver之間是對等的,文件上傳蝌矛、刪除等操作可以在任意一臺storage server上進行道批;
?文件同步只在同組內(nèi)的storage server之間進行,采用push方式入撒,即源服務(wù)器同步給目標服務(wù)器隆豹;
?源頭數(shù)據(jù)才需要同步,備份數(shù)據(jù)不需要再次同步茅逮,否則就構(gòu)成環(huán)路了璃赡;
?上述第二條規(guī)則有個例外判哥,就是新增加一臺storage server時,由已有的一臺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可以為空
運行時目錄結(jié)構(gòu)-tracker server
?${base_path}
|__data
|???? |__storage_groups.dat:存儲分組信息
|????|__storage_servers.dat:存儲服務(wù)器列表
|__logs
|__trackerd.log:trackerserver日志文件
運行時目錄結(jié)構(gòu)-storage server
?${base_path}
|__data
|???? |__.data_init_flag:當前storageserver初始化信息
|????|__storage_stat.dat:當前storage server統(tǒng)計信息
|????|__sync:存放數(shù)據(jù)同步相關(guān)文件
|????|???? |__binlog.index:當前的binlog文件索引號
|????|???? |__binlog.###:存放更新操作記錄(日志)
|????|???? |__${ip_addr}_${port}.mark:存放同步的完成情況
|????|
|???? |__一級目錄:256個存放數(shù)據(jù)文件的目錄侯谁,如:00, 1F
|?????????? |__二級目錄:256個存放數(shù)據(jù)文件的目錄
|__logs
|__storaged.log:storageserver日志文件
安裝和運行
?#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 ? ? ? ? ? ? ? ? ? ? ? ? ?NFS ? ? ? ? ? ? ? ? ? ?集中存儲設(shè)備?如NetApp锌仅、NAS
線性擴容性 ? ? ? ? ? ? ? ? ? 高 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?差 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?差
文件高并發(fā)訪問性能 ? 高 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?差 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?一般
文件訪問方式 ? ? ? ? ? ? ? ?專有API ? ? ? ? ? ? ? ? ? ? ? ? ? ?POSIX ? ? ? ? ? ? ? ? ? ? ? ? ??支持POSIX
硬件成本 ? ? ? ? ? ? ? ? ? ? ? ? ?較低 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 中等 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??高
相同內(nèi)容文件只保存一份 ?支持 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不支持 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不支持
歡迎大家一起學習研究相關(guān)技術(shù),源碼來源:minglisoft.cn/technology