在目前的互聯網應用中,服務器上會存儲大量的用戶上傳的文件。例如:電商網站會存儲大量商品圖片,用戶評論圖片。這類文件會隨着用戶數量的增長、商品數量的增長以及評論數據的增長而持續增加。那麼這些海量的持續增長的文件該如何保存呢?git
在Web應用根目錄下建立一個專門存儲圖片的目錄。這樣作會有三個問題
[1]若是文件體積不斷增加,那麼極可能把硬盤撐爆。
[2]Web應用從新部署後會致使用戶文件目錄被清空。
[3]集羣模式下,必須保證多個應用服務器之間數據同步。github
一塊硬盤不夠,能夠在服務器上再增長硬盤,但畢竟服務器上可以掛載的硬盤數量是有限的。小程序
服務器的數量理論上是沒有限制的,可是每一臺服務器都有本身的IP地址,會致使文件上傳後,下載文件的代碼中須要考慮不一樣文件用不一樣IP地址去訪問,很是麻煩。segmentfault
①上傳下載的IP地址固定不變
②擴容簡單,且擴容不會致使訪問地址變化,也就是說相關的Java代碼不須要根據擴容狀況修改
③穩定高效,無單點故障微信小程序
FastDFS是一款類Google FS的開源分佈式文件系統,它用純C語言實現,支持Linux、FreeBSD、AIX等系統。服務器
FastDFS是爲互聯網應用量身定作的分佈式文件系統,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標。和現有的類GoogleFS分佈式文件系統相比,FastDFS的架構和設計理念有其獨到之處,主要體如今輕量級、分組方式和對等結構三個方面。微信
FastDFS能夠到GitHub上下載源碼。
https://github.com/happyfish1...架構
①Storage存儲服務器
實際存儲文件的專門服務器。整個集羣下劃分爲多個組,每個組中能夠有多臺具體存儲服務器。同組的服務器靠同步線程確保內容一致。同組多臺服務器之間沒有主備之分,輪換提供服務,以此來保證不會發生單點故障。因爲組內各服務器保存的數據一致,因此一個組的存儲容量等於組內容量最小的服務器,故而建議使用相同配置的服務器做爲Storage。
②Tracker追蹤服務器
Tracker負責監控Storage的存儲狀態。Storage會按照必定的時間間隔不斷的向Tracker彙報本身的健康狀態、剩餘容量、繁忙程度等等。Tracker據此選擇健康狀態好、剩餘容量大、繁忙程度低的Storage處理用戶請求。app
FastDFS是一款開源的輕量級分佈式文件系統,純C實現,支持Linux, FreeBSD等UNIX系統,類google FS, 不是通用的文件系統,只可以經過專有API訪問,目前提供了C,Java和PHP API
爲互聯網應用量身定作,解決大容量文件存儲問題,追求高性能和高擴展性
FastDFS能夠看作是基於文件的key-value存儲系統,稱爲分佈式文件存儲服務更爲合適負載均衡
| 掘金 | segmentfault | V2EX | 知乎 | 博客園 | 開源中國 | github | 簡書 | 蘆葦科技 |
廣州蘆葦科技Java開發團隊
author:yy_long
蘆葦科技Java開發工程師
蘆葦科技-廣州專業軟件外包服務公司
提供微信小程序、APP應用研發、UI設計等專業服務,專一於互聯網產品諮詢、品牌設計、技術研發等領域
訪問 www.talkmoney.cn 瞭解更多
萬能說明書 | 早起日記Lite | 凹凸壁紙 | 言財