1、DataFunSummit#2023字节跳动数据集成引擎BitSail开源架构演进和实践李畅 字节跳动大数据工程师l 16年加入字节跳动开发套件团队,从0到1设计、研发了面向字节各业务线的数据集成服务l 专注大规模数据的分布式计算和传输领域,提供高效、可靠的数据集成解决方案l 开源社区爱好者,BitSail开源项目负责人之一个人简介01BitSail 背景介绍02BitSail 新功能介绍03BitSail CDC解决方案04未来展望目录CONTENT未来展望DataFunSummit#202301BitSail 背景介绍在数据建设过程中,通常需要把数据从A系统导入到B系统数据集成是数据建设的
2、基础,主要解决异构数据源间数据传输、加工和处理BitSail 背景介绍BitSail,又可称为“比特航行”BitSail 是字节跳动开源的分布式、高性能数据集成引擎,支持多种异构数据源间的数据同步,并提供离线、实时、增量场景下全域数据集成解决方案BitSail 目前已被广泛使用,并服务于字节内部几乎所有业务线,包括抖音、今日头条等,每天同步数百万亿条数据,同时在火山引擎云原生环境、本地私有云环境等多种场景下得到验证BitSail 背景介绍20182019202020212022-now无统一框架M*N,每个通道各自实现如MR/Spark等等覆盖流式场景覆盖流式场景,完成流、批架构统一通用能力输
3、出BitSail 开源云原生引擎覆盖CDC场景,湖仓一体基于Flink+Hudi实现数据准实时入湖统一架构,覆盖批式场景基于Flink引擎,完成批式场景统一BitSail 演进历程DataFunSummit#202302BitSail 新功能介绍架构Connector层、框架层、引擎层每一层都采取可插拔的设计,灵活性较好框架层丰富基础能力,比如数据源类型转换、脏数据处理、流控、自动并发度推断、运行监控等场景覆盖离线、实时、增量数据同步场景BitSail 数据同步架构RootConnectorEngine AdapterComponentsBitSail 数据同步架构 代码结构问题Flink 深
4、度绑定,依赖较重,场景受限制Flink 定位通用计算引擎,数据集成场景存在资源浪费解决思路引擎基于可插拔设计,支持轻量化的分布式计算引擎Connector 提供引擎无关的读写接口框架层与引擎解耦多引擎架构Source API数据读取组件的生命周期管理类,主要负责和框架的交互,它不参与作业真正的执行 Split数据分片,大数据处理框架的核心目的就是将大规模的数据拆分成为多个合理的Split Split Coordinator创建、管理Split,并将Split分发给Source Reader Source Reader真正负责数据读取的组件,在接收到Split后会对其进行数据读取,然后将数据传输
5、给下一个算子多引擎架构 Source APISink API数据写入组件生命周期的管理类,主要负责和框架进行交互,它不参与作业真正的执行 Writer主要负责将接收到的数据写到外部存储 Writer Committer(可选)用于对数据进行提交操作,基于两阶段提交,实现Exactly-Once的语义多引擎架构 Sink API DelegateXXX 基于引擎接口实现 DelegateXXX 实现Source/Sink API 接口和引擎接口转换多引擎架构 API 接口转换BitSail EtLT架构 Source、Sink间引入Transform模块 流批一体,支持轻量级数据处理EtLT架构
6、数据处理架构 ETL-ELT-EtLT 现代数据栈、实时性背景Fat 包缺点,产物包太大,并且包冲突较为严重Connector 独立打包,并支持运行时动态加载问题Connector 动态加载时,存在潜在的包冲突问题解决思路构建 Connector 自由组合自动化测试引擎打通 CICD 流程,避免 Connector 包冲突问题自动化测试引擎基本原理单数据源测试用例构建M*N 自由组合测试任务生成分布式调度和执行结果通知多引擎架构测试用例与引擎无关测试任务可复用到不同引擎流批一体框架兼容离线以及实时场景自动化测试引擎