您現在的位置是:首頁 > 舞蹈首頁舞蹈
黑馬程式設計師:Spring Boot+Vue.js+FastDFS實現分散式圖片伺服器!
虛擬目錄有什麼作用
學習目標
1)瞭解分散式檔案系統的概念及應用場景
2)理解fastDFS的工作原理
3)掌握fastDFS存取檔案方法
4)基於SpringBoot+fastDSf+vue。js實現圖片服務
1 什麼是分散式檔案系統
1.1 技術應用場景
傳智播客擁有大量優質的影片教程,並且免費提供給使用者去下載,檔案太多如何高效儲存?使用者訪問量大如何保證下載速度?今天講解的分散式檔案系統將解決這些問題。
1.2 什麼是分散式檔案系統
1。2。1什麼是檔案系統
引用“百度百科”中的描述:
總結:檔案系統是負責管理和儲存檔案的系統軟體,它是作業系統和硬體驅動之間的橋樑,作業系統透過檔案系統提供的介面去存取檔案,使用者透過作業系統訪問磁碟上的檔案。如下圖:
常見的檔案系統:FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等 。
思考:如果沒有檔案系統我們該怎麼管理自己的檔案?
1。2。2什麼是分散式檔案系統
引用“百度百科”中的描述:
為什麼會有分佈檔案系統呢?
分散式檔案系統是面對網際網路的需求而產生,網際網路時代對海量資料如何儲存?靠簡單的增加硬碟的個數已經滿足不了我們的要求,因為硬碟傳輸速度有限但是資料在急劇增長,另外我們還要要做好資料備份、資料安全等。
採用分散式檔案系統可以將多個地點的檔案系統透過網路連線起來,組成一個檔案系統網路,結點之間透過網路進行通訊,一臺檔案系統的儲存和傳輸能力有限,我們讓檔案在多臺計算機上儲存,透過多臺計算共同傳輸。如下圖:
好處:
1、一臺計算機的檔案系統處理能力擴充到多臺計算機同時處理。
2、一臺計算機掛了還有另外副本計算機提供資料。
3、每臺計算機可以放在不同的地域,這樣使用者就可以就近訪問,提高訪問速度。
1.3 主流的分散式檔案系統
1、NFS
1)在客戶端上對映NFS伺服器的驅動器。
2)客戶端透過網路訪問NFS伺服器的硬碟完全透明。
2、GFS
1)GFS採用主從結構,一個GFS叢集由一個master和大量的chunkserver組成。
2)master儲存了資料檔案的元資料,一個檔案被分成了若干塊儲存在多個chunkserver中。
3)使用者從master中獲取資料元資訊,從chunkserver儲存資料。
3、HDSF
1)HDFS採用主從結構,一個HDFS叢集由一個名稱結點和若干資料結點組成。
名稱結點儲存資料的元資訊,一個完整的資料檔案分成若干塊儲存在資料結點。
2)客戶端從名稱結點獲取資料的元資訊及資料分塊的資訊,得到資訊客戶端即可從資料塊來存取資料。
1.4分散式檔案服務提供商
1)阿里的OSS
2)七牛雲端儲存
3)百度雲端儲存
2 什麼是fastDFS
2.1 fastDSF介紹
FastDFS是用c語言編寫的一款開源的分散式檔案系統,它是由淘寶資深架構師餘慶編寫並開源。FastDFS專為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。
為什麼要使用fastDFS呢?
上邊介紹的NFS、GFS都是通用的分散式檔案系統,通用的分散式檔案系統的優點的是開發體驗好,但是系統複雜性高、效能一般,而專用的分散式檔案系統雖然開發體驗性差,但是系統複雜性低並且效能高。fastDFS非常適合儲存圖片等那些小檔案,fastDFS不對檔案進行分塊,所以它就沒有分塊合併的開銷,fastDFS網路通訊採用socket,通訊速度很快。
2.2 fastDSF工作原理
2。2。1 fastDSF架構
FastDFS架構包括 Tracker server和Storageserver。客戶端請求Tracker server進行檔案上傳、下載,透過Trackerserver排程最終由Storage server完成檔案上傳和下載。
如下圖:
1)Tracker
Tracker Server作用是負載均衡和排程,透過Tracker server在檔案上傳時可以根據一些策略找到Storage server提供檔案上傳服務。可以將tracker稱為追蹤伺服器或排程伺服器。
FastDFS叢集中的Tracker server可以有多臺,Tracker server之間是相互平等關係同時提供服務,Tracker server不存在單點故障。客戶端請求Tracker server採用輪詢方式,如果請求的tracker無法提供服務則換另一個tracker。
2)Storage
Storage Server作用是檔案儲存,客戶端上傳的檔案最終儲存在Storage伺服器上,Storage server沒有實現自己的檔案系統而是使用作業系統的檔案系統來管理檔案。可以將storage稱為儲存伺服器。
Storage叢集採用了分組儲存方式。storage叢集由一個或多個組構成,叢集儲存總容量為叢集中所有組的儲存容量之和。一個組由一臺或多臺儲存伺服器組成,組內的Storage server之間是平等關係,不同組的Storage server之間不會相互通訊,同組內的Storage server之間會相互連線進行檔案同步,從而保證同組內每個storage上的檔案完全一致的。一個組的儲存容量為該組記憶體儲伺服器容量最小的那個,由此可見組記憶體儲伺服器的軟硬體配置最好是一致的。
採用分組儲存方式的好處是靈活、可控性較強。比如上傳檔案時,可以由客戶端直接指定上傳到的組也可以由tracker進行排程選擇。一個分組的儲存伺服器訪問壓力較大時,可以在該組增加儲存伺服器來擴充服務能力(縱向擴容)。當系統容量不足時,可以增加組來擴充儲存容量(橫向擴容)。
3)Storage狀態收集
Storage server會連線叢集中所有的Tracker server,定時向他們報告自己的狀態,包括磁碟剩餘空間、檔案同步狀況、檔案上傳下載次數等統計資訊。
2。2。2檔案上傳流程
客戶端上傳檔案後儲存伺服器將檔案ID返回給客戶端,此檔案ID用於以後訪問該檔案的索引資訊。檔案索引資訊包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。
組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後有storage伺服器返回,需要客戶端自行儲存。
虛擬磁碟路徑:storage配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。
資料兩級目錄:storage伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案。
檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含:源儲存伺服器IP地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊。
2。2。3 檔案下載流程
tracker根據請求的檔案路徑即檔案ID 來快速定義檔案。
比如請求下邊的檔案:
1。透過組名tracker能夠很快的定位到客戶端需要訪問的儲存伺服器組是group1,並選擇合適的儲存伺服器提供客戶端訪問。
2。儲存伺服器根據“檔案儲存虛擬磁碟路徑”和“資料檔案兩級目錄”可以很快定位到檔案所在目錄,並根據檔名找到客戶端需要訪問的檔案。
3 fastDFS入門
3.1fastDFS安裝與配置
3。1。1fastDFS安裝
tracker和storage使用相同的安裝包,本教程下載:FastDFS_v5。05。tar。gz
FastDFS是C語言開發,建議在linux上執行,本教程使用CentOS7作為安裝環境。
安裝細節請參考 “fastDFS安裝教程。doc”。
3。1。2Tracker配置
fastDFS的配置檔案目錄 :/etc/fdfs
主要的配置檔案:/etc/fdfs/tracker。conf (tracker配置檔案 );storage。conf(storage配置檔案)
tracker。conf配置內容如下:
埠:port=22122
tracker 基礎目錄:base_path=/home/fastdfs,tracker在執行時會向此目錄儲存storage的管理資料。
3。1。3storage配置
storage。conf配置 內容如下:
組名:group_name=group1
埠:port=23000
向tracker心跳間隔(秒):heart_beat_interval=30
storage基礎目錄:base_path=/home/fastdfs
磁碟儲存目錄:
store_path0=/home/fastdfs/fdfs_storage 此目錄下儲存上傳的檔案,在/home/fastdfs/fdfs_storage/data下
store_path1=。。。
。。。
有多個磁碟就定義多個store_path
上報tracker的地址:tracker_server=192。168。101。64:22122
如果有多個tracker則配置多個tracker,比如:
tracker_server=192。168。101。64:22122
tracker_server=192。168。101。65:22122
。。。。
3。1。4啟動停止
fastDFS啟動/停止指令碼目錄:
fdfs_trackerd:tracker指令碼,透過此指令碼對 tracker進行啟動和停止
/usr/bin/fdfs_trackerd /etc/fdfs/tracker。conf restart
fdfs_storaged:storage指令碼,透過此指令碼對 storage進行啟動和停止
/usr/bin/fdfs_storaged /etc/fdfs/storage。conf restart
3.2 檔案上傳下載測試
3。2。1搭建環境
這裡我們使用javaApi測試檔案的上傳。
1)建立maven工程
2)新增依賴
3) 配置 檔案
在classpath:config下建立fastdfs-client。properties檔案
3。2。2 檔案上傳
3。2。3 檔案查詢
3。2。4 檔案下載
4 檔案服務案例
4.1 目標
透過檔案服務案例達到以下目標:
1、理解fastDFS在實際專案中的使用方法。
2、能夠使用fastDSF實現圖片伺服器。
4.2需求分析
說明如下:
1、管理員在管理系統中上傳圖片到fastDFS檔案系統。
1)管理員進入管理系統,點選上傳圖片,選擇本地圖片
2)選擇本地圖片後,進行上傳,前端瀏覽器會透過http呼叫檔案管理服務的檔案上傳介面進行上傳
3)檔案管理服務透過socket請求fastDFS檔案系統的上傳圖片,最終圖片儲存在fastDFS檔案系統中的storageserver中。
2、網友瀏覽免費影片的課程圖片
1)網友輸入www。itcast。cn進入影片下載頁面
2)前端瀏覽器透過圖片地址請求圖片伺服器代理(nginx)
3)圖片伺服器代理根據負載情況將圖片瀏覽請求轉發到一臺storage server
4)storage server找到圖片後透過nginx將圖片響應給網友
4.3 功能開發
4。3。1 搭建fastDFS檔案伺服器
1)安裝fastDFS tracker和storage略
2)在storage server上安裝nginx
在storage server上安裝nginx的目的是對外透過http訪問storage server上的檔案。
使用nginx的模組FastDFS-nginx-module,它的作用是透過http方式訪問storage中的檔案,當storage本機沒有要找的檔案時向源storage主機代理請求檔案。
詳細參見 fastDFS安裝教程
3)在安裝圖片服務代理
圖片服務代理的作用是負載均衡,根據storage server的負載情況將圖片瀏覽請求均勻的轉發到storage server上。
4。3。2 搭建檔案管理服務
檔案管理服務提供透過http方式上傳檔案,刪除檔案、查詢檔案的功能,管理員透過檔案管理服務對檔案伺服器上的檔案進行管理。
檔案管理服務採用Spring Boot開發,檔案管理服務透過與fastDFS互動最終將使用者上傳的檔案儲存到fastDFS上。
在fastDFS入門程式上繼續開發:
1)建立模型
2)建立controller
3)建立application。yml
4)建立spring boot啟動類
4。3。3 管理系統前端
管理員透過管理系統前端上傳檔案、查詢檔案、刪除檔案等操作。
管理系統前端與檔案管理伺服器透過http互動,這當前流行的前後端分離的架構。
管理系統前端採用當前瀏覽器的vue。js前端框架實現。
1、建立前端工程
使用webstorm建立前端工程
工程需要匯入vue。js及element-ui
2、建立upload。html
該檔案實現檔案上傳及預覽
1)匯入js及 css
2)建立vue例項
3)新增element-ui的檔案上傳元件
定義資料物件及方法 :
4)配置 nginx虛擬目錄
5)測試
4。3。4 課程圖片瀏覽
根據頁面上的圖片地址請求圖片服務代理,由代理將請求轉發到fastDFS storage server上,最終在瀏覽器看到圖片。
上章節實現圖片上傳後已經實現圖片的預覽,本功能實現略。
5 總結 透過本次課程的學習您要達到以下目標:
1)瞭解分散式檔案系統的概念及應用場景
分散式檔案系統是透過網路將單機上的檔案系統組成一個網路檔案系統。
分散式檔案系統主要應用在大型網際網路專案中,實現圖片儲存、音影片儲存等服務。
分散式檔案系統的優點:可以快速擴容儲存,提高檔案訪問速度。
2)理解fastDFS的工作原理
fastDFS由tracker和storage組成,它們都可以部署叢集。
tracker負責排程,storage負責儲存。
3)掌握fastDFS存取檔案方法
客戶端與fastDFS採用socket協議通訊,可以採用官方提供的java版本的fastDSF-client快速開發。
4)能夠動手搭建一個fastDSF檔案伺服器