FastFDS 分佈式文件系統(圖片,靜態資源之類的)




用FastDFS一步步搭建文件管理系統

https://www.cnblogs.com/chiangchou/p/fastdfs.html






FastDFS是由C語言編寫,輕量級開源的分佈式文件系統,在跨境通等B2C商城的項目之中作爲圖片服務器使用,用來存儲商家的Logo,商品的圖片等圖片資源,github地址: https://github.com/happyfish100/fastdfs

FastDFS中有三個角色.Tracker Storage Client.見名知意

Tracker:
翻譯過來是追蹤者,本身並不是作爲存儲的角色,而是作爲調度者的角色而存在的,也有負載均衡的理念在裏面.Tracker管理所有的Storage和Group.

Storage:
Storage是存儲的角色,每個Storage啓動時會連接Tracker告知自身所屬的Group並且報紙週期心跳Tracker則以此來建立Group到Storage的映射信息.同一個Group中的Storage中內容相同,互爲備份.Group中Storage的容量以當前組中最小的爲準,所以配置的時候要注意最好是設置成相同的大小,避免空間浪費.

Client:
這個就不都說了,一看名字就知道是客戶端.和Redis之類的中間件一樣都需要一個客戶端來訪問.

說了那麼多 畫一下FastDFS的架構圖吧.FastDFS架構圖

如圖所示Client訪問Tracker,請求對應的文件地址,Tracker中包含了Storage所屬的分組信息,並且通過對應的分組去訪問分組中的某個Storage獲取到對應的文件信息.
Tracker和Storage都可以搭建集羣,這樣帶來的好處是,可以避免單點故障,讓服務可以可靠地提供.Group衆多的情況下可以提升系統的QPS.特別適合中小型文件的存儲,一般在4KB到500MB之間.

FastDFS對外提供文件的訪問接口,如upload,download,append,delete等,通過客戶端庫的方式提供.

文件上傳概述:
文件上傳分爲選擇Tracker,選擇Group,選擇Storage,生成Field,選擇兩級目錄,生成文件名這麼幾個步驟.現在互聯網項目,爲了保證服務可靠性,都會搭建集羣,所以按照這種方式來總結.

選擇Tracker:
Tracker集羣中所有的Tracker地位都是對等的,客戶端上傳文件時會任意選擇一個Tracker.

選擇Group:
Tracker收到上傳請求之後,會分配一個Group來存儲文件,提供的規則有:輪詢所有的Group,指定一個Group,負載均衡(剩餘空間多的優先)

選擇Storage:
分配好Group之後,Tracker會在Group中選擇一個Storage,提供的規則有:輪詢所有的Storage,根據ip排序,根據Storage優先級排序. 在選定好了Storage之後客戶端向Storage發送寫入文件請求,Storage爲文件分配一個數據存儲目錄,提供的規則有:存儲目錄輪詢,負載均衡

生成Field:
選擇好存儲目錄之後,Storage爲文件分配一個Field,由Storage的ip + 文件創建的時間戳 + 文件大小 + 文件crc32校驗後+一個隨機數拼接而成.再將這個二進制串進行Base64編碼轉換成String.

選擇兩級目錄:生成field之後,每個存儲目錄下會有兩級256*256的子目錄,Storage會按照field進行第一次hash,路由到第一級子目錄,再進行第二次hash,存儲到對應的子目錄下.

生成文件名:
當文件存儲完成後,會爲其創建一個文件名,創建規則爲:Group + 存儲目錄 + 兩級子目錄 + field + 文件拓展名拼接而成
例如:
group12/M00/00/0F/xjkRbWxx1T0BBDDTTDAuSQUghg128824.jpg

文件下載和訪問只需要按照這個路徑即可..




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章