据陈星介绍,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 最新架构图
基于从外部收到的反馈,翟鹿渊将 ByConity 相比传统 MPP 架构的亮点概括为以下三点:
- 首先是存储计算分离的改造 。传统 MPP 很难对计算资源做隔离,据翟鹿渊介绍,现在业界大多数使用 ClickHouse 方案的公司和团队,采用的隔离方式基本是靠物理集群隔离,运维管理成本极高 。存算分离之外,ByConity 依托于虚拟化容器调度能力,既能实现业务和业务之间的隔离,又能非常灵活地调配硬件资源,这其实是很多公司想解决,但可能只解了一半或者暂时还没有好解决方案的严重问题 。
推荐阅读
- 最小响应式UI框架 VanJS 开源,仅 Preact 体积1/10!
- 几行代码安装,做图无上限:Stability AI公布DreamStudio开源版本
- 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
- 秒杀自动编码Copilot!「动嘴编程」神器StarChat开源,码农狂喜
- 使用开源 Python API 封装器与你的集群对话
- 几个基于CDC实时同步数据的开源组件,让你的数据同步更实时
- 七个使你的 Drupal 网站无障碍访问的开源模块
- 几个玩转2D/3D渲染的开源JS库,助你快速实现各种2D/3D动画特效
- Stable Diffusion背后团队发布开源大语言模型 可用于本地部署
- 抖音前端UI框架开源了,亮瞎我的钛合金!
