字节跳动开源ByConity:基于ClickHouse的存算分离架构云原生数仓( 二 )

  • 云原生架构设计下,增强数仓场景的查询性能,数据能够自动预读,避免被动 cache 在实时场景下缓存命中率低的问题:支持 HDFS/S3 等分布式文件系统或者对象存储系统,并针对不同的分布式存储系统做了读写性能优化,存储系统中也实现了基于本地磁盘的二级缓存系统,可以采用高性能本地盘来进一步加速存储读写性能 。
  • 前两点主要是为对外开源做准备,后三点则是在原来内部版本基础上进一步优化升级 。除了技术层面的准备,还涉及公司开源流程、代码合规、工程质量、配套部署工具开发等一系列相关准备 。
    据陈星介绍,ByConity 开源非常彻底,引擎核心能力都开源了,只有因公司合规要求受限的部分做了一些裁剪 。本质上 ByteHouse 云数仓的内核就是 ByConity,引擎能力基本一样 。后续 ByteHouse 研发新功能,也会直接在 ByConity 基础上用开源的模式做,这对于团队的研发模式来说是一个非常大的改变 。
    作为正式官宣开源前准备工作的关键一环,今年 1 月,团队发布了 ByConity beta(v0.1.0-beta)版本,并在社区小范围征集用户试用 。过去四个月陆陆续续已经有不少团队试用 ByConity 并在 GitHub 上提 issue 反馈,其中有一些团队已经在验证生产场景中的数据和工作负载 。翟鹿渊表示,希望通过这样的小范围试用,确认 ByConity 能真正帮助大家解决问题、带来好处,再正式开源,让更广泛的用户知道该如何使用 ByConity、能真正把 ByConity 用起来 。比起一开始就官宣开源,这可能是一种相对谨慎但更务实的做法 。
    社区反响
    Beta 版本推出后,ByConity 团队从社区得到了不少反馈 。好的一面是,有不少团队和开发者对 ByConity 表现出浓厚兴趣,其中不乏知名科技公司和团队,比如传音控股、电子云、华为、美团、天翼云、唯品会等,都在积极测试和验证 。据翟鹿渊介绍,目前国内采用了 ClickHouse 的公司中,ByConity 大致覆盖了头部的三分之一,都是使用规模相对比较大的 。其中华为终端云团队已经参与到了 ByConity 部分研发工作中,比如这次发布的 0.1.0 版本中有一个对象存储集成功能的预览版,就是华为终端云团队参与共同开发的 。
    当然难免也会出现一些挑战 。在知乎 ByConity 相关问题下面,有网友反馈代码风格对开发者不是很友好,一个方法里几百上千行代码,批评 ByConity 肯定是延续了 ClickHouse 开源代码的问题 。对此,陈星表示虚心接受批评,ByConity 本身就是基于 ClickHouse 内核开发,因此 CH 的代码风格问题,ByConity 难以避免,再加上早期内部研发更多追求快速上线使用,对于代码风格可能没有特别高要求和统一规范 。目前 ByConity 团队已经在规划和推进代码重构工作、希望做出好的示范,也希望后续社区能够一起推进这项工作 。
    类似的问题,翟鹿渊也被问到过,比如有开发者认为 ByConity 的代码和 ClickHouse 重合度比较高 。潜在的质疑或挑战点在于,ByConity 不是一个完全自主研发的项目 。对此团队的态度很坦荡,ByConity 的起点是 ClickHouse,这是事实,作为 ClickHouse 的下游项目,ByConity 会在向上兼容性方面做基础保证,并在开源许可的 header 文件中对受益于哪些开源项目给到完整的说明 。
    ByConity 不会为了体现差异而做代码调整(比如重命名一些函数、在命名空间上做些修饰等) 。ByConity 希望能够继承 ClickHouse 的长处和优势,比如性能上的优势、工程设计上的亮点等,ByConity 都会继续保留;同时针对实际业务场景中需要解决的问题,ByConity 会在新架构上做延展,以求在更广泛的场景上发挥出更大作用,让更多公司或团队受益 。
    架构亮点与差异
    从 2017 年引入 ClickHouse 至今,ByConity 团队基于 ClickHouse 内核做了深度改造和大量升级优化,不管是技术难度还是技术投入程度都非常大 。具体的优化思路在早前的采访和白皮书做过详细说明,近期 ByConity 社区也会联合 InfoQ 陆续发布一系列 ByConity 技术解读文章 。
    目前 ByConity 整体架构如下图所示,分为 3 层:服务接入层、计算层和存储层,其中服务接入层响应用户查询,计算层负责计算数据,存储层存放用户数据 。详细介绍可查阅 ByConity 的整体架构说明文档 。
    字节跳动开源ByConity:基于ClickHouse的存算分离架构云原生数仓

    文章插图
    ByConity 最新架构图
    基于从外部收到的反馈,翟鹿渊将 ByConity 相比传统 MPP 架构的亮点概括为以下三点: