2020实战复盘:如何从0到1搭建数据传输平台产品DTS?(二)

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介: 2020实战复盘:如何从0到1搭建数据传输平台产品DTS?(二)

5.数据迁移模块


5.1 技术选型


跟数据订阅不同,Mysql的数据迁移五花八门,实现原理也都各不相同。

44.png


综合来看,我们选择了DataX作为数据迁移引擎。


5.2 基本原理


DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。


我们主要使用了MySQL的数据同步,它的实现原理比较简单,就是通过


select * from table;


获取全量数据,然后写入到目标库中。


当然,这里利用了JDBC的流式查询,避免OOM。同时,datax也支持自定义限速。


5.3 部署架构与使用方式


Datax的使用方式比较简单,通过配置任务Json,执行脚本即可。


由于数据迁移使用不多,且基本是一次性使用,所以暂时是直接部署在DTS的服务中,通过Java的Process类进行相关处理。


  • 创建Datax所需的conf文件,并返回地址
  • 使用Runtime.getRuntime().exec()执行 Datax的python脚本
  • 根据返回的Process对象,处理成功/失败、执行输出日志等

45.jpg


后面会考虑进一步迭代,采用独立服务器部署Datax,然后通过自定义Java服务或者使用Saltstack实现远程调用脚本。

46.png


6.数据同步模块


6.1 技术选型


数据同步的方案主要有三种

47.png


综合实施性、技术成熟度、双向同步需求的考虑,我们选择了otter作为数据同步引擎。


6.2 基本原理


基于Canal开源产品,获取数据库增量日志数据。Canal原理参考 数据订阅 的基本原理。

典型管理系统架构,manager(web管理)+node(工作节点)。


6.3 部署架构

48.png


核心组件:


  • zookeeper:解决分布式状态调度的,允许多node节点之间协同工作
  • manager: 运行时推送同步配置到node节点
  • node: 内嵌canal,负责binlog订阅,并把事件同步到目标数据库;同时,将同步状态反馈到manager上


6.4 改造适配


1)控制台api封装


由于otter-admin的技术栈比较旧,采用webx框架实现,没有前后端分离。

因此,需要根据已有代码,重新封装独立的rpc接口,然后才能对接到DTS服务中,包装相关otter-admin的接口,实现产品化的前台接口逻辑。


2)云原生改造


改造为k8s部署,支持快速扩缩容,具体可以参考我上一篇文章 拥抱云原生,如何将开源项目用k8s部署?


7.总结与展望


从产品设计、技术调研、架构设计到最后研发上线,历时半年左右。最终功夫不负有心人,项目顺利上线,通过前台产品的简单交互与审核,就能秒级快速创建DTS任务。


目前已经支持数十个DTS任务(包括数据订阅、数据迁移、数据同步),落地了多云数据库镜像、ES索引构建、数据实时同步、业务数据订阅等多个业务场景。

未来,还需要做进一步的技术迭代,包括:


1)扩展数据传输引擎


目前已经在尝试接入Redis-shake做Redis的迁移与同步。

后面还会继续尝试HBase-replication的接入,做HBase相关的任务迁移与同步。


这些都可以通过复用 通用服务能力 和 模版流程,实现快速接入。


2)增加调度模块


后续还需要增加任务调度模块,主要实现两方面的能力:


  • 根据实例负载进行任务的调度,保证资源的合理使用
  • 根据业务特性、重要程度做任务调度,保证资源隔离


3)完成云原生化改造


目前只有otter引擎实现了k8s部署,后面还需要对canal-server、Datax实现k8s部署,满足快速扩缩容,提高资源使用率。


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
2月前
|
SQL 分布式计算 监控
在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
【2月更文挑战第32天】在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
19 6
|
2月前
|
存储 SQL NoSQL
数据传输DTS同步问题之同步失败如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
2月前
|
Cloud Native NoSQL 关系型数据库
数据传输DTS校验问题之校验报错如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
298 0
|
13天前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之数据传输完成后发现了脏数据字段如何解决
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
SQL 数据库
在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
【2月更文挑战第32天】在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
12 1
|
2月前
|
监控 数据处理 数据库
数据传输DTS迁移问题之总数与已完成条数不一致如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
2月前
|
关系型数据库 MySQL OLAP
数据传输DTS写入问题之无法获取数据如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
2月前
|
存储 Java 关系型数据库
数据传输DTS数据问题之数据写入异常如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
数据传输DTS数据问题之数据写入异常如何解决
|
2月前
|
监控 分布式数据库 API
数据传输DTS同步问题之遇到错误如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
2月前
|
容灾 NoSQL 关系型数据库
数据传输DTS同步问题之二分库到四分库如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
303 0