1.什么是FastDFS
FastDFS(Fast Distributed file system)是用c語言編寫的一款開源的分布式文件系統(tǒng)。FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、橫向擴(kuò)展等機制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。
2.FastDFS架構(gòu)
FastDFS架構(gòu)包括 Tracker server和Storage server??蛻舳苏埱骉racker server進(jìn)行文件上傳、下載,通過Tracker server調(diào)度最終由Storage server完成文件上傳和下載。
Tracker server作用是負(fù)載均衡和調(diào)度,通過Tracker server在文件上傳時可以根據(jù)一些策略找到Storage server提供文件上傳服務(wù)??梢詫racker稱為追蹤服務(wù)器或調(diào)度服務(wù)器。
Storage server作用是文件存儲,客戶端上傳的文件最終存儲在Storage服務(wù)器上,Storage server沒有實現(xiàn)自己的文件系統(tǒng)而是利用操作系統(tǒng)的文件系統(tǒng)來管理文件??梢詫torage稱為存儲服務(wù)器。
如下圖:

Tracker 管理集群,收集信息,處理信息,為了保證高可用,可以搭建集群。
Storage 保存文件,分為很多組,組和組之間的數(shù)據(jù)不一樣,組內(nèi)成員數(shù)據(jù)是一樣的,保證數(shù)據(jù)的高可用,可以增加組,達(dá)到擴(kuò)容的效果。
3.文件上傳流程
文件上傳流程如下圖(時序圖):

客戶端上傳文件后存儲服務(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ù)文件。兩級目錄的范圍都是 00~FF
- 文件名:與文件上傳時不同。是由存儲服務(wù)器根據(jù)特定信息生成,文件名包含:源存儲服務(wù)器IP地址、文件創(chuàng)建時間戳、文件大小、隨機數(shù)和文件拓展名等信息。
4.文件下載流程
文件下載流程如下圖:

5.架構(gòu)圖
