一、实现原理
如下以 MySQL 为例进行介绍。数据订阅通过实时拉取源实例的 Binlog 增量日志,将增量数据解析成 Kafka message,然后存储到 Kafka Server。用户可以通过 Kafka Client 来消费数据,Kafka 作为一种开源的消息中间件,支持多数据通道消费和多种 SDK 语言,降低用户的使用成本。
二、典型应用场景
示例场景一:数据实时分析
使用 DTS 数据订阅,将业务进行异步解耦,在不影响源库业务的情况下,实时同步源库数据到分析系统中,帮助企业用户进行实时数据分析。
示例场景二:数据归档存储
使用 DTS 数据订阅,你可将源数据库的增量更新数据实时地流式推送到归档数据库或数据仓库。
三、约束限制
·订阅的消息保存在 DTS 内置 Kafka(单 Topic)中,目前默认保存时间为最近1天,单 Topic 的最大存储为500G,当数据存储时间超过1天,或者数据量超过500G 时,内置 Kafka 都会开始清除最先写入的数据。所以请用户及时消费,避免数据在消费完之前就被清除。
·数据消费的地域需要与订阅任务所属地域相同。
四、性能说明
订阅链路中,源库解析的数据先写入 DTS 内置 Kafka 中,然后通过客户端进行消费。写入和消费的性能如下:
| 场景 | 性能上限参考 |
| 数据写入内置 Kafka(MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL MySQL 单分片) | 10MB/s |
| 数据写入内置 Kafka(TDSQL MySQL 多分片) | 10MB/s * 分片数 |
| 从内置 Kafka 消费数据 | 20MB/s(单消费组) |
| | 50MB/s(多消费组) |
如上性能数据仅提供参考,因为在实际使用过程中,源数据库负载过大、网络延迟过高等因素都可能导致性能受限。
五、支持的订阅类型
DTS 支持订阅对象选择的粒度为库、表,具体支持如下三种订阅类型。
·数据更新:指订阅 DML 操作。
·结构更新:指订阅 DDL 操作。
·全实例:指订阅所有库表的 DML 以及 DDL 操作。
六、消费支持的数据格式
用户对订阅数据进行消费时,支持 ProtoBuf、Avro 和 JSON 三种形式。ProtoBuf 及 Avro 是二进制格式,效率更高,JSON 为轻量级的文本格式,更加简单易用。
七、版本说明
订阅 2.0 是数据订阅的新一代架构版本,相比订阅 1.0(原 Kafka 版),底层消息链路升级为基于腾讯云 CKafka 云产品能力承载,并采用用户粒度的资源隔离机制,可有效降低共享资源带来的相互影响,提升订阅链路的稳定性、可靠性和资源保障能力。
八、支持的功能列表
| 支持功能 | 功能描述 | 相关文档 |
| 支持各种 SDK 语言 | 数据订阅使用 Kafka 协议,支持各种语言 Kafka Client SDK。 | – |
| 支持指标监控和默认告警策略 | 支持对数据订阅的各项指标进行监控。支持对数据订阅事件的监控进行默认配置,事件异常时自动通知用户。 | 支持的事件和指标 |
| 支持多数据通道消费 | 单个实例支持创建多个数据通道,通过创建消费组实现多个通道同时消费。 | – |
| 支持分区消费 | 单 Topic 数据支持分区存储,多个分区的数据并发消费,提升消费效率。 | – |
| 支持自定义路由策略 | 支持将数据字段按照自定义规则路由到 Kafka 分区。 | – |
| 支持修改消费位点 | 支持修改消费位点 Offset。 | 修改消费位点 |
| SSL 安全连接 | DTS 与源数据库之间的传输通道支持 SSL 安全连接,对传输通道进行加密。 | – |
| 支持 XA 事务 | DTS 可以识别源库进行的 XA 事务操作,在消费端获取的数据是按照 XA 事务的逻辑进行解析。 如果源库发生了 XA 事务回滚(rollback),DTS 可以识别 rollback,源库上 rollback 及 rollback 之前的 SQL 语句不会再传递到消费端。 |
– |