輕量級分佈式文件系統fastDFS

FastDFS主要解決了大容量的文件(主要是圖片、視頻、音頻等小文件 512M以內最好)存儲和高併發訪問的問題,並在文件存取時實現了負載均衡。

FastDFS的結構比較簡單,主要由Client、Tracker server和Storage server三部分組成。Client通過Tracker server得到Storage server的信息,然後直接與Storage server通信訪問文件,避免了Tracker server成爲瓶頸。容易構建集羣和解決高併發,高可用問題。

Tracker server

Tracker server類似於GFS中的Master或TFS中的Name server,但與他們很不同的一點是,Tracker server的主要作用是負載均衡和調度,而不負責文件索引和映射。Tracker server在內存中記錄分組和Storage server的狀態等信息,不記錄文件索引信息,其佔用的內存量也很少。Tracker server可以只有一個,也可以有多個組成Tracker cluster,這樣的好處是可以提高對用戶的響應能力和增加容災性,此時各Tracker server相互對等,冗餘備份,由應用端來輪流選擇進行訪問。

Storage server

Storage server完成文件管理的所有功能:存儲、同步和提供存取接口,文件和metadata都存儲在其上。Storage server類似於GFS中的Chunk server或TFS中的Data server,通常一個Storage server即一臺機器,Storage server可以動態新增和刪除。FastDFS的存儲部分即Storage cluster,分爲多個Volume,每個Volume中包括多個Storage server。同一Volume內的各Storage server之間是對等的,存儲的內容相同,起冗餘容錯的作用。文件上傳、下載、刪除等操作可在Volume內任意一臺 Storage server上進行。一個Volume的存儲容量取決於該Volume內最小的Storage server的容量,因此Volume內各Storage server的軟硬件配置最好是一致的。採用這種分Volume的存儲方式的好處是靈活、可控性較強。比如上傳文件時,可以由客戶端直接指定上傳到哪個Volume。當某個Volume的訪問壓力較大時,可以在該Volume內增加Storage server來擴充服務能力(縱向擴容)。當系統總容量不足時,可以增加Volume來擴充存儲容量(橫向擴容)。

Storage server直接利用OS的文件系統存儲文件。FastDFS不會對文件進行分塊存儲,客戶端上傳的文件和Storage server上的文件一一對應。

關於Storage server的同步,不同Volume的Storage server之間不會相互通信,同Volume內的Storage server之間會相互連接進行文件同步。文件同步採用push方式,接受更新操作的文件稱爲源文件,其所在server稱爲源服務器,其它文件稱爲備份文件,其它server稱爲目標服務器。當文件更新操作發生時,源服務器向目標服務器發起同步,對所有備份文件進行更新。當有新Storage server加入本Volume時,由已有的一臺 Storage server將其上的所有文件同步給該新增服務器。具體的同步實現在Storage server中由專門線程根據binlog進行,binlog記錄了文件上傳、刪除等更新操作。爲了最大程度地避免相互影響以及出於系統簡潔性考慮,Storage server對同Volume內除自己以外的每臺服務器都會啓動一個線程來負責文件同步。

這種異步的同步方式帶來了一致性問題,當源文件尚未來得及將所有備份文件同步更新時,訪問這些備份文件將引發錯誤。文件的訪問主要分爲更新和下載兩種情況:FastDFS規定更新操作只能對源文件進行,從而避免了同時對不同的備份文件進行更新導致的衝突;文件下載時,Tracker server記錄了各Storage server中各文件的同步情況,會向Client提供同步後的文件所在的Storage server。

FastDFS 集羣構建:
http://www.2cto.com/kf/201611/560911.html

發佈了59 篇原創文章 · 獲贊 14 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章