流批一体集成引擎 BitSail:架构、功能与 CDC 实践

在数据驱动的时代,数据集成至关重要。第十四届中国数据库技术大会聚焦于此,其中流批一体集成引擎 BitSail 备受关注,它为数据集成带来创新方案,在 CDC 领域表现卓越。

BitSail 发展历程回顾

BitSail 的演进是不断优化的过程。早期,每个通道各自实现 MR/Spark 等,形成 M * N 套系统,架构繁杂、成本高昂。从 2018 - 2019 年,BitSail 统一批式架构,将复杂度从 M * N 降低到 M + N ,提升了效率。2020 - 2021 年覆盖流式场景,2021 - 2022 年涉足数据湖场景,实现湖仓一体。到 2022 - 2023 年完成流批一体改造,降低开发成本。如今,它正处于成熟期,致力于输出通用能力,进一步降低数据建设成本。

BitSail 亮点功能剖析

MQ2Hive 写入流程优化

在数据写入 Hive 的场景中,传统方式效率较低。BitSail 对 MQ2Hive 写入流程进行优化,采用流水线(Pipelined)方式处理数据。每个 task 分别做 Regional Checkpoint,若某个 task 失败,不会影响其他 task。并且在任务重启获取 Checkpoint 时,能合并过去 N 个 Checkpoint 获得全集。在大并发场景下,这一优化显著提升了任务稳定性。例如,当并发数为 5000 时,单并发成功率 99.99%,采用 Global Checkpoint 成功率仅 60.65%,而 Region Checkpoint 成功率高达 99.9999% 。

实时数据湖架构优势

BitSail 构建了实时数据湖架构,支持多种数据源,像 MySQL、MongoDB 等。通过 Flink、Spark 等计算引擎处理数据,并将处理后的数据存储到 Hudi on HDFS 等数据湖中。这种架构实现了数据实时采集、处理和存储,为企业实时分析提供有力支持,能快速响应业务变化。

BitSail Connector 详解

代码结构清晰分工

BitSail 代码结构包含多个模块。Root 模块是基础,Connector 模块负责连接不同数据源和数据存储系统,Engine Adapter 模块为引擎提供适配功能。具体 Connector 种类繁多,如 connector - druid、connector - kafka 等,每个 Connector 各司其职,确保数据顺畅传输。

连接器交互流程

  1. Source 连接器:Source 负责数据读取组件生命周期管理,与框架交互构建作业。SplitCoordinator 创建和管理数据读取分片(Split),这是大数据处理框架的关键,合理拆分数据能提高处理效率。SourceReader 负责真正的数据读取工作,读取 Split 数据并传输给下一个算子123。
  2. Sink 连接器:Sink 管理数据写入组件生命周期,与框架交互构建作业。Writer 负责将接收到的数据写入外部存储,WriterCommitter 用于数据提交操作,实现 exactly - once 语义,确保数据准确性和一致性456。
  3. 动态加载优化:面对 Connector 数量多导致的任务 jar 包太大和 jar 包冲突问题,BitSail 采用每个 connector 独立打包的方式。提交任务时,根据任务需求动态加载 jar 包,有效解决上述问题,提高任务部署灵活性和稳定性。

DataSail CDC 能力深度解读

CDC 技术原理与优势

CDC(Change data capture)通过捕获数据库变更日志(binlog),将数据库更新数据同步到外部数据源。相比批式变更同步,它延迟更低,对线上数据库影响更小,能实现数据实时同步,为业务实时决策提供及时数据支持。

与开源方案对比及自研原因

与 Flink CDC、Debezium 等常见开源 CDC 方案相比,BitSail 的 DataSail CDC 有其独特之处。它致力于解决 Source connector 无法解决的端到端问题,如实现 DDL 自动同步。同时提供更灵活的部署方案,支持带 MQ 和不带 MQ 的部署方式。此外,它与 Flink 引擎解耦,为未来拓展留有余地,还能深入底层优化,满足企业对性能不断提升的需求789。

架构与应用场景解决方案

  1. 架构设计:DataSail 作为火山引擎全域数据集成产品,集成引擎使用 BitSail。其 CDC 解决方案支持整库迁移和整库 CDC,能批量创建同步任务,实现一键同步一个库内多张表,先全量同步,后实时同步1011。
  2. 应用场景
    • 整库同步:传统整库同步存在诸多痛点,如一张表对应一个任务,建表耗时耗力且易出错。DataSail 通过产品层调度整体流程,让引擎单个任务写入整库数据到目标端,并实现自动建表和自动字段映射121314。
    • 分库分表同步:针对基于业务逻辑分表导致无法导入数仓同一张表、规则多变等问题,DataSail 采用批式单任务并发读取多库、流式 Binlog 基于正则过滤表名以及自定义 N 张表直接入仓等方案121516。
    • 乱序数据处理:在数据同步中,乱序数据处理是难题。DataSail 通过使用严格递增的排序字段,如数据源原生字段(mysql 的 filename 和 binlog position)或采集任务生成的全局递增字段,结合下游数仓配置排序字段(如 Hudi 的 precombine 字段、doris 的 sequence 字段),保证新数据不被旧数据覆盖171819。

未来发展规划

DataSail CDC 有着清晰的未来规划。在 2023Q4 - 2024Q1,计划实现自动 DDL 同步,支持 Create Table 和 Add Column 操作。同时,支持单并发写入多张表,优化资源利用率,并接入更多 CDC 数据源,进一步提升其功能和适用范围。
BitSail 在数据集成领域凭借其丰富的功能、独特的架构和对 CDC 的创新应用,为企业数据处理提供了高效、可靠的解决方案。随着其不断发展,有望在未来数据处理场景中发挥更大作用,推动行业技术进步。

你可能感兴趣的:(架构)