第2-1-1章 FastDFS分布式文件服務背景及系統架構介紹( 三 )


在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成后,系統自動將新增服務器切換到線上提供服務 。當存儲空間不足或即將耗盡時,可以動態添加卷 。只需要增加一臺或多臺服務器 , 并將它們配置為一個新的卷,這樣就擴大了存儲系統的容量 。
采用分組存儲方式的好處是靈活、可控性較強 。比如上傳文件時,可以由客戶端直接指定上傳到的組也可以由tracker進行調度選擇 。一個分組的存儲服務器訪問壓力較大時 , 可以在該組增加存儲服務器來擴充服務能力(縱向擴容) 。當系統容量不足時,可以增加組來擴充存儲容量(橫向擴容) 。
2.3 Storage狀態收集Storage server會連接集群中所有的Tracker server,定時向他們報告自己的狀態,包括磁盤剩余空間、文件同步狀況、文件上傳下載次數等統計信息 。
2.4 FastDFS的上傳過程FastDFS向使用者提供基本文件訪問接口,比如upload、download、append、delete等,以客戶端庫的方式提供給用戶使用 。
【第2-1-1章 FastDFS分布式文件服務背景及系統架構介紹】Storage Server會定期的向Tracker Server發送自己的存儲信息 。當Tracker Server Cluster中的Tracker Server不止一個時,各個Tracker之間的關系是對等的 , 所以客戶端上傳時可以選擇任意一個Tracker 。
當Tracker收到客戶端上傳文件的請求時,會為該文件分配一個可以存儲文件的group,當選定了group后就要決定給客戶端分配group中的哪一個storage server 。當分配好storage server后,客戶端向storage發送寫文件請求,storage將會為文件分配一個數據存儲目錄 。然后為文件分配一個fileid,最后根據以上的信息生成文件名存儲文件 。

第2-1-1章 FastDFS分布式文件服務背景及系統架構介紹

文章插圖
客戶端上傳文件后存儲服務器將文件ID返回給客戶端,此文件ID用于以后訪問該文件的索引信息 。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄 , 文件名 。
  • 組名:文件上傳后所在的storage組名稱,在文件上傳成功后有storage服務器返回,需要客戶端自行保存 。
  • 虛擬磁盤路徑:storage配置的虛擬路徑 , 與磁盤選項store_path*對應 。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推 。
  • 數據兩級目錄:storage服務器在每個虛擬磁盤路徑下創建的兩級目錄,用于存儲數據文件 。
  • 文件名:與文件上傳時不同 。是由存儲服務器根據特定信息生成,文件名包含:源存儲服務器IP地址、文件創建時間戳、文件大小、隨機數和文件拓展名等信息 。
2.5 FastDFS的文件同步寫文件時,客戶端將文件寫至group內一個storage server即認為寫文件成功 , storage server寫完文件后,會由后臺線程將文件同步至同group內其他的storage server 。
每個storage寫文件后,同時會寫一份binlog,binlog里不包含文件數據,只包含文件名等元信息,這份binlog用于后臺同步,storage會記錄向group內其他storage同步的進度 , 以便重啟后能接上次的進度繼續同步;進度以時間戳的方式進行記錄 , 所以最好能保證集群內所有server的時鐘保持同步 。
storage的同步進度會作為元數據的一部分匯報到tracker上,tracke在選擇讀storage的時候會以同步進度作為參考 。
2.6 FastDFS的文件下載客戶端uploadfile成功后,會拿到一個storage生成的文件名,接下來客戶端根據這個文件名即可訪問到該文件 。
第2-1-1章 FastDFS分布式文件服務背景及系統架構介紹

文章插圖
跟upload file一樣 , 在downloadfile時客戶端可以選擇任意tracker server 。tracker發送download請求給某個tracker,必須帶上文件名信息,tracke從文件名中解析出文件的group、大小、創建時間等信息 , 然后為該請求選擇一個storage用來服務讀請求 。tracker根據請求的文件路徑即文件ID 來快速定義文件 。
比如請求下邊的文件:
group1/M00/02/44/Swtdssdsdfsdf.txt
  1. 通過組名tracker能夠很快的定位到客戶端需要訪問的存儲服務器組是group1 , 并選擇合適的存儲服務器提供客戶端訪問 。
  2. 存儲服務器根據“文件存儲虛擬磁盤路徑”和“數據文件兩級目錄”可以很快定位到文件所在目錄,并根據文件名找到客戶端需要訪問的文件 。

第2-1-1章 FastDFS分布式文件服務背景及系統架構介紹

文章插圖

推薦閱讀