ByConity 技术架构和核心特性
如果无法正常显示,请先停止浏览器的去广告插件。
1. 杭州站 HANGZHOU
云原生 Meetup
03 /23 14:00-18:00
杭州市余杭区文一西路西溪八方城 8 栋 F15-Training Room 02
主办方
合作伙伴
2. ByConity :技术架构和重要特
性
王蕴博
字节首席开源布道师
CCF 开源发展委员会副秘书长
云原生 Meetup 杭州站
3. 大规模使用 ClickHouse 集群
• 2018 年初开始使用 ClickHouse 集群
• 大规模使用至今
2,400
18,000
Machines
Largest cluster
700PB
Data size
云原生 Meetup 杭州站
4. 使用 ClickHouse 集群遇到的问题
• ClickHouse 是 Shared Nothing 架构
• 每个节点拥有部分数据,节点之间不共享
• 计算和存储紧耦合
• 实际使用的主要痛点
• 扩缩容成本高(涉及数据迁移)
• 资源浪费
• 多租户难以隔离
• 读写互相影响
• 复杂查询性能不好( e.g. 多表 join )
Merge
result
A
B
C
D
云原生 Meetup 杭州站
5. ByConity 开源历史
2022 年
无法合入
2019 年 社区,自
行开源
内部自
研,基
于 CK
2023 年 5
月正式 GA
0.1.0.GA
2023 年 9
月 0.2.0 版
本发布,外
表、 ETL 、
读写优化
2023 年
12 月
0.3.0 版本
发布, ELT
增强、读写
优化、倒排
索引
云原生 Meetup 杭州站
6. ByConity 技术架构和主要组件
•
•
•
Cloud Service
Server :
元数据管理, SQL 解析,执行计划生成
,执行调度和下发,一些场景做 Final
Agg
TSO :
生成全局唯一单调递增的时间戳
Daemon Manager :
调度和管理任务
Resource Manager :
Worker 的服务发现
元数据存储 (FDB )
Virtual Warehouse
• Worker : SQL 的计算和执行,后台任务
的执行
Disk Cache :远端文件的本地缓存
云存储
• 支持 HDFS/S3/…
云原生 Meetup 杭州站
7. ByConity 组件交互原理
Metadata
FoundationDB
Catalog api
Query
Resource manager
Resource api
Parser
Client
Result
Timestamp oracle
Query analyzer
and optimizer
Plan scheduler
Timestamp
Daemon manager
Background
task
Server
Segment executor
Segment executor
Final agg
Final agg
Segment executor
Segment executor
Agg Agg
Filter Filter
Scan Scan
Column storage Column storage
Virtual filesystem Virtual filesystem
\
Worker
Worker
Cloud storage
云原生 Meetup 杭州站
8. 元数据管理
• 提供高可用和高性能的元数据读写服务
• 完备事务语义的支持
• 后端存储系统可插拔,方便扩展
云原生 Meetup 杭州站
9. 查询优化器
RBO :使用一系列预定义的启发式规则来选择查询执行计划。
• 基于规则的优化能力
• e.g. ,算子下推,列裁剪、分区裁剪
CBO :通过收集和分析数据库中的统计信息来评估不同执行计划的成本,并
选择成本最低的计划作为最佳计划。
• 基于代价的优化能力
• e.g. , Join Reorder
云原生 Meetup 杭州站
10. 查询调度
• Cache-aware 调度
最大化 cache 命中率,提升读写性能
拓扑发生变化时,最小化 cache 失效的影响
• Resource-aware 调度和流量控制
最大化资源利用率
合理使用资源,避免负载过高
云原生 Meetup 杭州站
11. 计算组
• 多租户隔离
• 读写分离
• 水平和垂直动态扩缩容
• 资源共享
租户 1
计算组 a
租户 2 租户 3
计算组 b 计算组 d
计算组 c 计算组 e
计算组 f
Data
Storage
云原生 Meetup 杭州站
12. 数据缓存
•
•
•
•
一致性 hash 分配 parts
热数据 worker 节点自动缓存
改进的 bucket-lru 算法
避免数据 reshuffling
云原生 Meetup 杭州站
13. ByConity 部署
• 快速上手
Docker compose
• 部署依赖
HDFS + FoundationDB
• 部署模式
物理机部署
Kubenetes 集群部署
测试环境
组件名称
CPU
内存 硬盘 网络
实例数
TSO 1 300M 5G 千兆网卡 1
Server 8 32G 100G 千兆网卡 1
Worker 4 16G 100G+ 千兆网卡 1
DaemonManager 1 500M 5G 千兆网卡 1
ResourceManag
er 1 2G 5G 千兆网卡 1
生产环境
组件名称
TSO
CPU
2
内存 硬盘 网络
500M 5G 万兆网卡
实例数
3
Server 14 60G 1T 万兆网卡 >=1 Worker 30 240G 2T+ 万兆网卡 >=1 DaemonManager 4 10G 10G 万兆网卡 1
ResourceManage
r 8 16G 10G 万兆网卡 1
云原生 Meetup 杭州站
14. 应用实例:用户行为分析系统
320TB
2.3 万亿
行
2 万个维
度
云原生 Meetup 杭州站
15. 应用实例:用户行为分析系统
• 避免资源抢占,查询性能百分百稳定
• 运维成本低,故障节点秒级替换
• 无感扩缩容,节约资源成本
• 数据一致性强保障,维护复杂度接近 0
整体性能可以达到 91% 用户查询都可以在 10 秒内完成
云原生 Meetup 杭州站
16. ByConity 社区和用户
• 最新 ByConity 社区 Roadmap 讨论: https://github.com/ByConity/ByConity/issues/26
云原生 Meetup 杭州站
17. 字节开源项目总览
云原生 Meetup 杭州站
18. Thank you
云原生 Meetup 杭州站