Curve 進入 CNCF Sandbox,完善統一雲原生開源儲存拼圖

語言: CN / TW / HK

2022 年 6 月 15 日,雲原生計算基金會 (CNCF) 宣佈,分散式儲存系統 Curve 被正式接納為 CNCF 沙箱(Sandbox)專案。Curve 由網易數帆開源,提供塊儲存和檔案儲存能力,旨在以網易分散式架構和雲原生實踐經驗反哺社群,填補高效能、易運維、雲原生的開源分散式儲存的空白。

Curve 進入 CNCF 沙箱,意味著全球頂級開源基金會對網易數帆雲原生儲存技術演進的認可,也驗證了網易數帆在數字化基礎軟體領域的深厚積累,及對未來技術趨勢的深刻洞察。通過進入 CNCF 沙箱,Curve 社群將更多吸引更多開發者和使用者參與共建,進一步推動專案在雲原生業務場景的成熟應用,從而深化雲原生技術落地實踐。

專案地址:https://github.com/opencurve/curve

Curve 專案特色

Curve 的研發,萌芽於開源 Ceph 儲存系統難以滿足網易業務發展的樸素需求,成長於雲原生在各業務快速落地的契機。回顧 2018 年,網易已完成電商業務全面容器化,開始採用 Kubernetes + Operator 執行有狀態應用,雲原生儲存基礎設施的完善也被提上日程。

即便從當前 CNCF Landscape 來看,雲原生儲存專案依然遠不及計算側和網路側豐富,開源的更是稀缺(圖中白底部分),如果再加上穩定、高效能、公有云私有云均可使用的靈活彈性、簡單易運維這些雲原生場景下對儲存系統的基礎要求,則市面上基本沒有合適的系統可供選擇。這是 Curve 得以健康發展的外在驅動力。

得益於 Raft 一致性協議及創新架構的技術路線,目前,無論採用 SATA SSD 塊儲存,還是 NVMe 塊儲存,Curve 的隨機讀寫、延遲效能都遠優於老牌開源儲存系統 Ceph,異常狀態下的效能穩定性同樣有接近倍半關係的領先程度。

而和另外一個 CNCF 沙箱專案, 使用 Go 語言編寫的基於容器的塊儲存開源軟體 OpenEBS 相比,Curve 同時覆蓋塊儲存和檔案儲存,更有利於建設統一的數字化基礎軟體,運維管理成本要求也更低。

Curve 使用場景

Curve 可以應用於各類雲原生基礎設施平臺作為儲存底座,如:

  1. 對接 OpenStack 平臺為雲主機提供高效能塊儲存服務;
  2. 對接 Kubernetes 為其提供 RWO、RWX 等型別的持久化儲存卷;
  3. 作為雲端儲存中介軟體使用 S3 相容的物件儲存作為資料儲存引擎,為公有云使用者提供高性價比的共享檔案儲存;
  4. 對接 PolarFS 作為雲原生資料庫的高效能儲存底座,完美支援雲原生資料庫的存算分離架構。

針對當前國內數字化基礎設施自主可控的需求,Curve 也做了諸多針對性的適配工作。目前,Curve 完全支援國產鯤鵬 CPU + 麒麟系統,軟體架構能充分利用併發揮國產 CPU 和硬體以及作業系統的效能。此外,Curve 系統本身核心模組和資料結構以及資料通訊協議系國內自主設計與開發,自主研發程式碼 20 多萬行,測試程式碼的覆蓋率也達到 80%。

Curve 社群進展

Curve 於 2020 年正式開源,至今一年多的時間裡釋出 3 個大版本,完成了超過 2500 個 commits 提交,GitHub 上 Star 數超過 1100 個,除網易外還吸引了超聚變技術有限公司、思謀科技、創雲融達等多家企業使用。

2022 年 3月 ,Curve 憑藉優異的效能和強大的易運維性,成為阿里雲 PolarDB 社群的官方生態合作伙伴,為基於 Shared-Storage 架構的 PolarDB for PostgreSQL 提供分散式共享儲存底座,支援資料庫負載獲得雲原生快速彈性擴充套件的好處。

致謝

Curve 專案能有今天的發展態勢,離不開每一位社群參與者的付出。在此真誠地感謝每一位社群貢獻者及使用者的信任、支援和幫助,也特別感謝 CNCF 同仁尤其是 Storage TAG 對專案發展的指導和支援。也歡迎更多開發者和使用者參與 Curve 社群建設,如有任何意見和建議,皆可給我們提 issue。

Curve 未來規劃

未來,Curve將瞄準高效能、易運維、雲原生的目標持續演進:

高效能:為雲原生資料庫、雲中間件提供超高效能、超低時延的儲存底座,助力存算分離架構落地。同時也可為檔案儲存提供熱資料的高效能儲存層,助力高性價比架構落地。

雲原生:支援各類雲原生應用的存算分離架構,支援部署到私有云、公有云、混合雲環境,為雲原生應用提供更靈活便捷的儲存系統。

易運維:提供更簡單、更易用、易排障的運維工具和診斷平臺。

Curve roadmap 參考:https://github.com/opencurve/curve/wiki/Roadmap