数据订阅功能旨在帮助用户获取MySQL、Oracle实时增量数据,用户能够根据自身业务需求自由消费增量数据,例如缓存更新策略、业务异步解耦、异构数据源数据实时同步及含复杂ETL的数据实时同步等多种业务场景。

原有的数据订阅功能使用成本相对较高,为提升用户体验,降低使用成本,阿里云对数据订阅功能进行升级,可实现数据的多下游重复消费。

功能特性

  • 支持多下游消费,支持数据库和数据表的过滤。详情请参见消费组介绍
  • 支持订阅自建MySQL数据库,为自建数据库用户订阅数据提供更多的便利。
  • 在支持经典网络的基础上,新增了专有网络的支持。用户可以通过专有网络订阅消费数据,以获得更低的网络延迟和更高的安全性。
    说明 您可以在创建数据订阅通道时选择网络类型,详情请参见创建数据订阅通道
  • 支持Kafka生态,通过使用Kafka Client您可以直接消费数据订阅通道中的数据。
    说明 当前仅支持Kafka 0.10.0.x版本至1.1.x版本,详情请参见使用Kafka客户端消费订阅数据
  • 在数据订阅过程中,您可以动态增减订阅对象,详情请参见修改订阅对象
  • 支持修改需要消费数据对应的时间点。
    说明 您需要通过您的订阅客户端来修改消费时间点。
  • 提供订阅通道状态、下游消费延迟的报警监控功能。您可以根据业务敏感度,自定义消费延迟报警阈值。

消费组介绍

原有的数据订阅功能在进行数据订阅时,只能有一个下游SDK消费数据,其他的SDK作为备份。如果需要对同一个源库的增量数据进行重复消费的话,则需要购买多个数据订阅实例,使用成本较高。

为降低用户使用成本,DTS新增了消费组的功能。当多个下游需要订阅同一个数据库实例时,只需要创建多个消费组即可,多个消费组可以同时对同一个数据库实例进行数据的订阅和消费,大大降低了用户的使用成本。

消费组特性

  • 一个数据订阅实例中可以创建多个消费组,通过创建多个消费组可以实现数据的重复消费。
  • 同一个消费组对每条消息只进行一次消费,消费组内的多个消费者互为备份。
  • 在同一个消费组中,同一时刻只能有一个消费者进行数据消费,其他消费者作为容灾节点。
图 1. 消费组架构

消费组架构图

支持订阅的数据库类型和版本

订阅的源数据库(例如MySQL、Oracle)的部署位置可以是有公网IP的自建数据库ECS上的自建数据库通过专线/VPN网关/智能网关接入的自建数据库

源数据库 支持订阅的数据类型

自建MySQL

5.1、5.5、5.6、5.7或8.0版本

  • 数据更新
  • 结构更新

RDS for MySQL

所有版本

POLARDB for MySQL

所有版本

自建Oracle(非RAC架构)

9i、10g、11g版本

支持的语言

DTS支持多种语言的客户端对数据进行消费,具体如下:
  • Java
  • C/C++
  • Python
  • Go(AKA golang)
  • Erlang
  • .NET
  • Ruby
  • Node.js
  • Proxy(HTTP REST、etc)

支持的数据类型和订阅对象

  • 数据类型

    DTS将源库的增量数据类型分为结构变更DDL(Data Definition Language)和数据变更DML(Data Manipulation Language)。

    • 结构变更DDL

      订阅整个实例所有对象的结构创建、删除及修改,您需要使用订阅客户端过滤所需的数据。

    • 数据变更DML

      订阅已选择对象的增量数据更新,包含数据的INSERT、DELETE和UPDATE操作。

  • 订阅对象

    订阅对象选择的粒度为库、表。

数据订阅通道

数据订阅通道会实时拉取源数据库中的增量数据,并将最近24小时的增量数据保存在数据订阅通道中。您可以使用Kafka Client从订阅通道中订阅增量数据并进行消费。同时,您也可以在DTS控制台对数据订阅通道进行创建、管理及删除等操作。

数据订阅通道在创建及运行过程中的状态信息如下表所示。

通道状态 状态说明 可进行操作
预检中 已经完成数据订阅通道的配置,正在进行预检查。 删除订阅
未启动 已经通过预检查,但是还没有启动订阅。
  • 开始订阅
  • 删除订阅
初始化 正在进行启动初始化,一般需要1分钟左右。 删除订阅
正常 正在拉取数据源的增量数据。
  • 查看示例代码
  • 监控报警
  • 删除订阅
  • 重新配置
异常 拉取数据源的增量数据时出现异常。
  • 查看示例代码
  • 监控报警
  • 删除订阅
  • 重新配置
说明
  • 当数据订阅通道处于异常状态时,7天之内这个任务会被DTS自动恢复。如果需要停止订阅,您可以释放数据订阅通道。
  • 释放数据订阅通道后,该通道中的数据将被释放且无法被找回,请谨慎操作。