云原生分布式文件系統(tǒng)JuiceFS開源了

作者注:JuiceFS 的服務(wù)端和客戶端完全使用 Golang 編寫,同時(shí)為了更精細(xì)化的管理內(nèi)存,我們沒有使用 Golang 的內(nèi)存模型,手工控制,避免 GC。后續(xù)會寫專門的文章來分享我們在 Golang 多個(gè)角度的技術(shù)實(shí)踐。
我們很激動地宣布,將經(jīng)過 4 年持續(xù)迭代和累計(jì)幾千萬小時(shí)線上考驗(yàn)的 JuiceFS 開源了!
JuiceFS 是什么
JuiceFS 是為海量數(shù)據(jù)設(shè)計(jì)的分布式文件系統(tǒng),使用對象存儲來做數(shù)據(jù)持久化,避免重復(fù)造輪子,還能大大降低工程復(fù)雜度,讓我們專注解決元數(shù)據(jù)和訪問協(xié)議部分的難題。
JuiceFS 的創(chuàng)新架構(gòu)更符合云原生的發(fā)展趨勢,我們一開始就以 SaaS 的形式將它提供給公有云的客戶,讓客戶分鐘級就可以獲得 PB 級企業(yè)文件存儲服務(wù)。同時(shí),我們也和行業(yè)領(lǐng)先的對象存儲廠商一起服務(wù)私有云客戶。
在創(chuàng)業(yè)之初,我們認(rèn)為 SaaS 可以為用戶提供最佳的體驗(yàn),同時(shí)讓我們更快地迭代產(chǎn)品,決定優(yōu)先把 SaaS 做好。經(jīng)過 4 年的持續(xù)迭代和積累,JuiceFS 已經(jīng)在幾十家科技企業(yè)的大數(shù)據(jù)、AI、容器平臺、歸檔、備份等場景中形成最佳實(shí)踐, SaaS 使用量也持續(xù)快速增長,并且在過去的 2020 年首次實(shí)現(xiàn)了盈虧平衡。我們相信找到了可持續(xù)發(fā)展的模式,有信心保障 JuiceFS 的長期運(yùn)營。

我們也發(fā)現(xiàn)閉源的基礎(chǔ)軟件會限制使用者對它的深度理解,不利于它服務(wù)更多的人,依靠 SaaS 產(chǎn)品的收入支撐和開源社區(qū)的力量,我們可以讓 JuiceFS 幫助更多的人。
借助對象存儲的幫助,JuiceFS 已經(jīng)大大降低了分布式文件系統(tǒng)的復(fù)雜度,元數(shù)據(jù)管理是它最核心的問題。JuiceFS 的 SaaS 使用的元數(shù)據(jù)引擎,是專為文件系統(tǒng)打造的數(shù)據(jù)庫,我們已經(jīng)積累了豐富的運(yùn)維經(jīng)驗(yàn),仍然如履薄冰。如果開源的話,讓社區(qū)用戶自己運(yùn)維仍然會是一個(gè)大的挑戰(zhàn)和負(fù)擔(dān),一旦運(yùn)維失誤導(dǎo)致數(shù)據(jù)丟失,后果非常嚴(yán)重。
帶著這個(gè)問題,我們將元數(shù)據(jù)服務(wù)改造為支持多引擎的插件式架構(gòu),可以利用已有的開源數(shù)據(jù)庫實(shí)現(xiàn)元數(shù)據(jù)存儲。這樣可以更靈活地適應(yīng)不同場景,根據(jù)場景的規(guī)模、性能和成本需求,選用不同的元數(shù)據(jù)實(shí)現(xiàn)。這是 JuiceFS 的架構(gòu)再升級,為未來的發(fā)展翻開新的篇章。
我們選用 Redis 作為第一個(gè)開源存儲引擎,是因?yàn)樗?/span>
是全內(nèi)存的,可以滿足元數(shù)據(jù)的低延時(shí)和高 IOPS 要求;
支持樂觀事務(wù),能夠滿足文件系統(tǒng)元數(shù)據(jù)操作的原子性要求;
有豐富的數(shù)據(jù)結(jié)構(gòu),易于實(shí)現(xiàn)文件系統(tǒng)的諸多 API;
有著非常廣泛的社區(qū)和成熟的生態(tài),運(yùn)維 Redis 不會是一個(gè)問題;
在各個(gè)云上都有托管的服務(wù),在云上使用會更簡單;

未來,我們還會增加 SQL 數(shù)據(jù)庫、TiKV 等支持事務(wù)的 KV 數(shù)據(jù)庫支持。
最近幾年,數(shù)據(jù)庫領(lǐng)域發(fā)生了一件有趣的事情:當(dāng) NoSQL 數(shù)據(jù)庫在滿足了數(shù)據(jù)的快速增長后,它在一致性、訪問便捷性和管理能力方面的不足逐漸顯露,把這些復(fù)雜性轉(zhuǎn)嫁到了業(yè)務(wù)系統(tǒng)和運(yùn)維上,開始被人詬病。同時(shí), SQL 數(shù)據(jù)庫也有了長足的進(jìn)展,已經(jīng)能夠滿足現(xiàn)在的數(shù)據(jù)規(guī)模需求,經(jīng)過全面的對比分析后,大家又在回歸 SQL 數(shù)據(jù)庫,曾經(jīng)的 NoSQL 運(yùn)動也逐漸顯出頹勢。
估計(jì)類似的事情也會發(fā)生在非結(jié)構(gòu)數(shù)據(jù)領(lǐng)域。對象存儲在媒體文件等場景取得了巨大的成功,但當(dāng)人們以為它就是未來的存儲形態(tài),開始推廣到更大范圍時(shí),它犧牲掉的樹形目錄結(jié)構(gòu)、可修改性、元數(shù)據(jù)性能、一致性等等,變成了一只只攔路虎,影響它在其他場景的使用效果。
我們堅(jiān)信文件系統(tǒng)是最好的管理非結(jié)構(gòu)化數(shù)據(jù)的方式,對象存儲只適用于某些簡單場景。分布式文件系統(tǒng)一直是基礎(chǔ)軟件中難啃的骨頭,JuiceFS 通過對文件系統(tǒng)中元數(shù)據(jù)和數(shù)據(jù)的獨(dú)立抽象,大大減低了系統(tǒng)復(fù)雜度,使得文件系統(tǒng)能夠借助這些年來對象存儲和分布式數(shù)據(jù)庫的進(jìn)展,管理超大規(guī)模的數(shù)據(jù)。同時(shí),復(fù)雜度的降低可以讓更多的開發(fā)者參與進(jìn)來,未來更多的應(yīng)用也會建立在文件系統(tǒng)接口之上。
我們將通過開源社區(qū)的相互協(xié)作,一方面為各個(gè)應(yīng)用提供更好的存儲支持,也會在底層存儲引擎和對象存儲上加深協(xié)作,一起推動文件存儲的快速發(fā)展,打造未來數(shù)據(jù)生態(tài)的堅(jiān)實(shí)底座。
我們 GitHub 見!
https://github.com/juicedata/juicefs
閱讀原文給我們star
