天天看點

FastDFS單機版部署

FastDFS

分布式檔案系統

1 目标#

了解項目中使用FastDFS的原因和意義。

掌握FastDFS的架構組成部分,能說出tracker和storage的作用。

了解FastDFS+nginx上傳和下載下傳的執行流程。

掌握FastDFS+nginx在項目中作為圖檔伺服器,上傳和下載下傳方法。

2 FastDFS介紹#

2.1 什麼是FastDFS#

FastDFS是用c語言編寫的一款開源的分布式檔案系統。FastDFS為網際網路量身定制,充分考慮了備援備份、負載均衡、線性擴容等機制,并注重高可用、高性能等名額,使用FastDFS很容易搭建一套高性能的檔案伺服器叢集提供檔案上傳、下載下傳等服務。

2.2 FastDFS架構#

FastDFS架構包括 Tracker server和Storage server。用戶端請求Tracker server進行檔案上傳、下載下傳,通過Tracker server排程最終由Storage server完成檔案上傳和下載下傳。

Tracker server作用是負載均衡和排程,通過Tracker server在檔案上傳時可以根據一些政策找到Storage server提供檔案上傳服務。可以将tracker稱為追蹤伺服器或排程伺服器。

Storage server作用是檔案存儲,用戶端上傳的檔案最終存儲在Storage伺服器上,Storage server沒有實作自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以将storage稱為存儲伺服器。

如下圖:

FastDFS單機版部署

2.2.1 Tracker 叢集

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

2.2.2 Storage叢集

Storage叢集采用了分組存儲方式。storage叢集由一個或多個組構成,叢集存儲總容量為叢集中所有組的存儲容量之和。一個組由一台或多台存儲伺服器組成,組内的Storage server之間是平等關系,不同組的Storage server之間不會互相通信,同組内的Storage server之間會互相連接配接進行檔案同步,進而保證同組内每個storage上的檔案完全一緻的。一個組的存儲容量為該組記憶體儲伺服器容量最小的那個,由此可見組記憶體儲伺服器的軟硬體配置最好是一緻的。

采用分組存儲方式的好處是靈活、可控性較強。比如上傳檔案時,可以由用戶端直接指定上傳到的組也可以由tracker進行排程選擇。一個分組的存儲伺服器通路壓力較大時,可以在該組增加存儲伺服器來擴充服務能力(縱向擴容)。當系統容量不足時,可以增加組來擴充存儲容量(橫向擴容)。

2.2.3 Storage狀态收集

Storage server會連接配接叢集中所有的Tracker server,定時向他們報告自己的狀态,包括磁盤剩餘空間、檔案同步狀況、檔案上傳下載下傳次數等統計資訊。

2.2.4 檔案上傳流程

FastDFS單機版部署

用戶端上傳檔案後存儲伺服器将檔案ID傳回給用戶端,此檔案ID用于以後通路該檔案的索引資訊。檔案索引資訊包括:組名,虛拟磁盤路徑,資料兩級目錄,檔案名。

FastDFS單機版部署

n 組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後有storage伺服器傳回,需要用戶端自行儲存。

n 虛拟磁盤路徑:storage配置的虛拟路徑,與磁盤選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。

n 資料兩級目錄:storage伺服器在每個虛拟磁盤路徑下建立的兩級目錄,用于存儲資料檔案。

n 檔案名:與檔案上傳時不同。是由存儲伺服器根據特定資訊生成,檔案名包含:源存儲伺服器IP位址、檔案建立時間戳、檔案大小、随機數和檔案拓展名等資訊。

2.2.5 檔案下載下傳流程

FastDFS單機版部署

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

比如請求下邊的檔案:

FastDFS單機版部署

1.通過組名tracker能夠很快的定位到用戶端需要通路的存儲伺服器組是group1,并選擇合适的存儲伺服器提供用戶端通路。

2.存儲伺服器根據“檔案存儲虛拟磁盤路徑”和“資料檔案兩級目錄”可以很快定位到檔案所在目錄,并根據檔案名找到用戶端需要通路的檔案。

3 FastDFS+Nginx實作檔案伺服器#

3.1 架構#

3.1.1 架構圖

FastDFS單機版部署

轉載來源:https://www.cnblogs.com/daleyzou/p/8988435.html

繼續閱讀