精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對比SeaweedFS與JuiceFS在設計與功能上的差異

OSC開源社區 ? 來源:Juicedata ? 2023-02-16 10:22 ? 次閱讀

SeaweedFS 是一款高效的分布式文件存儲系統,最早的設計原型參考了 Facebook 的 Haystack,具有快速讀寫小數據塊的能力。本文將通過對比 SeaweedFS 與 JuiceFS 在設計與功能上的差異,以幫助讀者進行更適合自己的選擇。

SeaweedFS 系統結構

SeaweedFS 由 3 部分組成,底層存儲文件的 Volume Server,用于管理集群的 Master Server,以及一個向上提供更多特性的 Filer 可選組件。

67f1a4b4-ad33-11ed-bfe3-dac502259ad0.png

Volume Server 與 Master Server

在系統運作上,Volume Server 與 Master Server 一并服務于文件的存儲。Volume Server 專注于數據的寫入與讀取,而 Master Server 則偏向是一個集群與 Volumes 的管理服務。

在讀寫數據時,SeaweedFS 的實現與 Haystack 相似,用戶創建的一個 Volume 即是一個大磁盤文件(下圖的 Superblock)。在此 Volume 中,用戶寫入的所有文件(下圖的 Needle)都會被合并到該大磁盤文件中。

在開始寫入數據之前,調用者需要向 SeaweedFS(Master Server)進行寫入申請,隨后 SeaweedFS 會根據當前的數據量返回一個 File ID(由 Volume ID 與 offset 組成),在寫入的過程中,一并被寫入的還有基礎的元數據信息(文件長度與 Chunk 等信息);

當寫入完成之后,調用者需要在一個外部系統(例如 MySQL)中對該文件與返回的 File ID 進行關聯保存。在讀取數據時,由于 File ID 已經包含了計算文件位置(偏移)的所有信息,因此可以高效地將文件的內容讀取出來。

681ad474-ad33-11ed-bfe3-dac502259ad0.png

Filer

在上述的底層存儲單元之上,SeaweedFS 提供了一個名為 Filer 的組件。通過向下對接 Volume Server 與 Master Server,對外提供豐富的功能與特性(如 POSIX 支持、WebDAV、S3 接口等)。與 JuiceFS 相同,Filer 也需要對接一個外部數據庫以保存元數據信息。

為了方便闡述,下文中所指的 SeaweedFS,皆包含了 Filer 組件。

JuiceFS 系統結構

6829b336-ad33-11ed-bfe3-dac502259ad0.png

JuiceFS 采用「數據」「元數據」分離存儲的架構,文件數據本身會被切分保存在對象存儲(如 Amazon S3)當中,而元數據則是會被保存在用戶自行選擇的數據庫里(如 Redis、MySQL)。通過共享同一個份數據庫與對象存儲,JuiceFS 實現了一個強一致性保證的分布式文件系統,同時還具有「POSIX 完全兼容」、「高性能」等諸多特性。

元數據對比

SeaweedFS 與 JuiceFS 都支持通過外部數據庫以存儲文件系統的元數據信息。在數據庫支持層面,SeaweedFS 支持多達24 種[1]數據庫。JuiceFS 對數據庫事務能力要求高(見下文),當前支持了 3 類共 10 種事務型數據庫。

原子性操作

為了保證所有元數據操作的原子性,JuiceFS 在實現層面需要使用有事務處理能力的數據庫。而 SeaweedFS僅在執行 rename 操作時啟用了部分數據庫(SQL、ArangoDB 和 TiKV)的事務, 對于數據庫的事務能力要求較低。同時,由于Seaweed FS 在 rename 操作中拷貝元數據時,未對原目錄或文件進行加鎖,可能會導致過程中更新的數據丟失。

變更日志(changelog)

SeaweedFS 會為所有的元數據操作生成變更日志,此日志可被進一步用于數據復制(見下文)、操作審計等功能,而 JuiceFS 則暫未實現此特性。

存儲對比

如前文所述,SeaweedFS 的數據存儲由 Volume Server + Master Server 實現,支持小數據塊的「合并存儲」、「糾刪碼」等特性。而 JuiceFS 的數據存儲則是依托于對象存儲服務服務,相關的特性也都由用戶選擇的對象存儲提供。

文件拆分

在存儲數據時,SeaweedFS 與 JuiceFS 都會將文件拆分成若干個小塊再持久化到底層的數據系統中。

SeaweedFS 將文件拆分成 8MB 的塊,對于超大文件(超過 8GB),它會將 Chunk 索引也保存到底層的數據系統中。

JuiceFS 則是先拆成 64MB 的 Chunk,再拆成 4MB 的 Object,通過內部一個 Slice 的概念對隨機寫、順序讀、重復寫等性能進行了優化。(詳情見讀取清求處理流程[2])

分層存儲

對于新創建的 Volume,SeaweedFS 會把數據存儲在本地,而對于較舊的 Volume,SeaweedFS 支持將他們上傳至云端以達到冷熱數據的分離[3]。在此方面,JuiceFS 則需要依賴外部的服務。

數據壓縮

JuiceFS 支持使用 LZ4 或者 ZStandard 來為所有寫入的數據進行壓縮,而 SeaweedFS 則是根據寫入文件的擴展名、文件類型等信息來選擇是否進行壓縮。

存儲加密

JuiceFS 支持傳輸中加密(encryption in transit)及靜態加密(encryption at rest),在用戶開啟了靜態加密時,需要用戶傳遞一個自行管理的密鑰,所有寫入的數據都會基于此密鑰進行數據的加密。詳情見 《數據加密[4]》。

SeaweedFS 同樣支持傳輸中加密與靜態加密。在開啟了數據加密后,所有寫入 Volume Server 的數據都會使用隨機的密鑰進行加密,而這些對應的隨機密鑰信息則由維護「metadata」「Filer」進行管理。

訪問協議

POSIX 兼容性

JuiceFS完全兼容 POSIX[5], 而 SeaweedFS 目前只實現了部分的 POSIX 兼容(「Issue 1558」[6]與Wiki[7]),功能還持續完善中。

S3 協議

JuiceFS 通過 MinIO S3 網關實現了S3 網關[8]的功能。它為 JuiceFS 中的文件提供跟 S3 兼容的 RESTful API,在不方便掛載的情況下能夠用 s3cmd、AWS CLI、MinIO Client(mc)等工具管理 JuiceFS 上存儲的文件。

SeaweedFS 當前支持了約 20 個 S3 API,覆蓋了常用的讀寫查刪等請求,對一些特定的請求(如 Read)還做了功能上的擴展,詳細見Amazon-S3-API[9]。

WebDAV 協議

JuiceFS 與 SeaweedFS 皆支持 WebDAV 協議。

HDFS 兼容性

JuiceFS完整兼容 HDFS API[10]。不僅兼容 Hadoop 2.x 和 Hadoop 3.x,還兼容 Hadoop 生態系統中的各種組件。SeaweedFS 則是提供了對 HDFS API 的基礎兼容[11],對于部分操作(如 turncate、concat、checksum 和擴展屬性等)則尚未支持。

CSI 驅動

JuiceFS[12]與SeaweedFS[13]皆提供了 「Kubernetes CSI Driver」 以幫助用戶在 Kubernetes 生態中使用對應的文件系統。

擴展功能

客戶端緩存

JuiceFS 有著多種客戶端緩存策略,涵蓋從元數據到數據緩存的各個部分,允許用戶根據自己的應用場景進行調優(詳情[14]),而 SeaweedFS 不具備客戶端緩存能力。

集群數據復制

對于多個集群之間的數據復制,SeaweedFS 支持「Active-Active」與「Active-Passive」兩種異步的復制模式,2 種模式都是通過傳遞 changelog 再應用的機制實現了不同集群數據間的一致性,對于每一條 changelog,其中會有一個簽名信息以保證同一個修改不會被循環多次。在集群節點數量超過 2 個節點的 Active-Active 模式下,SeaweedFS 的一些操作(如重命名目錄)會受到一些限制。

JuiceFS 尚未原生支持集群之間的數據同步功能,需要依賴元數據引擎和對象存儲自身的數據復制能力。

云上數據緩存

SeaweedFS 可以作為云上對象存儲的緩存來使用,支持通過命令手動預熱數據。對于緩存數據的修改,會異步同步到對象存儲中。JuiceFS 需要將文件分塊存儲到對象存儲中,尚不支持為對象存儲中已有的數據提供緩存加速。

回收站

JuiceFS 默認開啟回收站[15]功能,會自動將用戶刪除的文件移動到 JuiceFS 根目錄下的 .trash 目錄內,保留指定時間后才將數據真正清理。SeaweedFS 暫不支持此功能。

運維工具

JuiceFS 提供了 juciefs stats 以及 juicefs profile 兩種子命令,允許用戶實時查看當前或回放某一時間段的性能指標。同時,JuiceFS 還對外開發metrics[16]接口,用戶能夠方便地將監控數據接入到 Prometheus 與 Grafana 中。

SeaweedFS 則同時實現了Push 與 Pull[17]2種方式對接 Prometheus 與Grafana ,同時提供了weed shell[18]的交互式工具方便使用者進行一系列運維工作(如查看當前集群狀態、列舉文件列表等)。

其它

?在發布時間上,SeaweedFS 于 2015 年 4 月發布,目前累計 stars 為 16.4K,而 JuiceFS 于 2021 年 1 月發布,截止目前累計 7.3K stars。

?在項目上,JuiceFS 與 SeaweedFS 皆采用了對商用更友好的 Apache License 2.0,SeaweedFS 主要由 Chris Lu 個人進行維護,而 JuiceFS 則主要由 Juicedata 公司進行維護。

? JuiceFS 與 SeaweedFS 皆采用 Go 語言進行編寫。

對比清單

SeaweedFS JuiceFS
元數據 多引擎 多引擎
元數據操作原子性 未保證 通過數據庫事務保證
變更日志
數據存儲 包含 外部服務
糾刪碼 支持 依賴外部服務
數據合并 支持 依賴外部服務
文件拆分 8MB 64MB + 4MB
分層存儲 支持 依賴外部服務
數據壓縮 支持(基于擴展名) 支持(全局設置)
存儲加密 支持 支持
POSIX 兼容性 基本 完整
S3 協議 基本 基本
WebDAV 協議 支持 支持
HDFS 兼容性 基本 完整
CSI 驅動 支持 支持
客戶端緩存 不支持 支持
集群數據復制 雙向異步、多模式 不支持
云上數據緩存 支持(手動同步) 不支持
回收站 不支持 支持
運維工具 提供 提供
發布時間 2015.4 2021.1
主要維護者 個人(Chris Lu) 公司(Juicedata Inc)
語言 Go Go
開源協議 Apache License 2.0 Apache License 2.0





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲系統
    +關注

    關注

    2

    文章

    405

    瀏覽量

    40842
  • volume
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7835
  • MySQL
    +關注

    關注

    1

    文章

    802

    瀏覽量

    26452
  • Posix
    +關注

    關注

    0

    文章

    36

    瀏覽量

    9488

原文標題:淺析SeaweedFS與JuiceFS架構異同

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    三極管和MOS管功能上有什么區別?

    MOS管和三極管功能上有什么區別?這兩種元件本身就可以看作一個基本單元,一個獨立的器件,就算拆開外殼,用肉眼也找不出什么差別,從工作原理上理解又謷牙詰屈,這次從一個簡單的觸摸燈電路來感受一下二者功能上的區別。
    發表于 02-21 09:00 ?568次閱讀

    No Output是什么意思? Generation與Compare功能上有什么區別?

    No Output是什么意思? Generation 與 Compare功能上有什么區別?
    發表于 04-07 07:19

    哪里可找到智能門鎖功能上開發的公司

    本帖最后由 gk320830 于 2015-3-4 22:59 編輯 那里可找到智能門鎖功能上開發的公司
    發表于 09-01 23:10

    LG可卷曲電視畫質以及功能上有什么改變嗎?

    柔性屏能做什么?LG可卷曲電視有什么特點?LG可卷曲電視畫質以及功能上有什么改變嗎?
    發表于 06-17 11:54

    請問交流伺服電機和無刷直流伺服電機功能上有什么區別?

    伺服系統是什么?伺服系統的主要作用有哪些?伺服系統主要分為哪幾類?對伺服系統的基本要求有哪些? 交流伺服電機和無刷直流伺服電機功能上有什么區別?
    發表于 07-13 08:15

    請問交流伺服電機和無刷直流伺服電機功能上有什么區別?

    伺服電機和步進電機的區別是什么?請問交流伺服電機和無刷直流伺服電機功能上有什么區別?
    發表于 10-08 08:40

    請問交流伺服電機和無刷直流伺服電機功能上有什么區別?

    什么是伺服電機?有幾種類型?工作特點是什么?請問交流伺服電機和無刷直流伺服電機功能上有什么區別?
    發表于 10-13 06:01

    怎樣基于單片機的計算器功能上加入時鐘模式呢

    怎樣基于單片機的計算器功能上加入時鐘模式呢?
    發表于 02-24 07:05

    請問一下proteus和protel軟件仿真功能上的差別在什么地方?

    請問一下proteus和protel軟件仿真功能上的差別在什么地方?就是說他們仿真上有沒有各自的什么側重點?哪個的功能強些?
    發表于 04-26 15:43

    RS232與RS485功能上的區別

    RS232與RS485功能上的區別介紹。
    發表于 11-15 11:19 ?1410次閱讀

    8位和32位MCU功能上有什么區別?如何選擇?

    該如何對8位以及32位的MCU進行選擇?8位和32位MCU功能上仍是互為輔助、各有千秋,這其中的訣竅就在于,需先了解什么樣的應用適合什么樣的MCU架構。
    的頭像 發表于 08-16 17:37 ?2.2w次閱讀

    汽車 LED 前燈形式和功能上的演變

    汽車 LED 前燈形式和功能上的演變
    發表于 03-20 08:04 ?9次下載
    汽車 LED 前燈<b class='flag-5'>在</b>形式和<b class='flag-5'>功能上</b>的演變

    負載常見的三種形式屬性和功能上有什么不同?

    負載常見的三種形式屬性和功能上有什么不同?負載常見的三種形式:阻性負載、感性負載、容性負載,三者在其屬性、電壓/電流關系和功能上有所不同,下面進行詳細分析。1、不同的屬性:直流和交流純阻性負載產生
    的頭像 發表于 10-11 18:10 ?3618次閱讀
    負載常見的三種形式<b class='flag-5'>在</b>屬性和<b class='flag-5'>功能上</b>有什么不同?

    負載常見的三種形式屬性和功能上有什么不同?

    負載常見的三種形式屬性和功能上有什么不同? 計算機科學中,負載(Load)是指一個系統或設備正在承受的工作量或任務量。常見的負載形式主要包括計算負載、網絡負載和存儲負載。這三種形式
    的頭像 發表于 11-13 16:04 ?1423次閱讀

    6芯M16公頭汽車功能上的應用

      德索工程師說道6芯M16公頭汽車功能上的應用非常廣泛,其多芯設計和優良的電氣性能使得它能夠滿足汽車系統中對多通道、多參數監測的需求,提高系統的集成度和工作效率。以下是關于6芯M16公頭汽車
    的頭像 發表于 06-21 13:49 ?271次閱讀
    6芯M16公頭<b class='flag-5'>在</b>汽車<b class='flag-5'>功能上</b>的應用