版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/m0_37797991/article/details/73381648
連結:
第二篇:FastDFS搭建
第三篇:FastDFS整合nginx
第四篇:整合Java Spring MVC上傳
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
之是以在安裝前寫了這麼一段話,是因為這個很重要,版本不對應會給接下來的安裝帶來各種問題。
4.1 下載下傳工具:
把源碼下載下傳下來4個zip包,再去下個nginx:
4.2 上傳到CentOS
上傳檔案到liunx系統的方法很多。我個人比較喜歡用vsftp上傳。
感興趣的同學可以參考我一另一篇博文:
CentOS7 搭建vsftpd詳細教程
在windows上直接輸入ftp位址,把剛剛下載下傳好的檔案拖到ftp上即可。
在CentOS上檢視:
[[email protected] ~]#ll /usr/yong.cao/ftp/
total 19320
drwxr-xr-x 10 root root 258 Jun 14 01:26 fastdfs-5.11
-rw-r--r-- 1 root root 421773 Jun 17 09:34 fastdfs-5.11.zip
-rw-r--r-- 1 root root 75491 Jun 17 09:34 fastdfs-client-java-master.zip
-rw-r--r-- 1 root root 22192 Jun 17 09:34 fastdfs-nginx-module-master.zip
drwxr-xr-x 5 root root 135 Jun 8 21:51 libfastcommon-master
-rw-r--r-- 1 root root 478888 Jun 17 09:34 libfastcommon-master.zip
-rw-r--r-- 1 root root 980831 Jun 17 09:34 nginx-1.12.0.tar.gz
-rw-r--r--. 1 root root 150 Jun 4 12:19 record.txt
-rw-r--r--. 1 root root 17699306 Jun 4 13:32 zookeeper-3.4.6.tar.gz
檢視到剛剛的檔案都在。