天天看點

FastDFS-00介紹

相關網站
  • 軟體包位址:
    https://sourceforge.net/projects/fastdfs/files/
  • 源碼包位址:
    https://github.com/happyfish100/fastdfs
簡介
  • 輕量級的開源分布式檔案系統
  • 主要解決大容量的檔案存儲和高并發通路的問題,檔案存取時實作了負載均衡
  • 實作軟體方式的RAID,可以使用廉價的IDE硬碟進行存儲
  • 支援存儲伺服器線上擴容
  • 支援相同内容的檔案隻儲存一份,節約磁盤空間
  • 隻能通過Client API通路,不支援POSIX通路方式
  • 特别适合大中型網站使用,用來存儲資源檔案(如:圖檔、文檔、音頻、視訊等等)
  • 開發語言C
架構圖
FastDFS-00介紹
相關術語
  • Tracker Server:跟蹤伺服器,主要做排程工作,在通路上起負載均衡的作用。記錄storage server的狀态,是連接配接Client和Storage server的樞紐。
  • Storage Server:存儲伺服器,檔案和meta data都儲存到存儲伺服器上
  • group:組,也可稱為卷。同組内伺服器上的檔案是完全相同的
  • 檔案辨別:包括兩部分:組名和檔案名(包含路徑)
  • meta data:檔案相關屬性,鍵值對(Key Value Pair)方式,如:width=1024,heigth=768
同步機制
  • 同一組内的storage server之間是對等的,檔案上傳、删除等操作可以在任意一台storage server上進行
  • 檔案同步隻在同組内的storage server之間進行,采用push方式,即源伺服器同步給目标伺服器
  • 源頭資料才需要同步,備份資料不需要再次同步,否則就構成環路
  • 上述第二條規則有個例外,就是新增加一台storage server時,由已有的一台storage server将已有的所有資料(包括源頭資料和備份資料)同步給該新增伺服器
通信協定
  • 協定包由兩部分組成:header和body
  • header共10位元組,格式如下:

    8 bytes body length

    1 byte command

    1 byte status

  • body資料包格式由取決于具體的指令,body可以為空
流程圖
  • 上傳檔案流程圖
    FastDFS-00介紹

    1. client詢問tracker上傳到的storage,不需要附加參數

    2. tracker傳回一台可用的storage

    3. client直接和storage通訊完成檔案上傳

  • 下載下傳檔案流程圖
    FastDFS-00介紹

    1. client詢問tracker下載下傳檔案的storage,參數為檔案辨別(組名和檔案名)

    2. tracker傳回一台可用的storage

    3. client直接和storage通訊完成檔案下載下傳

運作目錄結構
  • tracker server
    ${base_path}    
    |__data    
    |     |__storage_groups.dat:存儲分組資訊
        |     |__storage_servers.dat:存儲伺服器清單
    |__logs          
    |__trackerd.log:tracker server日志檔案 
               
  • storage server
    ${base_path}    
    |__data    
    |     |__.data_init_flag:目前storage server初始化資訊   
    |     |__storage_stat.dat:目前storage server統計資訊    
    |     |__sync:存放資料同步相關檔案    
    |     |     |__binlog.index:目前的binlog檔案索引号    
    |     |     |__binlog.###:存放更新操作記錄(日志)    
    |     |     |__${ip_addr}_${port}.mark:存放同步的完成情況    
    |     |    
    |     |__一級目錄:256個存放資料檔案的目錄,如:00, 1F    
    |           |__二級目錄:256個存放資料檔案的目錄    
    |__logs          
    |__storaged.log:storage server日志檔案 
    
               

繼續閱讀