分佈式文件系統FastDFS之原理(一)

1、分佈式文件系統

1.1、介紹下爲什麼分佈式文件系統會產生?

       分佈式文件系統是面對互聯網的需求而產生,互聯網時代對海量數據如何存儲?靠簡單的增加硬盤的個數已經滿足 不了我們的要求,因爲硬盤傳輸速度有限但是數據在急劇增長,另外我們還要要做好數據備份、數據安全等。 採用分佈式文件系統可以將多個地點的文件系統通過網絡連接起來,組成一個文件系統網絡,結點之間通過網絡進行通信,一臺文件系統的存儲和傳輸能力有限,我們讓文件在多臺計算機上存儲,通過多臺計算共同傳輸。如下圖:
 
1.2、採用分佈式文件系統的好處:
 
(1)一臺計算機的文件系統處理能力擴充到多臺計算機同時處理。
(2)一臺計算機掛了還有另外副本計算機提供數據。
(3)每臺計算機可以放在不同的地域,這樣用戶就可以就近訪問,提高訪問速度。
 
2、FastDFS
 
2.1、fastDSF介紹
 
      FastDFS是用c語言編寫的一款開源的分佈式文件系統,它是由淘寶資深架構師餘慶編寫並開源。FastDFS專爲互聯
網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS
容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。
 
2.2、爲什麼要使用fastDFS呢?
 
        NFSGFS等都是通用的分佈式文件系統,通用的分佈式文件系統的優點的是開發體驗好,但是系統複雜
性高、性能一般,而專用的分佈式文件系統雖然開發體驗性差,但是系統複雜性低並且性能高。fastDFS非常適合
存儲圖片等那些小文件fastDFS不對文件進行分塊,所以它就沒有分塊合併的開銷,fastDFS網絡通信採用
socket,通信速度很快。

 

2.3、fastDSF工作原理

        FastDFS架構包括 Tracker serverStorageserver。客戶端請求Tracker server進行文件上傳、下載,通過Tracker
server調度最終由Storage server完成文件上傳和下載。 如下圖:
 
2.3.1、Tracker Server
 
       Tracker Server作用是負載均衡和調度,通過Tracker server在文件上傳時可以根據一些策略找到Storage server
供文件上傳服務。可以將tracker稱爲追蹤服務器或調度服務器。
       FastDFS集羣中的Tracker server可以有多臺,Tracker server之間是相互平等關係同時提供服務,Tracker server
不存在單點故障。客戶端請求Tracker server採用輪詢方式,如果請求的tracker無法提供服務則換另一個tracker
 
2.3.2、Storage Server
 
       Storage Server作用是文件存儲,客戶端上傳的文件最終存儲在Storage服務器上,Storage server沒有實現自己
的文件系統而是使用操作系統的文件系統來管理文件。可以將storage稱爲存儲服務器.
         Storage集羣採用了分組存儲方式。storage集羣由一個或多個組構成,集羣存儲總容量爲集羣中所有組的存儲容
量之和。一個組由一臺或多臺存儲服務器組成,組內的Storage server之間是平等關係,不同組的Storage server
之間不會相互通信,同組內的Storage server之間會相互連接進行文件同步,從而保證同組內每個storage上的文件
完全一致的。一個組的存儲容量爲該組內的存儲服務器容量最小的那個,由此可見組內存儲服務器的軟硬件配置最
好是一致的。
         採用分組存儲方式的好處是靈活、可控性較強。比如上傳文件時,可以由客戶端直接指定上傳到的組也可以由
tracker進行調度選擇。一個分組的存儲服務器訪問壓力較大時,可以在該組增加存儲服務器來擴充服務能力(縱向
擴容)。當系統容量不足時,可以增加組來擴充存儲容量(橫向擴容)。
 
2.3.3、Storage狀態收集
 
        Storage server會連接集羣中所有的Tracker server,定時向他們報告自己的狀態,包括磁盤剩餘空間、文件同步
狀況、文件上傳下載次數等統計信息。
 
2.4、文件上傳流程
 
文件上傳流程如下圖:
 
          客戶端上傳文件後存儲服務器文件ID返回給客戶端,此文件ID用於以後訪問該文件的索引信息。文件索引信息
包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。

組名:文件上傳後所在的storage組名稱,在文件上傳成功後有storage服務器返回,需要客戶端自行保存。
虛擬磁盤路徑:storage配置的虛擬路徑,與磁盤選項store_path*對應。如果配置了store_path0則是M00, 如果配置了store_path1則是M01,以此類推。
數據兩級目錄storage服務器在每個虛擬磁盤路徑下創建的兩級目錄,用於存儲數據文件。
文件名:與文件上傳時不同。是由存儲服務器根據特定信息生成,文件名包含:源存儲服務器IP地址、文件創建時間戳、文件大小、隨機數和文件拓展名等信息。

2.5、文件下載流程


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

(1)通過組名tracker能夠很快的定位到客戶端需要訪問的存儲服務器組是group1,並選擇合適的存儲服務器提供客
戶端訪問。
(2)存儲服務器根據文件存儲虛擬磁盤路徑數據文件兩級目錄可以很快定位到文件所在目錄,並根據文件名找到
客戶端需要訪問的文件。
 
好了,今天就寫到這裏,下一篇文章會寫:分佈式文件系統FastDFS之安裝與配置(二)。歡迎繼續閱讀。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章