分佈式文件存儲——簡介

1、分佈式文件系統種類簡介:

常見的分佈式文件系統有:GlusterFS、GoogleFS、FastDFS、TFS等,各自適用的領域不同,它們都不是系統級的分佈式文件系統,而是應用級的分佈式文件存儲服務。

現在比較火的並且好用的應該就是OSS了,阿里雲對象存儲服務(Object Storage Service,簡稱 OSS),是阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。OSS 具有與平臺無關的 RESTful API 接口,您可以在任何應用、任何時間、任何地點存儲和訪問任意類型的數據。需要開通阿里雲的賬號並根據需要選擇對應的付費套餐即可,然後根據對應的API進行調用。

GlusterFS:主要應用在集羣系統中,具有很好的可擴展性。軟件的結構設計良好,易於擴展和配置,通過各個模塊的靈活搭配以得到針對性的解決方案。對硬件和網絡要求比較高點。

GoogleFS:性能十分好,可擴展性強,可靠性強。用於大型的、分佈式的、對大數據進行訪問的應用。運用在廉價的硬件上。

FastDFS:一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。文件大小一般都是在500MB以下的文件,使用fastDFS最合適了。

TFS:TFS(Taobao FileSystem)是一個高可擴展、高可用、高性能、面向互聯網服務的分佈式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器集羣上,可爲外部提供高可靠和高併發的存儲訪問。TFS爲淘寶提供海量小文件存儲,通常文件大小不超過1M,滿足了淘寶對小文件存儲的需求,被廣泛地應用 在淘寶各項應用中。

2、fastDFS簡介:

FastDFS是一個開源的高性能分佈式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。主要解決了海量數據存儲問題,特別適合以中小文件(建議範圍:4KB < file_size <500MB)爲載體的在線服務。

FastDFS 系統有三個角色:跟蹤服務器(Tracker Server)、存儲服務器(Storage Server)和客戶端(Client)。

Tracker Server:跟蹤服務器,主要做調度工作,起到均衡的作用;負責管理所有的storage server和group,每個storage在啓動後會連接Tracker,告知自己所屬group等信息,並保持週期性心跳。

Storage Server:存儲服務器,主要提供容量和備份服務;以group 爲單位,每個group內可以有多臺storage server,數據互爲備份。

Client:客戶端,上傳下載數據的服務器,也就是我們自己的項目所部署在的服務器。

3、fastDFS存儲簡介:

爲了支持大容量,存儲節點(服務器)採用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗餘備份和負載均衡的作用。

在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務。當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量。

4、fastDFS上傳簡介:

FastDFS向使用者提供基本文件訪問接口,比如upload、download、append、delete等,以客戶端庫的方式提供給用戶使用。

Storage Server會定期的向Tracker Server發送自己的存儲信息。當Tracker Server Cluster中的Tracker Server不止一個時,各個Tracker之間的關係是對等的,所以客戶端上傳時可以選擇任意一個Tracker。

當Tracker收到客戶端上傳文件的請求時,會爲該文件分配一個可以存儲文件的group,當選定了group後就要決定給客戶端分配group中的哪一個storage server。當分配好storage server後,客戶端向storage發送寫文件請求,storage將會爲文件分配一個數據存儲目錄。然後爲文件分配一個fileid,最後根據以上的信息生成文件名存儲文件。

5、fastDFS同步簡介:

寫文件時,客戶端將文件寫至group內一個storage server即認爲寫文件成功,storage server寫完文件後,會由後臺線程將文件同步至同group內其他的storage server。

每個storage寫文件後,同時會寫一份binlog,binlog裏不包含文件數據,只包含文件名等元信息,這份binlog用於後臺同步,storage會記錄向group內其他storage同步的進度,以便重啓後能接上次的進度繼續同步;進度以時間戳的方式進行記錄,所以最好能保證集羣內所有server的時鐘保持同步。

storage的同步進度會作爲元數據的一部分彙報到tracker上,tracke在選擇讀storage的時候會以同步進度作爲參考。

6、fastDFS下載簡介:

客戶端uploadfile成功後,會拿到一個storage生成的文件名,接下來客戶端根據這個文件名即可訪問到該文件。跟upload file一樣,在downloadfile時客戶端可以選擇任意tracker server。tracker發送download請求給某個tracker,必須帶上文件名信息,tracke從文件名中解析出文件的group、大小、創建時間等信息,然後爲該請求選擇一個storage用來服務讀請求。

7、fastDFS優缺點:

(1)優點:

系統無需支持POSIX(可移植操作系統),降低了系統的複雜度,處理效率更高;

支持在線擴容機制,增強系統的可擴展性;

實現了軟RAID,增強系統的併發處理能力及數據容錯恢復能力;

支持主從文件,支持自定義擴展名;

主備Tracker服務,增強系統的可用性;

(2)缺點:

不支持斷點續傳,對大文件將是噩夢(FastDFS不適合大文件存儲);

不支持POSIX通用接口訪問,通用性較低;

對跨公網的文件同步,存在較大延遲,需要應用做相應的容錯策略;

同步機制不支持文件正確性校驗,降低了系統的可用性;

通過API下載,存在單點的性能瓶頸;

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