字节跳动数据集成引擎BitSail开源架构演进和实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 字节跳动数据集成引擎BitSail 开源架构演进和实践 李畅 字节跳动大数据工程师 DataFunSummit # 2023
2. 个人简介 l 16年加入字节跳动开发套件团队,从0到1设计、研发了面向字节各业 务线的数据集成服务 l 专注大规模数据的分布式计算和传输领域, 提供高效、可靠的数据集 成解决方案 l 开源社区爱好者,BitSail开源项目负责人之一
3. 目录 CONTENT 01 02 BitSail 背景介绍 BitSail 新功能介绍 03 BitSail CDC解决方案 04 未来展望 未来展望
4. 01 BitSail 背景介绍 DataFunSummit # 2023
5. BitSail 背景介绍 在数据建设过程中,通常需要把数据从A 系统导入到B系统 数据集成是数据建设的基础,主要解决异 构数据源间数据传输、加工和处理
6. BitSail 背景介绍 • BitSail,又可称为“比特航行” • BitSail 是字节跳动开源的分布式、高性能数据集成引擎,支持多种异构数据源间 的数据同步,并提供离线、实时、增量场景下全域数据集成解决方案 • BitSail 目前已被广泛使用, 并服务于字节内部几乎所有业务线,包括抖音、今日头 条等,每天同步数百万亿条数据,同时在火山引擎云原生环境、本地私有云环境等 多种场景下得到验证
7. BitSail 演进历程 覆盖流式场景 无统一框架 通用能力输出 M*N,每个通道各自实现 覆盖流式场景,完成流、 BitSail 开源 如MR/Spark等等 批架构统一 云原生引擎 ~2018 2019 统一架构,覆盖批式场景 基于Flink引擎,完成批式场景统一 2020 2021 2022-now 覆盖CDC场景, 湖仓一体 基于Flink+Hudi实现数据准实时入湖
8. 02 BitSail 新功能介绍 DataFunSummit # 2023
9. BitSail 数据同步架构 架构 • Connector层、框架层、引擎层 • 每一层都采取可插拔的设计,灵活性较好 框架层 • 丰富基础能力,比如数据源类型转换、脏数据 处理、流控、自动并发度推断、运行监控等 场景 • 覆盖离线、实时、增量数据同步场景
10. BitSail 数据同步架构 – 代码结构 Root Connector Components Engine Adapter
11. 多引擎架构 问题 • Flink 深度绑定,依赖较重,场景受限制 • Flink 定位通用计算引擎,数据集成场景存在资源浪费 解决思路 • 引擎基于可插拔设计,支持轻量化的分布式计算引擎 • Connector 提供引擎无关的读写接口 • 框架层与引擎解耦
12. 多引擎架构 – Source API Source API 数据读取组件的生命周期管理类,主要负责和框架的 交互,它不参与作业真正的执行 • Split 数据分片,大数据处理框架的核心目的就是将大规模 的数据拆分成为多个合理的Split • Split Coordinator 创建、管理Split,并将Split分发给Source Reader • Source Reader 真正负责数据读取的组件,在接收到Split后会对其 进行数据读取,然后将数据传输给下一个算子
13. 多引擎架构 – Sink API Sink API 数据写入组件生命周期的管理类,主要负责和框架 进行交互,它不参与作业真正的执行 • Writer 主要负责将接收到的数据写到外部存储 • Writer Committer(可选) 用于对数据进行提交操作,基于两阶段提交,实 现Exactly-Once的语义
14. 多引擎架构 – API 接口转换 • DelegateXXX 基于引擎接口实现 • DelegateXXX 实现Source/Sink API 接口和引擎接口转换
15. EtLT架构 数据处理架构 BitSail EtLT架构 • ETL -> ELT -> EtLT • Source、Sink间引入Transform模块 • 现代数据栈、实时性 • 流批一体,支持轻量级数据处理
16. 自动化测试引擎 背景 • Fat 包缺点,产物包太大,并且包冲突较为严重 • Connector 独立打包,并支持运行时动态加载 问题 • Connector 动态加载时,存在潜在的包冲突问题 解决思路 • 构建 Connector 自由组合自动化测试引擎 • 打通 CICD 流程,避免 Connector 包冲突问题
17. 自动化测试引擎 基本原理 • 单数据源测试用例构建 • M * N 自由组合测试任务生成 • 分布式调度和执行 • 结果通知 多引擎架构 • 测试用例与引擎无关 • 测试任务可复用到不同引擎 流批一体框架 • 兼容离线以及实时场景
18. 03 BitSail CDC解决方案 DataFunSummit # 2023
19. CDC 背景介绍 CDC(Change data capture): 通过捕获数据变更日志(Binlog)的方式,将更新数据同步到外部数据源 相比于批式变更同步,CDC 变更同步有着延迟更低,对线上数据影响更小的优点
20. CDC 同步使用场景 • 离线数据分析:离线数仓建设,离线报表 MySQL -> Hive/ClickHouse • 准实时数据分析:实时看板建设,实时数据分析 MySQL -> Doris/StarRocks • 搜索数据分析:在线搜索 MySQL -> ElasticSearch
21. 离线整库同步解决方案 痛点 • 延迟高:MySQL 数据 T + 1 导入 Hive, 实时性较差 • 运维成本高:需要维护多张表与表之间的映射关系和 多个同步任务 • 分库分表场景:分库分表只能分别入仓,入仓后再进 行合并 • 一致性问题:同步链路长,乱序导致数据不一致问题
22. CDC 整库同步解决方案
23. CDC 整库同步解决方案 离线整库同步 - 延迟高 • MySQL 数据 T + 1 导入 Hive,实时性较差 CDC 整库同步 • 全量数据批式导入 • 增量数据实时消费 Binlog 写入,根据场景需求调整写入延迟 • 以 Doris/StarRocks 为例延迟可以做到秒级
24. CDC 整库同步解决方案 离线整库同步 - 运维成本高 • 需要维护多张表之间的映射关系和多个同步任务 CDC 整库同步 • 自动建表:自动根据上游表的字段创建下游表 • 全量任务:自动调度单次全量批任务,其中每个批 任务实现单表同步 • 增量任务:一个任务写入到多张下游表中
25. CDC 整库同步解决方案 离线整库同步 - 分库分表 • 分库分表只能分别入仓,入仓后再进行合并 CDC 整库同步 • 全量任务:单个任务读取多个数据源,写入到单张下 游表中 • 增量任务:增量任务直连多个数据源拉取Binlog,写 入到单张下游表中
26. CDC 整库同步解决方案 离线整库同步 - 一致性问题 • 同步链路长,乱序导致数据不一致 CDC 整库同步 • 基于严格有序的字段,保证新数据不被旧数据覆盖 • Binlog 原生字段,例如 Binlog Position • 业务自定义排序字段,例如 Hudi 的 precombine 字段,Doris 的 sequence字段
27. CDC 整库同步解决方案 – 运行流程
28. CDC 整库同步解决方案 – 运行页面
29. 04 未来展望 DataFunSummit # 2023
30. 未来展望 基础能力建设 • Connector生态建设,提供更多的读写数据源 • 多引擎架构,提供更轻量的分布式计算引擎 CDC 同步能力增强 • 自动 DDL 同步,支持自动 Create Table 和 Add Column • CDC 生态建设,支持更多的上下游数据源,复用 CDC 框架能力 • 端到端数据一致性校验能力构建
31. 了解更多 BitSail技术交流群 BitSail代码仓库 最新进展·社区活动·干货分享 https://github.com/bytedance/bitsail
32. 感谢观看

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 12:49
浙ICP备14020137号-1 $Map of visitor$