fastdfs 清晰簡介 有用
是什麼?
FastDFS是一個輕量級分佈式文件系統。
能幹嘛?
對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等。
在Linux上的安裝連接
《FastDFS在Linux上的安裝》
相關概念
一、網絡拓撲圖
對上圖的基本瞭解,client是客戶端,tracker和storage是FastDFS系統的倆個角色。
二、詳細瞭解tracker和storage
Storage
是什麼?
存儲服務器
作用?
主要作用是文件存儲
相關介紹
1、如上圖,storage做集羣時,以組[group]爲單位(也可以將一個組看成一個卷[volume],不同材料稱呼不同)。集羣的總容量爲所有組的總和。
2、 一個卷內storage server之間相互通信,文件進行同步,保證組內storage完全一致,所以一 個卷的容量以最小的服務器爲準。不同的卷之間相互不通信。
3、當某個卷的壓力較大時可以添加storage server(縱向擴展),如果系統容量不夠可以添加捲(橫向擴展)。
Tracker
是什麼
調度服務器
作用?
負載均衡和調度,管理所有的卷[volume]包括其中的storage server
相關介紹
1、每個storage在啓動後會連接Tracker,告知自己所屬的group等信息,並保持週期性的心跳,tracker根據storage的心跳信息,建立group==>[storage server list]的映射表。
2、Tracker的集羣中所有的tracker是平等的,客戶端請求tracker server採用輪詢的方法,如果請求的tracker不能提供服務就換另一個tracker。
工作流程
一、文件上傳
流程圖
流程說明
1、選擇tracker server:當集羣中不止一個tracker server時,由於tracker之間是完全對等的關係,客戶端 在upload文件時可以任意選擇一個trakcer。
2、選擇存儲的group:當tracker接收到upload file的請求時,會爲該文件分配一個可以存儲該文件的 group。
支持如下選擇group的規則:
(1) Round robin,所有的group間輪詢
(2) Specified group,指定某一個確定的group
(3) Load balance,剩餘存儲空間多多group優先
3、選擇storage server:當選定group後,tracker會在group內選擇一個storage server給客戶端。
支持如下選擇storage的規則:
(1) Round robin,在group內的所有storage間輪詢
(2) First server ordered by ip,按ip排序
(3) First server ordered by priority,按優先級排序(優先級在storage上配置)
4、選擇storage path:當分配好storage server後,客戶端將向storage發送寫文件請求,storage將會爲 文件分配一個數據存儲目錄(安裝博客中的圖片存儲配置的路徑是存儲目錄)
支持如下規則:
(1) Round robin,多個存儲目錄間輪詢
(2) 剩餘存儲空間最多的優先
5、生成Fileid:選定存儲目錄之後,storage會爲文件生一個Fileid。
規則:
由storage server ip、文件創建時間、文件大小、文件crc32和一個隨機數拼接而成,然後將這個二 進制串進行base64編碼,轉換爲可打印的字符串。
6、選擇兩級目錄:每個存儲目錄下有兩級256*256的子目錄,storage會按文件fileid進行兩次hash(猜 測),路由到其中一個子目錄,然後將文件以fileid爲文件名存儲到該子目錄下。
7、客戶端upload file成功後,會拿到一個storage生成的文件名,接下來客戶端根據這個文件名即可訪問 到該文件。
二、文件下載
流程圖:
流程說明:
1、選擇tracker server:和upload file一樣,在download file時隨機選擇tracker server。
2、選擇group:tracker發送download請求給某個tracker,必須帶上文件名信息,tracke從文件名中解析 出文件的group、大小、創建時間等信息,根據group信息選擇對應的group
3、選擇storage server:從group中選擇一個storage用來服務讀請求。由於group內的文件同步時在後臺 異步進行的,所以有可能出現在讀到時候,文件還沒有同步到某些storage server上,爲了儘量避免訪問到 這樣的storage,tracker按照一定的規則選擇group內可讀的storage。