字节跳动全域数据集成演进历程
数据集成背景
数据集成是数据中台建设的基础,主要解决异构数据源间的数据传输、加工和处理。字节跳动的自研一站式数据中台套件Dataleap服务内部各业务线数据建设场景,涵盖外部数据源、数据库、消息队列、其它存储、数据研发平台、数据分析、在线数据服务、机器学习等环节。
全域数据集成演进历程
全域数据集成经历了三个主要阶段:
- 初始期(2018之前):每个通道各自实现,使用MR/Spark等工具,形成M*N套系统。
- 成长期(2018-2021):
- 2018-2019:基于Flink引擎统一架构,覆盖批式场景。
- 2020-2021:覆盖流式场景,实现批流一体。
- 成熟期(2021-2022至今):覆盖CDC场景,实现湖仓一体,一套系统覆盖所有数据同步场景。
初始架构(基于Flink 1.5)
- 使用DataSetAPI仅覆盖批式场景。
- 提供抽象的BaseInput和BaseOutput,实现数据源种类线性扩展。
- 框架层提供统一基础服务,包括类型系统、自动并发度、脏数据检测、流控等。
- 支持Yarn部署,资源管理较弹性。
批流一体架构(基于Flink 1.9)
- API统一到DataStream API,支持批流一体。
- 基础框架扩展,支持ExactlyOnce、EventTime、AutoDDL同步等特性。
- 对FlinkCore进行多项基础改进,支持推测执行、RegionFailover。
- Runtime升级,支持云原生架构。
湖仓一体架构(基于Flink 1.11)
- 接入Hudi数据湖引擎,支持CDC数据变更同步。
- 对Hudi引擎进行多项基础改进,提高写入效率和稳定性。
- 近实时写入,延迟≤10min,综合性能提升70%。
- 完成架构统一,一套系统覆盖所有数据同步场景。
通用能力改造
目标
对外能力输出,降低数据建设成本,构建低成本共建能力,提升架构兼容能力。
低成本共建能力
- 模块拆分:将大Jar包拆分为功能模块,实现组件可插拔。
- 接口抽象:抽象新的API接口,屏蔽引擎细节,降低Connector接入成本。
架构兼容能力
- 多引擎架构:预留多引擎入口,支持Local本地执行。
- 依赖隔离:剔除内部依赖,采取通用解决方案,动态加载多版本数据源。
未来展望
- 多引擎架构:LocalEngine落地支持本地执行,引擎智能选择策略。
- 流式数据湖:统一CDC数据入湖解决方案,稳定支撑千万级QPS,构建数据湖平台能力。
- 通用能力建设:推广新接口,降低Connector开发成本,探索Connector多语言方案。