DFS 分佈式文件系統 選型筆記

需求按優先級順序以下:html

1)存放3TB以上中小型文件,圖片爲主,平均在500~700k,通常在1M之內。java

2)要集羣化,支持負載均衡,高可用高性能。有大企業使用背書最好。nginx

3)提供Java程序上傳文件的手段。Java代碼能夠在Windows環境下調試。git

4)必須開源,做者能保持更新。github

5)有運維監控手段,能快速定位出問題的服務器。算法

6)(加分項)新增存儲服務器時,不須要更改Nginx負載均衡和Java程序的配置。docker

 

看了一大堆資料,沒完美的解決方案,稍爲符合的候選者只有3個:瀏覽器

框架 簡介 文件存放方式 支持高可用 容量擴展手段 瀏覽器 gzip 支持 瀏覽器端緩存 程序訪問
FastDFS

我知道國內不少創業公司都在用,本身也用了一段時間,比較穩定,網友寫了很多中文資料,但官方几乎沒有文檔。建議用fastdfs-nginx-module吐流,而不是反向代理直接訪問某個storage服務器。緩存

運維方面:出現不能訪問時,要查分佈在多個地方的日誌(nginx > nginx fastdfs module >storage > tracker),不熟悉的人不太好查緣由。服務器

主頁:https://github.com/happyfish100/fastdfs

部署方式說明:http://blog.csdn.net/xifeijian/article/details/38567839

Docker:https://hub.docker.com/r/hhland/fastdfs/ ,https://hub.docker.com/r/season/fastdfs/

一個不錯的參考方案:https://github.com/daniellitoc/xultimate-resource

key-value 方式存放。

沒有上傳目錄的概念,研發/測試環境須要獨立部署自用的文件服務器。

不支持文件列表,不支持FUSE

集羣可由多臺Tracker與多臺Storage服務器組成。

多臺tracker之間沒有集羣,由客戶端解決failover問題。

storage服務器以group爲單位組織,同一group下的不一樣storage服務器文件徹底相同,主要用於負載均衡和容錯,相似硬盤RAID10的方案。

不支持多機房。

TB級存儲方案

1.同一storage服務器能夠在配置中指定多個store_path來增長硬盤。

2.支持以group爲單位增長服務器來擴展容量。

3.總容量爲全部group加起來

由反向代理臨時壓縮 支持If-Modified-Since

語言SDK:經過專用SDK,支持Java。

REST接口:無

http讀文件:可經過storage服務器的http服務,也能夠經過裝了fastdfs-nginx-module的nginx提供。建議使用後者

百度BFS
(待研究)

功能強大,但網上文檔很是少,百度搜索未發現使用經驗文章。介紹說百度整個公司都在用。

主頁:https://github.com/baidu/bfs

Docker:提供Dockerfile,但沒放到Docker Hub。

目錄方式存放。

支持文件列表,支持FUSE

集羣由NameServer,MetaServer,ChunkServer組成。

NameServer使用raft算法,依賴Neuxs或Zookeeper選出Leader,失效時自動重選Leader

ChuckServer的高可用:待分析

對多機房,多服務器支持最好。

PB級存儲方案

 

 待分析  待分析

語言SDK:經過專用SDK訪問,不支持Java,但能夠經過FUSE橋接實現,Windows下估計須要用Cygwin才能訪問。

REST接口:無

http讀文件:NameServer提供訪問。

seaweedfs

功能強大,彷佛很是有潛力,中文資料少。Doc中說"中通快遞"在用。

因爲沒用過,運維很差說是否方便。

主頁:https://github.com/chrislusf/seaweedfs

部署與使用說明:http://blog.chinaunix.net/uid-25057421-id-5676348.html

官方Docker:https://hub.docker.com/r/chrislusf/seaweedfs/

key-value 方式存放。

http://www.javashuo.com/tag/filer能夠上傳到指定目錄。但因爲java的sdk都是直連master與volume,因此研發/測試環境不能共用同一臺文件服務器。

http://www.javashuo.com/tag/filer支持文件列表,但不支持FUSE

集羣由多臺http://www.javashuo.com/tag/master與多臺http://www.javashuo.com/tag/Volume服務器組成。volume之間的複製行爲由複製策略所決定。

支持多機房,多種複製策略。

PB級存儲方案

增長volume服務器能增長容量,但有效增長多少與複製策略有關。

支持預壓縮成gzip格式文件,直接吐流成gzip 支持etag,If-Modified-Since等

語言SDK:實際全部SDK上都是經過REST接口訪問。有Java版本。

REST接口:http://www.javashuo.com/tag/Volumehttp://www.javashuo.com/tag/filer服務器提供不一樣層級的接口,volume是key-value方式的,filer是相似目錄的方式。

http讀文件:http://www.javashuo.com/tag/filer服務器提供

 

 

 

綜合來講,想簡單易上手,seaweedfs的生態圈比較齊全,並且做者一直在更新。FastDFS也是不錯的選擇。

相關文章
相關標籤/搜索