1 什么是分布式文件系統(tǒng)
1.1 技術(shù)應(yīng)用場景
優(yōu)酷擁有大量優(yōu)質(zhì)的視頻教程,并且免費提供給用戶去下載,文件太多如何高效存儲卷要?用戶訪問量大如何保證
下載速度?分布式文件系統(tǒng)將解決這些問題隔显。
分布式文件系統(tǒng)解決了海量文件存儲及傳輸訪問的瓶頸問題却妨,對海量視頻的管理饵逐、對海量圖片的管理等括眠。
1.2 什么是分布式文件系統(tǒng)
1.2.1什么是文件系統(tǒng)
總結(jié):文件系統(tǒng)是負責(zé)管理和存儲文件的系統(tǒng)軟件,它是操作系統(tǒng)和硬件驅(qū)動之間的橋梁倍权,操作系統(tǒng)通過文件系統(tǒng)提供的接口去存取文件掷豺,用戶通過操作系統(tǒng)訪問磁盤上的文件。如下圖:
常見的文件系統(tǒng):FAT16/FAT32薄声、NTFS当船、HFS、UFS默辨、APFS德频、XFS、Ext4等 缩幸。
1.2.2什么是分布式文件系統(tǒng)
為什么會有分布文件系統(tǒng)呢壹置?
分布式文件系統(tǒng)是面對互聯(lián)網(wǎng)的需求而產(chǎn)生,互聯(lián)網(wǎng)時代對海量數(shù)據(jù)如何存儲表谊?靠簡單的增加硬盤的個數(shù)已經(jīng)滿足不了我們的要求钞护,因為硬盤傳輸速度有限但是數(shù)據(jù)在急劇增長,另外我們還要要做好數(shù)據(jù)備份爆办、數(shù)據(jù)安全等难咕。
采用分布式文件系統(tǒng)可以將多個地點的文件系統(tǒng)通過網(wǎng)絡(luò)連接起來,組成一個文件系統(tǒng)網(wǎng)絡(luò)距辆,結(jié)點之間通過網(wǎng)絡(luò)進行通信余佃,一臺文件系統(tǒng)的存儲和傳輸能力有限,我們讓文件在多臺計算機上存儲跨算,通過多臺計算共同傳輸爆土。如下圖:
好處:
1、一臺計算機的文件系統(tǒng)處理能力擴充到多臺計算機同時處理漂彤。
2雾消、一臺計算機掛了還有另外副本計算機提供數(shù)據(jù)灾搏。
3、每臺計算機可以放在不同的地域立润,這樣用戶就可以就近訪問狂窑,提高訪問速度。
1.3 主流的分布式文件系統(tǒng)
1桑腮、NFS
1)在客戶端上映射NFS服務(wù)器的驅(qū)動器泉哈。
2)客戶端通過網(wǎng)絡(luò)訪問NFS服務(wù)器的硬盤完全透明。
2破讨、GFS
1)GFS采用主從結(jié)構(gòu)丛晦,一個GFS集群由一個master和大量的chunkserver組成。
2)master存儲了數(shù)據(jù)文件的元數(shù)據(jù)提陶,一個文件被分成了若干塊存儲在多個chunkserver中烫沙。
3)用戶從master中獲取數(shù)據(jù)元信息,從chunkserver存儲數(shù)據(jù)隙笆。
3锌蓄、HDSF
1)HDFS采用主從結(jié)構(gòu),一個HDFS集群由一個名稱結(jié)點和若干數(shù)據(jù)結(jié)點組成撑柔。名稱結(jié)點存儲數(shù)據(jù)的元信息瘸爽,一個完整的數(shù)據(jù)文件分成若干塊存儲在數(shù)據(jù)結(jié)點。
2)客戶端從名稱結(jié)點獲取數(shù)據(jù)的元信息及數(shù)據(jù)分塊的信息铅忿,得到信息客戶端即可從數(shù)據(jù)塊來存取數(shù)據(jù)剪决。
1.4分布式文件服務(wù)提供商
1)阿里的OSS
2)七牛云存儲
3)百度云存儲
2 什么是fastDFS
2.1 fastDSF介紹
FastDFS是用c語言編寫的一款開源的分布式文件系統(tǒng),它是由淘寶資深架構(gòu)師余慶編寫并開源檀训。FastDFS專為互聯(lián)網(wǎng)量身定制柑潦,充分考慮了冗余備份、負載均衡肢扯、線性擴容等機制妒茬,并注重高可用、高性能等指標蔚晨,使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳乍钻、下載等服務(wù)。
為什么要使用fastDFS呢铭腕?
上邊介紹的NFS银择、GFS都是通用的分布式文件系統(tǒng),通用的分布式文件系統(tǒng)的優(yōu)點的是開發(fā)體驗好累舷,但是系統(tǒng)復(fù)雜性高浩考、性能一般,而專用的分布式文件系統(tǒng)雖然開發(fā)體驗性差被盈,但是系統(tǒng)復(fù)雜性低并且性能高析孽。fastDFS非常適合存儲圖片等那些小文件搭伤,fastDFS不對文件進行分塊,所以它就沒有分塊合并的開銷袜瞬,fastDFS網(wǎng)絡(luò)通信采用socket怜俐,通信速度很快。
2.2 fastDSF工作原理
2.2.1 fastDSF架構(gòu)
FastDFS架構(gòu)包括 Tracker server和Storageserver邓尤∨睦穑客戶端請求Tracker server進行文件上傳、下載汞扎,通過Tracker server調(diào)度最終由Storage server完成文件上傳和下載季稳。
1)Tracker
Tracker Server作用是負載均衡和調(diào)度,通過Tracker server在文件上傳時可以根據(jù)一些策略找到Storage server提供文件上傳服務(wù)澈魄【笆螅可以將tracker稱為追蹤服務(wù)器或調(diào)度服務(wù)器。
FastDFS集群中的Tracker server可以有多臺一忱,Tracker server之間是相互平等關(guān)系同時提供服務(wù)莲蜘,Tracker server不存在單點故障×庇客戶端請求Tracker server采用輪詢方式,如果請求的tracker無法提供服務(wù)則換另一個tracker逐哈。
2)Storage
Storage Server作用是文件存儲芬迄,客戶端上傳的文件最終存儲在Storage服務(wù)器上,Storage server沒有實現(xiàn)自己的文件系統(tǒng)而是使用操作系統(tǒng)的文件系統(tǒng)來管理文件昂秃≠魇幔可以將storage稱為存儲服務(wù)器。
Storage集群采用了分組存儲方式肠骆。storage集群由一個或多個組構(gòu)成算途,集群存儲總?cè)萘繛榧褐兴薪M的存儲容量之和。一個組由一臺或多臺存儲服務(wù)器組成蚀腿,組內(nèi)的Storage server之間是平等關(guān)系嘴瓤,不同組的Storage server之間不會相互通信,同組內(nèi)的Storage server之間會相互連接進行文件同步莉钙,從而保證同組內(nèi)每個storage上的文件完全一致的廓脆。一個組的存儲容量為該組內(nèi)的存儲服務(wù)器容量最小的那個,由此可見組內(nèi)存儲服務(wù)器的軟硬件配置最好是一致的磁玉。
采用分組存儲方式的好處是靈活停忿、可控性較強。比如上傳文件時蚊伞,可以由客戶端直接指定上傳到的組也可以由tracker進行調(diào)度選擇席赂。一個分組的存儲服務(wù)器訪問壓力較大時吮铭,可以在該組增加存儲服務(wù)器來擴充服務(wù)能力(縱向擴容)。當系統(tǒng)容量不足時颅停,可以增加組來擴充存儲容量(橫向擴容)沐兵。
3)Storage狀態(tài)收集
Storage server會連接集群中所有的Tracker server,定時向他們報告自己的狀態(tài)便监,包括磁盤剩余空間扎谎、文件同步狀況、文件上傳下載次數(shù)等統(tǒng)計信息烧董。
2.2.2文件上傳流程
客戶端上傳文件后存儲服務(wù)器將文件ID返回給客戶端毁靶,此文件ID用于以后訪問該文件的索引信息。文件索引信息包括:組名逊移,虛擬磁盤路徑预吆,數(shù)據(jù)兩級目錄,文件名胳泉。
組名:文件上傳后所在的storage組名稱拐叉,在文件上傳成功后有storage服務(wù)器返回,需要客戶端自行保存扇商。
虛擬磁盤路徑:storage配置的虛擬路徑凤瘦,與磁盤選項store_path*對應(yīng)。如果配置了store_path0則是M00案铺,
如果配置了store_path1則是M01蔬芥,以此類推。數(shù)據(jù)兩級目錄:storage服務(wù)器在每個虛擬磁盤路徑下創(chuàng)建的兩級目錄控汉,用于存儲數(shù)據(jù)文件笔诵。
文件名:與文件上傳時不同。是由存儲服務(wù)器根據(jù)特定信息生成姑子,文件名包含:源存儲服務(wù)器IP地址乎婿、文件
創(chuàng)建時間戳、文件大小街佑、隨機數(shù)和文件拓展名等信息谢翎。
2.2.3 文件下載流程
tracker根據(jù)請求的文件路徑即文件ID 來快速定義文件。
比如請求下邊的文件:
1.通過組名tracker能夠很快的定位到客戶端需要訪問的存儲服務(wù)器組是group1舆乔,并選擇合適的存儲服務(wù)器提供客戶端訪問岳服。
2.存儲服務(wù)器根據(jù)“文件存儲虛擬磁盤路徑”和“數(shù)據(jù)文件兩級目錄”可以很快定位到文件所在目錄,并根據(jù)文件名找到客戶端需要訪問的文件希俩。