数据传输服务DTS(阿里巴巴)
什么是数据传输服务DTS
-
数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务,支持关系型数据库(RDBMS)、非关系型的数据库(NoSQL)、数据多维分析(OLAP)等数据源间的数据交互,集数据同步、迁移、订阅、集成、加工于一体,助您构建安全、可扩展、高可用的数据架构。
为什么选择DTS
-
相对于传统数据迁移或同步工具,DTS为您提供功能更丰富、传输性能更强、易用性更高且安全可靠的服务,帮助您简化复杂的数据交互工作,专注于上层的业务开发。DTS有如下多种优势:
-
方便快捷
提供可视化管理界面,并提供向导式的链路创建流程,您可以在控制台简单轻松地创建自己的传输链路。
-
丰富多样
-
支持各种源库和目标库之间的数据传输,这些数据源基于不同的数据库引擎和架构。
-
支持多种数据传输方式,包括数据迁移、数据集成、数据同步及数据订阅。
-
-
高性能
-
使用高规格服务器来保证每条迁移同步链路都能拥有良好的传输性能。
-
对核心基础设施进行了大量优化,峰值数据传输速率可以达到70 MB/秒。
-
链路支持多并发压缩传输,降低传输链路对带宽的占用。
-
-
安全可靠
-
支持节点的故障容灾,可实现链路的秒级恢复。
-
支持断点续传,可有效解决因硬件和网络等异常导致的传输中断。
-
支持基于RAM的访问授权,您可以定义细粒度的授权策略来管理DTS任务。
-
支持数据校验,确保源端迁移和同步到目标端数据的完整性和一致性。
-
支持的数据库
-
数据传输服务DTS(Data Transmission Service)支持RDBMS、NoSQL、OLAP等数据源间的数据交互。本文详细介绍DTS支持的数据库、迁移类型、同步初始化类型、同步拓扑和支持订阅的数据类型。
系统架构
DTS系统架构特性说明
-
系统高可用
数据传输服务内部每个模块都有主备架构,保证系统高可用。容灾系统实时检测每个节点的健康状况,一旦发现某个节点异常,会将链路快速切换到其他节点。
-
数据源地址动态适配
对于数据订阅及同步链路,容灾系统还会监测数据源的连接地址切换等变更操作,一旦发现数据源发生连接地址变更,它会动态适配数据源新的连接方式,在数据源变更的情况下,保证链路的稳定性。
数据迁移工作原理
-
数据迁移过程包括三个阶段,即结构迁移、全量数据迁移和增量数据迁移。 如果需要在迁移期间保持源数据库的正常运行,当您在配置迁移任务时,必须将结构迁移、全量数据迁移和增量数据迁移都选为所需的迁移类型。
-
结构迁移:在迁移数据之前,DTS需要在目标数据库中重新创建数据结构。 对于异构数据库之间的迁移,DTS会解析源数据库的DDL代码,将代码转换成目标数据库的语法,然后在目标数据库中重新创建结构对象。
-
全量数据迁移:在全量数据迁移阶段,DTS会将源数据库的存量数据全部迁移到目标数据库。 源数据库保持运行状态,在迁移过程中仍不断进行数据更新。 DTS使用增量数据读取模块来获取全量数据迁移过程中发生的数据更新。 当全量数据迁移开始时,增量数据读取模块将被激活。 在全量数据迁移阶段,增量数据会被解析、重新格式化并存储在本地DTS服务器上。
-
增量数据迁移:当全量数据迁移完成后,DTS会检索本地存储的增量数据,重新格式化,并将数据更新应用到目标数据库中。 此过程将持续下去,直到所有正在进行的数据变更都复制到目标数据库,并且源数据库和目标数据库完全同步。
数据同步的工作原理
-
DTS可以在两个数据源之间同步正在进行的数据变更。 数据同步通常用于OLTP到OLAP的数据传输。 数据同步包括以下两个阶段:
-
同步初始化:DTS将源数据库的存量数据加载到目标数据库。
-
数据实时同步:DTS同步正在进行的数据变更,并保持源数据库和目标数据库的同步。
-
-
为了同步正在进行的数据变更,DTS使用两个处理事务日志的模块:
-
事务日志读取模块:日志读取模块从源实例读取原始数据,经过解析、过滤及标准格式化,最终将数据在本地持久化。日志读取模块通过数据库协议连接并读取源实例的增量日志。如果源数据库为RDS MySQL,那么数据抓取模块通过Binlog dump协议连接源库。
-
日志回放模块:日志回放模块从日志读取模块中请求增量数据,并根据用户配置的同步对象进行数据过滤,然后在保证事务时序性及事务一致性的前提下,将日志记录同步到目标实例。
-
-
DTS具备日志读取模块、日志回放模块的高可用,DTS容灾系统一旦检测到链路异常,就会在健康服务节点上断点重启链路,从而有效保证同步链路的高可用。
数据订阅的工作原理
-
数据订阅支持实时拉取RDS实例的增量日志,用户可以通过DTS提供的SDK数据订阅服务端来订阅增量日志,同时可以根据业务需求,实现数据定制化消费。
-
DTS容灾系统一旦检测到日志拉取模块出现异常,就会在健康服务节点上断点重启日志拉取模块,保证日志拉取模块的高可用。
-
DTS支持在服务端实现下游SDK消费进程的高可用。用户同时对一个数据订阅链路,启动多个下游SDK消费进程,服务端同时只向一个下游消费推送增量数据,当这个消费进程异常后,服务端会从其他健康下游中选择一个消费进程,向这个消费进程推送数据,从而实现下游消费的高可用。
-
-
DTS服务端的日志拉取模块主要实现从数据源抓取原始数据,通过解析、过滤、标准格式化等流程,最终将增量数据在本地持久化。
日志抓取模块通过数据库协议连接并实时拉取源实例的增量日志。例如源实例为RDS MySQL,那么数据抓取模块通过Binlog dump协议连接源实例。
日志拉取模块及下游消费SDK的高可用:
-
DTS容灾系统一旦检测到日志拉取模块出现异常,就会在健康服务节点上断点重启日志拉取模块,保证日志拉取模块的高可用。
-
DTS支持在服务端实现下游SDK消费进程的高可用。用户同时对一个数据订阅链路,启动多个下游SDK消费进程,服务端同时只向一个下游消费推送增量数据,当这个消费进程异常后,服务端会从其他健康下游中选择一个消费进程,向这个消费进程推送数据,从而实现下游消费的高可用。