ACDC:A Change Data Capture,是新东方集团架构部开源的数据平台产品,其目标是成为一个完整的数据集成、服务解决方案,为大数据团队和技术团队提供以下 DevOps 能力:
- 端到端全量、增量数据同步
- 数据聚合、转换
- 数据接口
- 可观测性
目前 ACDC 在新东方内部承载了 1000+ 的实时数据同步链路,仍在稳定增长中。
新东方的一些核心业务存在单元写、中心入仓的场景,因此需要将数据从各单元的关系型数据库同步到中心,并异构存储到数据仓库之中。 技术团队最初使用 Apache Sqoop 以批的方式实现了这个能力。随着数据量的增长,这个方案很快暴露出了一些问题,如:
- 为了不影响业务,同步数据只能在夜间进行,制约了报表的时效性
- 数据的同步周期随着数据量增长而增长
通过引入 kafka connect 技术栈,并结合 Canal、SQLServer CT 等工具,实现了从批到流的转变,有效解决了以上问题。这时,随着数据链路的数量不断增长,又暴露出了一些新的问题,如:
- 无 DevOps 手段,需要专属团队统一运维,边际成本较高且效率较低
- 血缘关系只能依靠文档记录,数据溯源的成本随着时间推移而提升
- 随着租户身份不断增多,需要精细的监控、告警手段
- 缺乏数据权限管理手段,仍需借助 OA 等外部系统
新东方集团架构部决定以平台化方式解决上述问题,并将此产品逐渐演进为完整的数据中台解决方案,这个产品就是 ACDC。
- 单元写、中心入仓
- 数据异构存储
- 捕获数据事件
ACDC 目前处于 1.0 版本,并在持续迭代中。当前版本的主要功能是以多租户及 DevOps 方式管理流式数据同步链路,具体功能点如下:
- 多租户
- 端到端数据流式同步链路生命周期管理
- 数据权限审批
- 链路、平台粒度的可观测性(基于 prometheus + grafana)
- 部分元数据白屏化管理
数据源 | 数据目标 |
---|---|
MySQL TiDB(with TiCDC) |
JDBC 支持的数据系统(MySQL、TiDB、SQLServer、Oracle 等) Hive Kafka |
ACDC 会在数据同步、数据处理、数据服务三个方面持续发展。 数据同步方面,主要是针对批、流两种同步方式支持更多的数据系统,预期如下:
状态 | 数据源 | 数据目标 |
---|---|---|
已实现 | MySQL TiDB(with TiCDC) |
JDBC 支持的数据系统(MySQL、TiDB、SQLServer、Oracle 等) Hive Kafka |
未实现 | TiDB (with TikvClient) Oracle Sqlserver PostgreSQL Kafka Hologres |
Elastic Search Redis MacCompute Hologres PostgreSQL StarRocks IceBerg Hudi |
数据处理方面,主要是针对数据提供一些加工、聚合能力,例如数据变换,数据过滤,数据维度打宽等。
数据服务方面,主要是将数据同步、处理的结果提供 Rest 等访问方式。
// TODO
ACDC 中的 JDBC Sink 模块基于 confluent 社区开源的 JDBC Sink 进行二次开发,原项目地址如下: https://github.com/confluentinc/kafka-connect-jdbc
原项目中的部分代码已经被 acdc 团队进行了调整
ACDC 中的 HDFS Sink 模块基于 confluent 社区开源的 HDFS Sink 进行二次开发,原项目地址如下: https://github.com/confluentinc/kafka-connect-hdfs
原项目中的部分代码已经被 acdc 团队进行了调整
ACDC 中的 MySQL Source 模块使用由 redhat 主导的开源项目 debezium,原项目地址如下: https://debezium.io/
请通过提交 issues 的方式获取您想了解的更多细节。