FastDFS的介绍
生活随笔
收集整理的這篇文章主要介紹了
FastDFS的介绍
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
FastDFS的介紹
FastDFS
FastDFS是由國人余慶所開發(fā),其項(xiàng)目地址: https://github.com/happyfish100FastDFS是一個(gè)輕量級(jí)的開源分布式文件系統(tǒng),主要解決了大容量的文件存儲(chǔ)和高并發(fā)訪問的問題,文件存取時(shí)實(shí)現(xiàn)了負(fù)載均衡。FastDFS是一款類Google FS的開源分布式文件系統(tǒng),它用純C語言實(shí)現(xiàn),支持Linux、FreeBSD、AIX等UNIX系統(tǒng)。FastDFS只能通過專有API對(duì)文件進(jìn)行存取訪問,不支持POSIX接口方式,不能mount使用。準(zhǔn)確地講,Google FS以及FastDFS、mogileFS、 HDFS、TFS等類Google FS都不是系統(tǒng)級(jí)的分布式文件系統(tǒng),而是應(yīng)用級(jí)的分布式文件存儲(chǔ)服務(wù)。FastDFS的特性
1》分組存儲(chǔ),靈活簡潔、對(duì)等結(jié)構(gòu),不存在單點(diǎn)2》文件ID由FastDFS生成,作為文件訪問憑證,FastDFS不需要傳統(tǒng)的name server3》和流行的web server無縫銜接,FastDFS已提供apache和nginx擴(kuò)展模塊4》大、中、小文件均可以很好支持,支持海量小文件存儲(chǔ)5》 支持多塊磁盤,支持單盤數(shù)據(jù)恢復(fù)6》 支持相同文件內(nèi)容只保存一份,節(jié)省存儲(chǔ)空間7》 存儲(chǔ)服務(wù)器上可以保存文件附加屬性8》 下載文件支持多線程方式,支持?jǐn)帱c(diǎn)續(xù)傳FastDFS架構(gòu)圖
FastDFS架構(gòu)解讀只有兩個(gè)角色,tracker server和storage server,不需要存儲(chǔ)文件索引信息所有服務(wù)器都是對(duì)等的,不存在Master-Slave關(guān)系存儲(chǔ)服務(wù)器采用分組方式,同組內(nèi)存儲(chǔ)服務(wù)器上的文件完全相同(RAID 1)不同組的storage server之間不會(huì)相互通信由storage server主動(dòng)向tracker server報(bào)告狀態(tài)信息,tracker server之間通常不會(huì)相互通信系統(tǒng)架構(gòu)-上傳文件流程圖
1》client詢問tracker上傳到的storage;2》tracker返回一臺(tái)可用的storage;3》client直接和storage通信完成文件上傳,storage返回文件ID。系統(tǒng)架構(gòu)-下載文件流程圖
1》client詢問tracker下載文件的storage,參數(shù)為文件ID(組名和文件名);2》tracker返回一臺(tái)可用的storage;3》client直接和storage通信完成文件下載。Fast同步機(jī)制
采用binlog文件記錄更新操作,根據(jù)binlog進(jìn)行文件同步同一組內(nèi)的storage server之間是對(duì)等的,文件上傳、刪除等操作可以在任意一臺(tái)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è)例外,就是新增加一臺(tái)storage server時(shí),由已有的一臺(tái)storage server將已有的所有數(shù)據(jù)(包括源頭數(shù)據(jù)和備份數(shù)據(jù))同步給該新增服務(wù)器。FastDFS用戶請(qǐng)求過程
FastDFS核心組件
Tracker:調(diào)度器,負(fù)責(zé)維持集群的信息,例如各group及其內(nèi)部的storage node,這些信息也是storage node報(bào)告所生成,每個(gè)storagenode會(huì)周期性向tracker發(fā)心跳信息;storage server:以group為單位進(jìn)行組織,任何一個(gè)storage server都應(yīng)該屬于某個(gè)group,一個(gè)group應(yīng)該包含多個(gè)storage server,在同一個(gè)group內(nèi)部,各storage server的數(shù)據(jù)互相冗余;FastDFS運(yùn)行機(jī)制
如何在組中挑選storage server:1》rr;2》以ip為次序,找第一個(gè),即IP地址較小者;3》以優(yōu)先級(jí)為序,找第一個(gè);如何選擇磁盤(存儲(chǔ)路徑):1》rr;2》剩余可用空間大者優(yōu)先;生成FID:由源頭storage server ip、創(chuàng)建時(shí)的時(shí)間戳、大小、文件的校驗(yàn)碼和一個(gè)隨機(jī)數(shù)進(jìn)行hash計(jì)算后生成;最后基于base64進(jìn)行文本編碼,轉(zhuǎn)換為可打印字符;groupID/MID/H1ID/H2ID/file_namegroupID:組編號(hào)MID:存儲(chǔ)路徑(存儲(chǔ)設(shè)備)編號(hào)H1ID/H2ID:目錄分層file_name:文件名,不同于用戶上傳時(shí)使用文件名,而是由服務(wù)器生成hash文件名;服務(wù)器IP、文件創(chuàng)建時(shí)的時(shí)間戳、文件大小、文件名和擴(kuò)展名;文件同步:每個(gè)storage server在文件存儲(chǔ)完成后,會(huì)將其信息存于binlog, binlog不包含數(shù)據(jù),僅包含文件名等元數(shù)據(jù)信息,binlog可用于同步;FastDFS配置修改
Tracker:編輯tracker server配置文件tracker.conf,需要修改內(nèi)容如下:disabled=false(默認(rèn)為false,表示是否無效)port=22122(默認(rèn)為22122)base_path=/data/fastdfs/trackerstorage server:disabled=false(默認(rèn)為false,表示是否無效)port=23000(默認(rèn)為23000)base_path=/data/fastdfs/storagetracker_server=172.18.10.232:22122store_path0=/data/fastdfs/storagehttp.server_port=8888(默認(rèn)為8888,nginx中配置的監(jiān)聽端口那之一致)FastDFS常用命令
1》查看存儲(chǔ)節(jié)點(diǎn)狀態(tài)# fdfs_monitor /etc/fdfs/client.conf2》上傳測(cè)試fdfs_test <config_file> upload <local_filename>3》文件上傳fdfs_upload_file /etc/fdfs/client.conf /root/solo-2.2.0.war4》文件查看fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/rBH7vFoax3KANb_FAUlr7-L-yRM9.0.war5》文件下載fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBH7vFoax3KANb_FAUlr7-L-yRM9.0.warFastDFS實(shí)現(xiàn)nginx代理
1》安裝nginx以及對(duì)應(yīng)模塊2》修改nginx的location配置,映射路徑和啟動(dòng)模塊location /group1/M00 {root /data/fdfs/store/data;ngx_fastdfs_module;}3》修改對(duì)應(yīng)fastdfs模塊url_have_group_name = truetracker_server=172.17.252.234:22122總結(jié)
以上是生活随笔為你收集整理的FastDFS的介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php图片中不显示文字内容,水印效果 只
- 下一篇: python 双向循环链表实现_pyth