1.緒論
最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的過程中遇到過很多的問題,為了能幫忙到以后搭建FastDFS的同學,少走彎路,與大家分享一下。FastDFS的作者淘寶資深架構余慶,這個優秀的輕量及的分布式文件系統的開源沒多久,立馬就火了。由於篇幅較大,本博文共四篇,第一篇主要介紹FastDFS,下載相關軟件包,為搭建做好准備。第二篇會講到在CentOS下搭建FastDFS的詳細過程。第三篇,會講到整合nginx詳細內容。第四篇主要講FastDFS在怎么用fastdfs-client-java連接,並結合實例。
2.應用場景
FastDFS是為互聯網應用量身定做的一套分布式文件存儲系統,非常適合用來存儲用戶圖片、視頻、文檔等文件。對於互聯網應用,和其他分布式文件系統相比,優勢非常明顯。其中有好幾家是做網盤的公司。其中存儲量最大的一家,集群中存儲group數有400個,存儲服務器超過800台,存儲容量達到6PB,文件數超過1億,Group持續增長中。
以下是使用FastDFS的用戶列表:
UC (http://www.uc.cn/,存儲容量超過10TB)
支付寶(http://www.alipay.com/)
京東商城(http://www.360buy.com/)
淘淘搜(http://www.taotaosou.com/)
飛信(http://feixin.1008.cn/)
趕集網(http://www.ganji.com/)
淘米網(http://www.61.com/)
迅雷(http://www.xunlei.com/)
螞蜂窩(http://www.mafengwo.cn/)
丫丫網(http://www.iyaya.com/)
虹網(http://3g.ahong.com)
5173(http://www.5173.com/)
華夏原創網(http://www.yuanchuang.com/)
華師京城教育雲平台(http://www.hsjdy.com.cn/)
視友網(http://www.cuctv.com/)
搜道網(http://www.sodao.com/)
58同城(http://www.58.com/)
商務聯盟網(http://www.biz72.com/)
中青網(http://www.youth.cn/)
繽麗網 (http://www.binliy.com/)
飛視雲視頻(http://www.freeovp.com/)
夢芭莎(http://www.moonbasa.com/)
活動幫(http://www.eventsboom.com)
51CTO(http://www.51cto.com/)
搜房網(http://www.soufun.com/)
3.詳細介紹
FastDFS是一個開源的分布式文件系統,她對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。
FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。
存儲節點存儲文件,完成文件管理的所有功能:存儲、同步和提供存取接口,FastDFS同時對文件的meta data進行管理。所謂文件的meta data就是文件的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的key為width,value為1024。文件meta data是文件屬性列表,可以包含多個鍵值對。
FastDFS系統結構如下圖所示:
跟蹤器和存儲節點都可以由一台多台服務器構成。跟蹤器和存儲節點中的服務器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或減少。
為了支持大容量,存儲節點(服務器)采用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷 的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一台或多台存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多台存儲服務器起 到了冗余備份和負載均衡的作用。
在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成后,系統自動將新增服務器切換到線上提供服務。
當存儲空間不足或即將耗盡時,可以動態添加卷。只需要增加一台或多台服務器,並將它們配置為一個新的卷,這樣就擴大了存儲系統的容量。
FastDFS中的文件標識分為兩個部分:卷名和文件名,者缺一不可。
3.1 上傳文件交互過程:
- client詢問tracker上傳到的storage,不需要附加參數;
- tracker返回一台可用的storage;
- client直接和storage通訊完成文件上傳
3.2 下載文件交互過程:
- client詢問tracker下載文件的storage,參數為文件標識(卷名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通訊完成文件下載。
4.FastDFS搭建工具下載
作者的GitHub地址:https://github.com/happyfish100
這次搭建的所有工具,都可以在上面下載到。我搭建的是目前最新版本Version 5.11 2017-05-26。作者還有一個5.10的發行版本,你如果沒有下載最近的,到時候整合nginx的時候可能會遇到:
local/fastdfs-nginx-module/src/common.c:1245: 錯誤:‘FDFSHTTPParams’沒有名為‘support_multi_range’的成員 make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 錯誤 1 make[1]: Leaving directory `/usr/local/nginx-1.10.1'
遇到這個錯誤的原因是,在fastdfs-nginx-module的HISTORY中你可以到:
整合的時候,fastdfs-nginx-module中的support_multi_range在Version 5.10中找不到。
Version 5.11對應的fastdfs-nginx-module的Version 1.20
Version 5.10對應的fastdfs-nginx-module的Version 1.19
之所以在安裝前寫了這么一段話,是因為這個很重要,版本不對應會給接下來的安裝帶來各種問題。
把源碼下載下來3個zip包,再去下個nginx: