006_FastDFS文件上传
1. 文件上傳流程圖
2. 選擇tracker server: 當集群中不止一個tracker server時, 由于tracker之間是完全對等的關系, 客戶端在upload文件時可以任意選擇一個trakcer。
3. 選擇存儲的group: 當tracker接收到upload file的請求時, 會為該文件分配一個可以存儲該文件的group。支持如下選擇group的規則:
3.1.?Round robin, 所有的group間輪詢。
3.2. Specified group, 指定某一個確定的group。
3.3. Load balance, 剩余存儲空間多的group優先。
4. 選擇storage server: 當選定group后, tracker會在group內選擇一個storage server給客戶端。支持如下選擇storage的規則:
4.1. Round robin, 在group內的所有storage間輪詢。
4.2. First server ordered by ip, 按ip排序。
4.3. First server ordered by priority, 按優先級排序(優先級在storage上配置)。
5. 選擇storage path: 當分配好storage server后, 客戶端將向storage發送寫文件請求, storage將會為文件分配一個數據存儲目錄, 支持如下規則:
5.1. Round robin,多個存儲目錄間輪詢。
5.2. 剩余存儲空間最多的優先。
6. 生成Fileid: 選定存儲目錄之后, storage會為文件生一個Fileid。規則:
6.1. 由storage server ip、文件創建時間、文件大小、文件crc32和一個隨機數拼接而成, 然后將這個二進制串進行base64編碼, 轉換為可打印的字符串。
7. 選擇兩級目錄: 每個存儲目錄下有兩級256*256的子目錄,storage會按文件fileid進行兩次hash(猜測), 路由到其中一個子目錄, 然后將文件以fileid為文件名存儲到該子目錄下。
8. 客戶端upload file成功后, 會拿到一個storage生成的文件名, 接下來客戶端根據這個文件名即可訪問到該文件。
總結
以上是生活随笔為你收集整理的006_FastDFS文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 005_FastDFS分布式nginx访
- 下一篇: 007_FastDFS文件下载流程
