雲原生在京東丨最適合雲原生的分散式儲存平臺—— ChubaoFS

京東科技開發者發表於2020-07-26

在上篇文章 《雲原生在京東丨揭秘五大雲原生專案在京東的落地實踐》 中,我們為大家揭秘了 Kubernetes、Harbor、Vitess、Prometheus、Helm 五大雲原生專案在京東的實踐之路。京東目前基本實現了“All in Containers”,在雲原生的應用上保持著幾個最: 全球最大規模的 Docker 叢集、Kubernetes 叢集、最複雜的 Vitess 叢集之一、全球容器化最徹底的網際網路企業之一。

 

同時,京東不僅是最徹底的雲原生應用者,還致力於為雲原生技術開源貢獻價值,將內部孵化並經過實踐驗證的融合分散式檔案系統與物件儲存服務的 ChubaoFS 捐獻給 CNCF,將分散式資料庫中介軟體 Apache ShardingSphere 開源專案捐贈給 Apache 基金會,併成為從 Apache 孵化器畢業的頂級專案,持續在雲原生領域推動技術創新,推動雲原生計算可持續發展。


本篇文章就將重點為大家深入介紹  ChubaoFS 開源專案的歷史發展以及在京東的應用實踐,幫助你在大會前熟悉這款最適合雲原生的分散式儲存開源專案——ChubaoFS。



在正式開始前,我們先來了解下 ChubaoFS 是什麼?

 

ChubaoFS是 京東自研的雲原生儲存平臺,提供分散式檔案系統與物件儲存服務,為雲原生應用提供計算與儲存分離的持久化儲存方案。它為執行在 Kubernetes 容器平臺之上的雲原生應用提供了多租戶、POSIX 相容、可掛載的檔案系統;同時,ChubaoFS 還透過流行的 S3 協議來提供物件儲存功能。


ChubaoFS 內部高效實現了資料與後設資料彈性擴充套件、順序和隨機讀寫模式、強一致複製演算法、以及安全認證等核心特性。透過支援 CSI(Container Storage Interface) 與 Helm,ChubaoFS 可以被輕鬆部署並與 Kubernetes 緊密配合。

ChubaoFS 最早於 2017 年在京東內部建立,設計的最初目的是為京東的大型容器叢集提供持久化儲存的解決方案,同時還可以用作業務端的通用儲存。經過長期內部孵化與實踐驗證,京東將 ChubaoFS 開源捐獻給 CNCF,並被 CNCF Storage SIG 工作組列入 Cloud Native Landscape 專案。

 

ChubaoFS 的設計有著獨到的特點,名為 《CFS: A Distributed File System for Large Scale Container Platforms》的論文,被國際頂級資料庫會議 ACM SIGMOD 2019收錄。評審給出了非常高的評價:“CFS design and implementation are interesting and well described.” “Several design decisions made this system better than Ceph for their use case.”


得益於其幾乎無限的可伸縮性和分佈在多個節點工作記憶體中後設資料子系統,後設資料節點也可以實現彈性可擴充套件,在所有分散式檔案系統中,ChubaoFS 是最適合支援雲原生工作負載的。


ChubaoFS 由 後設資料子系統 資料子系統 資源管理節點組成,可以透過客戶端訪問不同檔案系統例項,卷。


  • 後設資料子系統由 後設資料節點組成,每個節點可以管理一組後設資料分片。

  • 資料子系統由 資料節點組成,每個節點管理一組資料分片。

  • 在ChubaoFS中,卷是一個邏輯概念,由 多個後設資料 資料分片組成。從客戶端的角度看,卷可以被看作是可被容器訪問的檔案系統例項。一個卷可以在多個容器中掛載,使得檔案可以被不同客戶端同時訪問。一個ChubaoFS叢集可以有上百個卷,大小從幾GB至幾TB不等。

  • 概括來說,資源管理節點定期獲取 後設資料 資料子系統資訊,客戶端則定期從資源管理器拉取後設資料和資料分片資訊,並且進行快取。通常來講,檔案操作由客戶端發起,直接與資料和後設資料節點通訊,無需資源管理節點介入。

 

ChubaoFS 在設計上還針對可擴充套件性、多租戶、一致性和相容性上做出了以下嘗試:

 

1

  可擴充套件後設資料管理


後設資料操作有時候會成為檔案系統的效能瓶頸。在我們的平臺中,由於可能會有成百上千的客戶端同時訪問檔案,這個問題變得非常突出。單獨節點儲存後設資料很容易成為效能瓶頸。所以,ChubaoFS 中使用了分散式後設資料子系統,以便提供高可擴充套件性。後設資料子系統可以認為是記憶體後設資料儲存。我們使用了兩個 B-Tree,inodeTree 和 dentryTree,來加快索引速度。每個後設資料分片根據 inode id 範圍進行劃分。

 

2

多租戶

為了降低儲存成本,很多應用和服務都使用了共享的儲存基礎設施。不同負載交織在一起,檔案大小可以從幾 KB 至幾百 GB,讀寫模型從順序到隨機。一個成熟的檔案系統應該可以高效能地服務於這些負載。ChubaoFS 的儲存引擎同時提供了對大檔案和小檔案的隨機/順序讀寫的支援。

 

3

相容S3物件儲存介面


ChubaoFS提供S3相容的API,用於訪問透過POSIX相容的API儲存的統一資料副本,實現物件儲存服務。


4

高效能

對於高併發場景的大小檔案效能均做了最佳化,尤其是針對小檔案場景做了專門的最佳化,從而可以支撐更多使用者場景,比如AI訓練平臺圖片,影片檔案的儲存,以及圖片系統等。


京東作為中國最大的電商平臺之一,業務場景複雜多樣,ChubaoFS 已經穩定服務於京東  2000 多個應用以及線上業務,業務場景不僅限於 海量資料的備份儲存,還包括 資料庫備份、MySQL 底層儲存(歷史表)、人工智慧平臺模型訓練的後端儲存、點選流業務Nginx日誌儲存、Elasticsearch 底層儲存、Hbase 後端儲存等。

 

同時,為了合理配置物理硬體資源,京東對於儲存與計算分離的需求比較迫切。ChubaoFS 作為雲原生的分散式檔案系統,與容器叢集良好的相容性,以及可靠的效能和穩定性,為這一目標的實現提供了堅實的技術保障。

 

下面我們就來看一下 ChubaoFS 在京東內部的兩個典型應用:

 

2016 年初,京東的技術架構部開啟了全面的容器化建設道路,同時也是在這一年我們選擇了 Kubernetes 作為計算資源編排的方案。那個時候,Kubernetes 才剛剛開源差不多一年時間,CNCF 也才成立一年,京東可以算是先驅者之一。最初京東使用原生映象倉庫來作為映象中央儲存庫, 但是在使用過程中發現它存在一些問題。因此從 2016 京東就轉為 Harbor 的忠實使用者。 Harbor 是一個開源的映象倉庫專案,操作簡單、執行穩定,為京東節省了大約 60% 的映象中央儲存庫維護時間。

 

隨著業務量的增長,儲存映象的資料會變得越來越龐大,京東需要一個穩定、可靠、高效能的儲存方案。京東選擇 ChubaoFS 作為 Harbor 後端儲存方案,   Harbor+ChubaoFS 可以構建一個高可用的映象中心架構,多個 Harbor 例項可以同時使用 ChubaoFS 共享容器映象,它給 Harbor 提供了穩定的,可彈性擴充套件的,高效能的分散式儲存服務。

Elasticsearch 是 一個開源的分散式、可擴充套件、實時的搜尋與資料分析引擎,它可以快速儲存、搜尋和分析大量資料。由於較高的效能和較低的使用門檻,京東內部有很多場景都在使用 Elasticsearch。隨著業務的不斷增長,叢集數量及消耗的伺服器資源成比例上升,京東 Elasticsearch 例項上升為上萬個,維護的叢集快速增長為上千個,叢集規模從幾個到幾十個不等。

 

但是整體資源的利用率卻相對較低,磁碟使用率僅為 28% 左右,日常平均讀寫 IO 在 10~20M/ 秒(日誌分割槽 IO 在 60-100M / 秒)。造成資源浪費的原因是叢集規模普遍較小,為保證突發情況下,讀寫請求對 IO 的要求,一般會為叢集分配較為富餘的資源,物理機分配的容器也會控制在一定量級。我們做個假設,如果大量的伺服器 IO 都可以共享,那麼某個叢集突發請求對 IO 的影響其實可以忽略的。

 

基於這種假設以及對提高磁碟使用率的迫切需要,京東引入了 ChubaoFS 作為儲存,將 Elasticsearch 作為無狀態的例項進行儲存計算分離。得益於 ChubaoFS 是為大規模容器叢集掛載而設計的通用檔案系統,幾乎是零成本接入,只需在物理機上安裝相應的客戶端,就可以將 ChubaoFS 當成本地檔案系統來用。經測試,在整合 ChubaoFS 之後, Elasticsearch 使用 ChubaoFS 甚至在某些場景下要優於本地磁碟。

 

參考資料:


* 《ChubaoFS 網站》

*《ChubaoFS 設計相關論文》

*《文件》


ChubaoFS 社群交流

Twitter: @ChubaoFS

Mailinglist:  chubaofs-maintainers@groups.io

Slack:   chubaofs.slack.com

2020年7月30日-8月1日,2020 年   Cloud Native + Open Source Virtual Summit China  中國峰會將首次以線上形式召開。作為 CNCF 雲原生基金會白金會員,繼去年參與 KubeCon 後,今年京東智聯雲將繼續在大會中亮相,不僅帶來多場精彩演講,還將透過京東智聯云云上展廳,近一步展示京東雲原生技術動態與前沿技術

京東架構師張墨飛將在大會上為大家帶來 《深入瞭解ChubaoFS 儲存引擎 》精彩分享,介紹融合分散式檔案系統與物件儲存服務的分散式儲存 ChubaoFS,與您深入探討 ChubaoFS 的架構、開發和細節,並討論諸如複製、故障轉移等話題,敬請關注!



[閱讀原文]( 京東智聯雲-開發者社群 )

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2706985/,如需轉載,請註明出處,否則將追究法律責任。

相關文章