
在上篇文章《雲原生在京東丨揭秘五大雲原生項目在京東的落地實踐》中,我們為大家揭秘了 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 網站》
https://www.chubao.io/
*《ChubaoFS 設計相關論文》
https://dl.acm.org/citation.cfm?doid=3299869.3314046
*《文檔》
https://chubaofs.readthedocs.io/zh_CN/latElasticsearcht/
https://chubaofs.readthedocs.io/en/latElasticsearcht/
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 的架構、開發和細節,並討論諸如復制、故障轉移等話題,敬請關注!


