自开源以来,Tapdata 吸引了越来越多开发者的关注。随着更多新鲜力量涌入社区,在和社区成员讨论共创的过程中,我们也意识到在基础文档之外,一个更“直观”、更具“互动性”的实践示范教程的重要性和必要性。为了辅助开发者更好地理解技术文档,真正实现快速上手、深度参与,即刻开启实时数据新体验,我们同步启动了 Tapdata 功能特性及操作演示系列教程。 以下,为本教程的第一弹内容——零基础快速上手实践,细致分享了从源码编译和启动服务到如何新建数据源,再到如何做数据源之间的数据同步的启动部署及常见功能演示,主要任务包括:
- MongoDB => MySQL 的实时同步任务,包括自动建表与实时数据同步
- MongoDB => MySQL 自定义函数 自动模型推演 建表的任务,可以按照自定义函数的逻辑自动推断表模型
- MySQL => PG DDL 同步的任务,可以自动同步数据, 也可以自动同步表模型变更 B站回放:https://www.bilibili.com/video/BV19e4y197fP
01
项目简介
什么是 Tapdata?
Tapdata 开源路线图
Tapdata 开源项目的定位是一个实时数据服务平台,目前已上线的 1.0 版本核心覆盖实时数据同步、实时数据开发、Fluent ETL 等场景,具备全量和增量复制、异构数据库间的同步与转换,表级同步以及任务监控等能力。其工作机制主要包含以下四个环节的功能特性:
- 基于 CDC 的无侵入数据源实时采集
- 异构数据模型自动推断与转换
- 数据处理,流式计算,缓存存储一体架构
- 一键将模型发布为数据服务的闭环能力
Tapdata 开源工作机制
如上图所示,最左侧是包括数据库、数仓以及应用文件等在内的各种数据源。通过 Tapdata 主打的基于 CDC 的无侵入数据实时采集模块,能够将来自这些数据源的数据实时抓取过来;再经过一个异构数据模型的自动推断和转换,成为计算流中标准数据的一部分;继而经过一些数据处理、流式计算,配合项目自带的缓存存储,将数据按开发者的需求完成转换;最后通过数据发布能力,以 API 的形式呈现,或是直接按需传入数据目标,例如数据库、应用,或是 Web 服务等,从而达到更快获取所需数据的目的。
和传统解决方案的对比
常见的传统解决方案
同样的场景下,传统解决方案比较常见的方式是通过脚本轮询读取、自定义代码连接器,或是 Kettle/Canal/OGG 一类的开源适配器等方式,对来自于各类数据源的数据进行读取;再通过 Kafka/MQ 这样的消息队列,或是 Spark/Flink 这样的计算引擎等方式进行数据的流转转换、开发清洗,进行数据的流转转换、开发清洗;最终通过自己写一些 API 接口逻辑将数据发送到目标终端。
这类方案的整个链路从原始读取到消息队列,再到写 Stream 逻辑,再到计算层,再到输入层,存在一个非常大且非常明显的缺陷,就是链路长、非实时、成本高、难维护。
Tapdata 解决方案
而 Tapdata 要做的,就是与之相对的一种快速、实时、简单、易用的方案——将中间的全部过程任务,交由我们来完成,这也是 Tapdata 的开源设计理念。
02
使用说明
如何从源码构建并启动完整的 Tapdata 服务?
从0开始构建和部署 Tapdata 开源版本,需要完成三个步骤:
1. 环境准备: Linux Docker(当前版本仅支持 Linux 和 Docker 环境,基于非 Docker 的和非 Linux 的环境正在适配中,很快会和大家见面) 2. 下载源码: git clone git@github.com:tapdata/tapdata.git && cd tapdata 3. 通过一个命令,一键编译所有组件并启动服务: bash build/quick-dev.sh