zoukankan      html  css  js  c++  java
  • 云原生在京东丨最适合云原生的分布式存储平台—— ChubaoFS


    在上篇文章《云原生在京东丨揭秘五大云原生项目在京东的落地实践》中,我们为大家揭秘了 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 的架构、开发和细节,并讨论诸如复制、故障转移等话题,敬请关注!

    阅读原文

  • 相关阅读:
    Java第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
    第五次作业
    java第三次实验
    java 第二次实验
  • 原文地址:https://www.cnblogs.com/jdclouddeveloper/p/13380071.html
Copyright © 2011-2022 走看看