TaoBao FastDFS - 開源的分佈式文件系統

FastDFS 介紹

FastDFS 是用 C 語言編寫的一款開源的分佈式文件系統。FastDFS 爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 FastDFS 很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。

FastDFS 架構

FastDFS 架構包括 Tracker server 和 Storage server、Client 三部分組成。Client 請求 Tracker server 進行文件上傳、下載,通過 Tracker server 調度最終由 Storage server 完成文件上傳和下載。

Tracker server 作用是負載均衡和調度,通過 Tracker server 在文件上傳時可以根據一些策略找到 Storage server 提供文件上傳服務。可以將 Tracker 稱爲追蹤服務器或調度服務器。

Storage server 作用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務器上,Storage server 沒有實現自己的文件系統而是利用操作系統的文件系統來管理文件。可以將 Storage 稱爲存儲服務器。

Tracker 集羣

FastDFS 集羣中的 Tracker server 可以有多臺,Tracker server 之間是相互平等關係,同時提供服務,Tracker server 不存在單點故障。客戶端請求 Tracker server 採用輪詢方式,如果請求的 Tracker 無法提供服務則換另一個 Tracker。

Storage 集羣

Storage 集羣採用了分組存儲方式。Storage 集羣由一個或多個組構成,集羣存儲總容量爲集羣中所有組的存儲容量之和。一個組由一臺或多臺存儲服務器組成,組內的 Storage server 之間是平等關係,不同組的 Storage server 之間不會相互通信,同組內的 Storage server 之間會相互連接進行文件同步,從而保證同組內每個 Storage 上的文件完全一致的。一個組的存儲容量爲該組內存儲服務器容量最小的那個,由此可見組內存儲服務器的軟硬件配置最好是一致的。

採用分組存儲方式的好處是靈活、可控性較強。比如上傳文件時,可以由客戶端直接指定上傳到的組也可以由 Tracker 進行調度選擇。一個分組的存儲服務器訪問壓力較大時,可以在該組增加存儲服務器來擴充服務能力(縱向擴容)。當系統容量不足時,可以增加組來擴充存儲容量(橫向擴容)。

Storage server 會連接集羣中所有的 Tracker server,定時向他們報告自己的狀態,包括磁盤剩餘空間、文件同步狀況、文件上傳下載次數等統計信息。

文件上傳

客戶端上傳文件後存儲服務器將文件ID返回給客戶端,此文件ID用於以後訪問該文件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。

下載文件

Tracker 根據請求的文件路徑即文件ID來快速定義文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章