如何選型分佈式文件系統

選型分佈式文件系統

目前篩選出兩個一樣是 GoLang 實現的文件系統,今天仔細調研一下html

minio seaweedFS
它最適合存儲非結構化數據,如照片,視頻,日誌文件,備份和容器/ VM映像。對象的大小能夠從幾KB到最大5TB。 SeaweedFS是一個簡單且高度可擴展的分佈式文件系統,兩個目標: 一、存儲數十億的文件! 二、查看檔案快!

minio、seaweedFS 生態粗略對比

matvQS.md.png
matvQS.md.png

minio 單機模式 快速上手

mat4MD.png
mat4MD.png

注:此集羣爲單機多租戶,非 「swarm」或「k8s」意義上的集羣git

matIqH.png
matIqH.png

登陸須要的 公鑰、私鑰在 docker-compose 查看登陸祕鑰github

  • 系統限制佔用率
matWRK.png
matWRK.png

minio 一些特性總結一覽

  • minio 集羣要求:全部節點硬盤總和:最小4塊盤 最多16塊盤(受限糾刪碼)、n/2可讀 n/2+1可寫,eg:4個節點8快盤,宕掉一半(n/2) -依舊可讀,5塊(n/2+1)-才能寫,<4塊讀不了。
  • 可創建無限個桶,每一個桶無限對象,每一個對象最大5T,每次上傳最多批量 10k 個對象,每次請求最多 1k 個對象
  • minio事件通知原生支持:es**「不過僅支持 > 5.0」**、AMQP、MQTT、Redis、NATS、kafka、Webhooks
  • 由於 「糾刪碼」的緣由 最大隻支持 16塊硬盤,限制了咱們的存貯量,因此 minio 提供了一個 「超大桶」支持 PB 級別,原理大概是擴展多個糾刪碼,提供了『單機』擴展和『分佈式』擴展方案

Minio 接入現有應用的分析

  • 能夠考慮將 COMPANYID 做爲 「桶」... 圖片、文檔、html 做爲 「對象」web

  • 簡單跑了一下,可是至少是 JDK8+ ,7無法編譯(最新的jar是8+)docker

  • 可直接配合 Nginxopenresty 負載安全

這裏要注意 ! 若是 openResty 直接代理 minio 的 9000 端口,那麼須要保證這個桶是公開的,不然須要寫 LUA 腳本作驗證 「雖然目前也沒有存儲什麼敏感數據,可是這點早晚要考慮」異步

我使用 java client + 私鑰 測試的,讀對象只須要「桶」「對象名」兩個參數便可。分佈式

matfxO.png
matfxO.png

成功上傳

matxsg.md.png
matxsg.md.png

web 端查看結果

mat5se.png
mat5se.png

minio 客戶端 :mc 能夠很是可靠的快速的大規模遷移數據

下章整理髮布 《分佈式文件系統遷移的經驗》

SeaweedFS

相比之下沒有網頁上傳的功能,測試同窗就沒法爲研發分擔部分壓力。

matTZd.png
matTZd.png

SeaweedFs 的 wiki 分幾塊:

restFull API、文件管理、配置、異步複製、操做(備份、k8s部署)、安全

總結

和 SeaweedFs 共同對比,沒有發現什麼剛需的功能點必需要選擇 SeaweedFs 的,從「社區」「開發實力」 感受仍是 MINIO 從易用性來講應該比 SeaweedFs 更適合咱們,不管是服務仍是工具也更全面SeaweedFs 雖然是國人寫的項目,但對國人也沒有很友好,Issues 處理及時率較低,不管是企業使用,仍是我的使用,我都偏向於推薦 Minio。

本文連接:github.com/pkwenda/Blo…

相關文章
相關標籤/搜索