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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...