分布式文件系統
分布式文件系統 (Distributed File System) 是一個軟件/軟件服務器,這個軟件可以用來管理文件。但這個軟件所管理的文件通常不是在一個服務器節點上,而是在多個服務器節點上,這些服務器節點通過網絡相連構成一個龐大的文件存儲服務器集群,這些服務器都用于存儲文件資源,通過分布式文件系統來管理這些服務器上的文件。
常見的分布式文件系統有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等。
分布式文件系統與傳統文件系統對比
傳統方式弊端
● 如果用戶數量多,IO操作比較多,對磁盤訪問壓力很大
● 如果磁盤發生故障,會造成數據丟失
● 存儲容量有限
FastDFS是一個開源的輕量級分布式文件系統,為互聯網應用量身定做,簡單、靈活、高效,采用C語言開發,由阿里巴巴開發并開源。
FastDFS對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載、文件刪除)等,解決了大容量文件存儲的問題,特別適合以文件為載體的在線服務,如相冊網站、文檔網站、圖片網站、視頻網站等等。
FastDFS充分考慮了冗余備份、線性擴容等機制,并注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。
2008年4月項目啟動,7月發布第一個版本V1.00,兩年時間內持續升級到V1.29
2010年8月推出V2.00
2011年6月推出V3.00
2012年10月推出V4.0.0
2013年12月推出V5.0.0
截止目前最新版是V5.11(2017年6月發布)
FastDFS系統架構從第一個版本發布后一直沒有大的調整,高版本完全兼容低版本的數據,可以做到平滑升級,推薦更新升級到最新版本
FastDFS代碼托管在github上:https://github.com/happyfish100/fastdfs
FastDFS整體架構
FastDFS文件系統由兩大部分構成,一個是客戶端,一個是服務端
客戶端通常指我們的程序,比如我們的Java程序去連接FastDFS、操作FastDFS,那我們的Java程序就是一個客戶端,FastDFS提供專有API訪問,目前提供了C、Java和PHP幾種編程語言的API,用來訪問FastDFS文件系統。
服務端由兩個部分構成:一個是跟蹤器(tracker),一個是存儲節點(storage)
跟蹤器(tracker)主要做調度工作,在內存中記錄集群中存儲節點storage的狀態信息,是前端Client和后端存儲節點storage的樞紐。因為相關信息全部在內存中,Tracker server的性能非常高,一個較大的集群(比如上百個group)中有3臺就足夠了。
存儲節點(storage)用于存儲文件,包括文件和文件屬性(meta data)都保存到存儲服務器磁盤上,完成文件管理的所有功能:文件存儲、文件同步和提供文件訪問等。
UC (http://www.uc.cn/ ,存儲容量超過10TB)
支付寶(http://www.alipay.com/)
京東商城(http://www.jd.com/)
淘淘搜(http://www.taotaosou.com/)
飛信(http://feixin.10086.cn/)
趕集網(http://www.ganji.com/)
淘米網(http://www.61.com/)
迅雷(http://www.xunlei.com/)
螞蜂窩(http://www.mafengwo.cn/)
5173(http://www.5173.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.freeovp.com/)
夢芭莎(http://www.moonbasa.com/)
51CTO(http://www.51cto.com/)
搜房網(http://www.soufun.com/)