Curve 加入 PolarDB 開源資料庫社群,強化分散式共用儲存

2022-03-02 19:00:21

Curve社群簽署阿里巴巴開源CLA(Contribution License Agreement, 貢獻許可協定), 正式與阿里雲PolarDB 開源資料庫社群牽手,成為繼 CurveFS 釋出後,Curve 開源專案發展的又一里程碑。

在3月2日的開源 PolarDB 企業級架構釋出會上,阿里雲對 PolarDB for PostgreSQL 的儲存計算分離等架構設計進行了全面解讀,作為 PolarDB 技術合作夥伴,Curve 為 PolarDB for PostgreSQL 提供分散式共用儲存,其強大的效能表現引發了社群的注意。

這也表明,作為網易數帆自研開源的第二款基礎軟體產品,Curve 正朝著高效能、易運維、全場景支援的雲原生軟體定義儲存系統這一目標穩步演進。

打造效能最強開源分散式共用儲存

作為一款雲原生分散式資料庫產品,PolarDB for PostgreSQL 採用基於共用儲存(Shared-Storage)的存算分離架構,以大幅提升資源利用率與效能,實現快速彈性應對突發業務負載的場景。資料存於「遠端儲存」的 Shared-Storage 共用方式,利於彈性的同時,也帶來了網路和共用儲存的挑戰,因而必須突破 I/O 限制以確保業務所需的效能。

在 On-Premise(本地部署)環境下,開源儲存是首選,然而能滿足資料庫效能需求的開源儲存並不多。「我們嘗試過多款(開源儲存)軟體作為分散式共用儲存,Curve 的測試結果讓我們眼前一亮。」PolarDB for PostgreSQL 研發負責人明虛表示。

Curve 當前由 CurveBS 和 CurveFS 兩個子專案構成,分別提供塊儲存和檔案儲存兩種能力。用做共用儲存的正是 CurveBS,開源之初 CurveBS 就提供了遠優於 某主流開源分散式塊儲存 的效能,經過社群一年多的的迭代,CurveBS 效能和穩定性愈發成熟。

在 Curve 社群和 PolarDB 社群針對 PolarDB for PostgreSQL 場景的聯合測試中,無論 benchmarkSQL 還是pgbench,Curve 再次全面領先於 該開源分散式塊儲存。同等硬體設定及資料庫負載壓力下,benchmarkSQL 測試中 Curve tpmC (每分鐘事務數)領先高達 39%,pgbench 測試中 Curve 延遲降低多達 21%,TPS 領先高達 26%。

Curve 的高效能得益於其採用了 chunkfilepool、條帶化設計Raft 等先進的技術架構。chunkfilepool 支援叢集初始化時建立指定大小的檔案,降低 I/O 過程中檔案後設資料更新的開銷,從而降低 I/O 延遲。條帶化設計則支援在 Curve 使用者端進行分片,以提高 I/O 的並行度和打散度,讓更多節點參與 I/O 處理,提升 I/O 頻寬。Raft 一致性實現相對前述開源儲存系統的強一致性來說,也縮短了長尾效應,因而縮短了 I/O 時延。

此外,Curve 通過支援 PFS(PolarDB的分散式檔案系統),使得雲原生資料庫更容易使用 Curve 分散式儲存,並獲取更好的效能。

未來,Curve 社群還將從 braft 的 multi raft 改進、大 I/O 的效能優化、RDMA、io_uring 等方面著手,繼續效能優化的工作。

踐行開源雲原生軟體定義儲存

對 PolarDB for PostgreSQL 的良好支援,也體現了 Curve 對承載雲原生工作負載的態度和進展。在當前數位化轉型背景下,越來越多的企業通過軟體重新定義了自己,雲原生則是強化企業軟體能力的重要武器——根據 CNCF 2020 全球雲原生市場調查,該項技術已被 92% 受訪者在生產中使用。

在儲存基礎設施層,Curve 社群認為,不同於傳統雲端儲存資源的黑盒,雲原生儲存上一切儲存資源應該都是白盒,所有云原生應用都可以不做修改無縫使用。

基於此,雲原生儲存對上層雲原生應用提供無縫的業務介面(POSIX介面、塊儲存介面、物件儲存介面、HDFS介面等等),對下層雲作業系統遮蔽雲端儲存資源細節,對雲原生應用的開發運維人員提供自定義儲存型別、儲存資源池(跨雲)、資料生命週期管理、資料可靠性可用性策略等等。

在 Curve Roadmap 中可以看到,這個開源社群正往這些方向努力。例如,支援雲原生部署、運維、使用,已經是 Curve 的一個關鍵特性。事實上,Curve 架構簡單、運維部署靈活的特點,也是其吸引 PolarDB 的又一重要因素。

瞭解更多

  • Curve 專案主頁:

    http://www.opencurve.io/

  • Curve 原始碼&檔案:

    https://github.com/opencurve/curve

  • Curve Roadmap:

    https://github.com/opencurve/curve/wiki/Roadmap_CN

  • Curve 技術專欄:

    https://zhuanlan.zhihu.com/p/311590077 

  • PolarDB for PostgreSQL 開源專案主頁:

    https://github.com/ApsaraDB/PolarDB-for-PostgreSQL

展開閱讀全文