1提出問題
在目前的網際網路應用中,伺服器上會儲存大量的使用者上傳的檔案。例如:電商網站會儲存大量商品圖片,使用者評論圖片。這類檔案會隨著使用者數量的增加、商品數量的增加以及評論資料的增加而持續增長。那麼這些海量的持續增加的檔案該如何儲存呢?
①最初級的方式
在Web應用根目錄下建立一個專門儲存圖片的目錄。這樣做會有三個問題
[1]如果檔案體積不斷增長,那麼很可能把硬碟撐爆。
[2]Web應用重新部署後會導致使用者檔案目錄被清空。
[3]叢集模式下,必須保證多個應用伺服器之間資料同步。
②增加硬碟
一塊硬碟不夠,可以在伺服器上再增加硬碟,但畢竟伺服器上能夠掛載的硬碟數量是有限的。
③增加伺服器
伺服器的數量理論上是沒有限制的,但是每一臺伺服器都有自己的IP地址,會導致檔案上傳後,下載檔案的程式碼中需要考慮不同檔案用不同IP地址去訪問,非常麻煩。
所以我們需要這樣一種伺服器:
①上傳下載的IP地址固定不變
②擴容簡單,且擴容不會導致訪問地址變化,也就是說相關的Java程式碼不需要根據擴容情況修改
③穩定高效,無單點故障
2FastDFS
2.1簡介
FastDFS是一款類Google FS的開源分散式檔案系統,它用純C語言實現,支援Linux、FreeBSD、AIX等系統。
FastDFS是為網際網路應用量身定做的分散式檔案系統,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標。和現有的類GoogleFS分散式檔案系統相比,FastDFS的架構和設計理念有其獨到之處,主要體現在輕量級、分組方式和對等結構三個方面。
FastDFS可以到GitHub上下載原始碼。
https://github.com/happyfish100/fastdfs
2.2FastDFS基本架構
①Storage儲存伺服器
實際儲存檔案的專門伺服器。整個叢集下劃分為多個組,每一個組中可以有多臺具體儲存伺服器。同組的伺服器靠同步執行緒確保內容一致。同組多臺伺服器之間沒有主備之分,輪換提供服務,以此來保證不會發生單點故障。由於組內各伺服器儲存的資料一致,所以一個組的儲存容量等於組內容量最小的伺服器,故而建議使用相同配置的伺服器作為Storage。
②Tracker追蹤伺服器
Tracker負責監控Storage的儲存狀態。Storage會按照一定的時間間隔不斷的向Tracker彙報自己的健康狀態、剩餘容量、繁忙程度等等。Tracker據此選擇健康狀態好、剩餘容量大、繁忙程度低的Storage處理使用者請求。
3FastDFS主要工作流程
3.1檔案上傳流程
3.2檔案下載流程
3.3檔案刪除流程
4最後
FastDFS是一款開源的輕量級分散式檔案系統,純C實現,支援Linux, FreeBSD等UNIX系統,類google FS, 不是通用的檔案系統,只能夠通過專有API訪問,目前提供了C,Java和PHP API
為網際網路應用量身定做,解決大容量檔案儲存問題,追求高效能和高擴充套件性
FastDFS可以看做是基於檔案的key-value儲存系統,稱為分散式檔案儲存服務更為合適
本篇讓我們瞭解FastDFS的工作方式以及實用性,後面會寫FastDFS伺服器的搭建以及整合到Java的使用,請大家關注!
廣州蘆葦科技Java開發團隊
蘆葦科技-廣州專業網際網路軟體服務公司
抓住每一處細節 ,創造每一個美好
關注我們的公眾號,瞭解更多
想和我們一起奮鬥嗎?lagou搜尋“ 蘆葦科技 ”或者投放簡歷到 server@talkmoney.cn 加入我們吧
關注我們,你的評論和點贊對我們最大的支援