数据订阅功能旨在帮助用户获取自建MySQL、RDS MySQL、Oracle的实时增量数据,您可以根据自身业务需求自由消费增量数据,例如缓存更新策略、业务异步解耦、异构数据源数据实时同步及含复杂ETL的数据实时同步等多种业务场景。
原有的数据订阅功能使用成本相对较高,为提升用户体验,降低使用成本,阿里云对数据订阅功能进行升级,可实现数据的多下游重复消费。
功能特性
支持多下游消费,支持数据库和数据表的过滤。详情请参见消费组介绍。
支持订阅自建MySQL数据库,为自建数据库用户订阅数据提供更多的便利。
在支持经典网络的基础上,新增了专有网络的支持。用户可以通过专有网络订阅消费数据,以获得更低的网络延迟和更高的安全性。
说明您可以在创建数据订阅通道时选择网络类型,请参见创建RDS MySQL数据订阅任务。
支持使用SDK客户端示例代码、flink-dts-connector、Kafka客户端示例代码打印订阅数据,用于SDK客户端、Flink客户端、Kafka客户端消费数据订阅通道中的数据。配置方式,请参见使用SDK示例代码消费订阅数据(推荐) 、使用flink-dts-connector消费订阅数据、使用Kafka客户端消费订阅数据。
在数据订阅过程中,您可以动态增减订阅对象,详情请参见修改订阅对象。
支持修改需要消费数据对应的时间点。
说明您需要通过您的订阅客户端来修改消费时间点。
提供订阅通道状态、下游消费延迟的报警监控功能。您可以根据业务敏感度,自定义消费延迟报警阈值。
消费组介绍
原有的数据订阅功能在进行数据订阅时,只能有一个下游SDK消费数据,其他的SDK作为备份。如果需要对同一个源库的增量数据进行重复消费的话,则需要购买多个数据订阅实例,使用成本较高。
为降低用户使用成本,DTS新增了消费组的功能。当多个下游需要订阅同一个数据库实例时,只需要创建多个消费组即可,多个消费组可以同时对同一个数据库实例进行数据的订阅和消费,降低了用户的使用成本。
消费组特性
一个数据订阅实例中可以创建多个消费组,通过创建多个消费组可以实现数据的重复消费。
同一个消费组对每条消息只进行一次消费,消费组内的多个消费者互为备份。
同一个消费组中,同一时刻只能有一个消费者进行数据消费,其他消费者作为容灾节点。
支持的数据库、订阅的数据库类型以及配置文档
请参见订阅方案概览。
支持的语言
DTS支持多种语言的客户端对数据进行消费,具体如下:
Java
C/C++
Python
Go(AKA golang)
Erlang
.NET
Ruby
Node.js
Proxy(HTTP REST、etc)
DTS为您提供了Java语言的SDK客户端和Kafka客户端示例,请参见使用SDK示例代码消费订阅数据或使用Kafka客户端消费订阅数据。此外,您可以使用对应语言的Kafka官方客户端进行数据消费,请参见Kafka客户端。
如果使用Kafka官方客户端进行数据消费,您需要按照<消费组的账号>-<消费组ID>
的格式设置用户名(例如:dtstest-dtsae******bpv
),否则无法正常连接。
支持的数据类型和订阅对象
数据类型
DTS将源库的增量数据类型分为结构变更DDL(Data Definition Language)和数据变更DML(Data Manipulation Language)。
结构变更DDL
订阅整个实例所有对象的结构创建、删除及修改,您需要使用订阅客户端来过滤所需的数据。
数据变更DML
订阅已选择对象的增量数据更新,包含数据的INSERT、DELETE和UPDATE操作。
订阅对象
订阅对象选择的粒度为库、表。
数据订阅通道
数据订阅通道会实时拉取源数据库中的增量数据,并将最近24小时的增量数据保存在数据订阅通道中。您可以使用SDK客户端、Flink客户端或Kafka客户端从订阅通道中订阅增量数据并进行消费。同时,您也可以在DTS控制台对数据订阅通道进行创建、管理及删除等操作。
数据订阅通道在创建及运行过程中的状态信息如下表所示。
通道状态 | 状态说明 | 可进行操作 |
预检中 | 已经完成数据订阅通道的配置,正在进行预检查。 | 删除订阅 |
未启动 | 已经通过预检查,但是还没有启动订阅。 |
|
初始化 | 正在进行启动初始化,一般需要1分钟左右。 | 删除订阅 |
正常 | 正在拉取数据源的增量数据。 |
|
异常 | 拉取数据源的增量数据时出现异常。 |
|
当数据订阅通道处于异常状态时,该通道将在7天之内被自动恢复。如果需要停止订阅,您可以释放数据订阅通道。
释放数据订阅通道后,该通道中的数据将被释放且无法被找回,请谨慎操作。