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

来源:http://www.cnblogs.com/depyuka/archive/2017/02/17/6411048.html
-Advertisement-
Play Games

需求按優先順序順序如下: 1)存放3TB以上中小型文件,圖片為主,平均在500~700k,一般在1M以內。 2)要集群化,支持負載均衡,高可用高性能。有大企業使用背書最好。 3)提供Java程式上傳文件的手段。Java代碼可以在Windows環境下調試。 4)必須開源,作者能保持更新。 5)有運維監控 ...


需求按優先順序順序如下:

1)存放3TB以上中小型文件,圖片為主,平均在500~700k,一般在1M以內。

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

3)提供Java程式上傳文件的手段。Java代碼可以在Windows環境下調試。

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

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

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

 

看了一大堆資料,沒完美的解決方案,稍為符合的候選者只有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 方式存放。

可以上傳到指定目錄。所以研發/測試環境可以共用同一臺文件伺服器。

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

集群由多台master與多台volume伺服器組成。volume之間的複製行為由複製策略所決定。

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

PB級存儲方案

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

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

語言SDK:實際所有SDK上都是通過REST介面訪問。有Java版本。

REST介面:volumefiler伺服器提供不同層級的介面,volume是key-value方式的,filer是類似目錄的方式。

http讀文件:filer伺服器提供

 

 

 

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 註:下載本文提到的完整代碼示例請訪問:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angular2,以及與Angular2的Token base身份認證 Angular2是對Angular1 ...
  • 本文版權歸博客園和作者吳雙本人共同所有,轉載和爬蟲請註明原文地址 www.cnblogs.com/tdws 相信瞭解了MS Identity認證體系的一定知道UserManager的作用,他是整個體系中的調度者,他定義了一套用戶行為來幫助我們管理用戶信息,角色信息,處理密碼等。而其實現則在UserS ...
  • 鏈接:http://china.nba.com/playerindex/ 所需獲取JSON數據頁面鏈接:http://china.nba.com/static/data/league/playerlist.json 數據來源:NBA中國官網 庫: requests 用於解析頁面文本數據 pandas ...
  • 作為一名網路警察,你的任務是監視電子郵件,看其中是否有一些敏感的關鍵詞。不過,有些狡猾的犯罪嫌疑人會改變某些單詞的字母順序,以逃避檢查。請編寫一個程式,發現這種調整過順序的關鍵詞。程式的輸入有兩行,第一行是關鍵詞列表,第二行是待檢查的句子。程式的輸出為在該句子中所找到的經過順序調整的關鍵詞。(單詞全 ...
  • 轉載請標明出處: "http://www.cnblogs.com/why168888/p/6411664.html" 本文出自: "【Edwin博客園】" python進階介紹(進階1) 1. python基礎回顧 1. 安裝Python環境 2. 變數和數據類型:Python內置的基礎類型 3. ...
  • 內部類:在類中定義的類,外層的叫外部類、外圍類。 書中說P191,如果想在外部類的非靜態方法之外的任意位置創建某個內部類對象,那麼必須像在main方法(靜態方法)中那樣,具體地指明這個對象的類型:OuterClassName.InnerClassName。(在外部類非靜態方法中可以直接使用Inner ...
  • 分情況討論: 非const引用非const: 非同類型不能引用 非const引用const: 不能通過編譯。因為要引用,說明你要改值。。 const引用非const: 第一種情況:const引用與非const同類型。 很奇怪,這是可以通過編譯的!而且,const能變化值!(原因是引用並沒有綁定臨時值 ...
  • 本篇隨筆主要描述的是我閱讀 HashMap 源碼期間的對於 HashMap 的一些實現上的個人理解,用於個人備忘,有不對的地方,請指出~ 接下來會從以下幾個方面介紹 HashMap 源碼相關知識: 1、HashMap 存儲結構 2、HashMap 各常量、成員變數作用 3、HashMap 幾種構造方 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...