您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[字节跳动]:ByConity的架构与设计:从ClickHouse到云原生 - 发现报告

ByConity的架构与设计:从ClickHouse到云原生

2027-02-26字节跳动叶***
AI智能总结
查看更多
ByConity的架构与设计:从ClickHouse到云原生

ByConity的架构与设计:从ClickHouse到云原生 演讲人:王蕴博 王蕴博 字节跳动首席开源布道师、开源基础设施负责人。中国计算机学会CCF开源发展委员会副秘书长,CCFGitLink社区负责人,CCFGLCC发起人兼组委会主席。前腾讯开源联盟委员(TOSA),前滴滴开源办公室负责人。 长期专注于大数据、DevOps、AI等方向;对开源治理、项目孵化、开源合规等具有丰富的经验。 目录 CONTENTS 背景和设计理念 存算分离架构设计 用户案例分享 社区和未来规划 ByConity历史 发布020版 支持数据湖、ELT、 RBAC、提升冷读优化 开源一周年 5月19日北京 20245 ByConity开源010GA 202312 20244 ByConity启动开源 20239 发布030版本 CNCH ByteHouse云数仓版 大规模使用 20235 倒排索引、ELT能力增强、共享存储的选主方式、冷热性能提升 ClickHouse 2018 20201 20225 新版本发布 ByConity设计之初 开源 开源让软件更早接触用户,了解用户真实需求; 吸引外部开发者参与,汇聚领域人才参与,传播影响力; 更加高效的迭代,软件更佳安全和健康 开源OpenCore模式促进商业化,拓展海外市场 云原生 重用云基础设施,高可靠性和降低成本; 整个系统和架构设计从开始就基于云的需求; 存算分离避免了传统分布式系统的一些性能瓶颈和复杂性 开源从“命名”开始 Byte ByConity Community Convert ByConity是通过开源,融合一群希望打破常规技术的开发者,改变数据的使用方式 基于云原生架构 服务层(CloudService) MetaDate:FoundationDBByteKV Server:表元数据缓存、查询SQL解析、计划生成、调度和下发 ResourceManager:服务发现、负载心跳检测 TSO:全局唯单调递增的时间戳 DaemonManager:调度和管理任务 计算组(VirtualWarehouse,VW) Worker:执行片段的执,后台任务的执、 LocalDiskCache 每个表可以设置默认的ReadVW(查询)和 WriteVW(导入和Merge 存储层(CloudStorage 支持HDFS、S3 ByConity的特性 资源隔离 读写分离弹性扩缩容 数据强一致性高性能 存算分离的设计思考 需要统一的元信息管理系统 分布式文件系统大多数存在元信息管理压力问题(nn) 分布式统一存储系统大多不支持rewrite,一些对象存储系统甚至不支持append 分布式对象存储系统大多move代价都比较高 iolatency通常情况对比本地文件系统下都存在增加的情况 统一的元数据管理 提供高可用和高性能的元数据读写服务 完备事务语义的支持 后端存储系统可插拔,方便扩展 高效的Part缓存管理 一致性hash 数据存储结构 合并小文件,每个part所有数据存储在一个文件中 保持按列存储特性 数据变更 文件生成后不再变动 deltapartbasepart partchain(mergeonwrite) 读放大 数据合并 异步merge Oldparts通过GC清理 数据缓存 一致性hash分配parts 热数据worker节点自动缓存 改进bucketlru算法 避免数据reshuffling 唯一键(UNIQUEKEY) 实际场景 数据源如Kafka包含重复数据,如何保障数仓表的数据质量 业务数据流包含行更新,如何高效实时同步和分析 如何提高RDBMS数仓的同步时效性,并支持高效分析 唯一键Upsert 面向读取操作进行优化 支持唯一键与排序键不同 支持基于版本字段的比较 支持行删除 支持表级别和分区级别 查询优化器 优化器:本质是对查询计划的等价转换,从中找到最优解或者较优解。ByConity实现了RBO和CBO RBO:基于规则的优化能力。使用一系列预定义的启发式规则来选择查询执行计划。 基于visitor的全局改写,例如filter下推、列的裁剪、SQL指纹等 基于patternmatch的局部改写,例如多个filter的merge、多个projection的merge CBO:基于代价的优化能力。通过收集和分析数据库中的统计信息来评估不同执行计划的成本,并选择成本最低的计划作为最佳计划。 基于Cascades搜索框架,遍历等价计划,评估每种等价计划的代价,选出最优解 JoinReorder超过10表启发式搜索 分布式执行计划,属性传递,基于代价生成最优的分布式计划 查询调度 负责对生成的可执行计划plansegmenttree进行调度 Cacheaware调度针对source,读取数据 最大化cache命中率,提升读写性能 拓扑发生变化时,最小化cache失效的影响 Resourceaware调度和流量控制针对计算节点,纯计算 最大化资源利用率 合理使用资源,避免负载过高 计算组 多租户隔离 读写分离 水平和垂直动态扩缩容 资源共享 租户1 计算组a 租户2 计算组b 租户3 计算组d 计算组c 计算组e 计算组f Data Storage 与ClickHouse的差异 实践案例用户分析系统 业务架构图 320TB 23万亿行 2万个维度 实践案例MetaApp数据分析平台 业务架构 资源消耗 业务120core880G 测试 240core1760G 400core2560G 带来哪些收益 知识体系避免资源抢占节约资源成本运维成本降低 天然的资源隔离和租户隔离,不同用户查询相互不收到影响 基于Kubernetes的弹性伸缩能力,实现无感扩缩容 存算分离架构,计算节点为无状态节点,发生故障秒级替换 开源社区发展 Star1600 PR1700 Issue500 Fork 300 2024年整体规划 性能提升数据湖分析数仓能力 优化动态构建filter能力 全局字典 Zerocopy 非等值join算子优化 并行化重构 Bucket表优化 UncompressedCache优化 多表异步物化视图 支持Hive表查询、写入 支持Hudi表查询、写入 支持Iceberg表查询 外表查询性能优化 外表物化视图 Hive元数据Catalog同步 复杂大数据ELT稳定运行 RuntimeFilter性能优化 Shuffle性能优化 算子落盘 长事物优化 失败重试 MySQL兼容性 SQL诊断优化 数据安全和备份恢复易用性生态 透明加密 表级快照 全量备份恢复 一键部署 Localmode Dbeaver Kubeblocks SugarBI Quicksight 欢迎交流加入我们 谢谢观看