一、前言

《腾讯云数据库DTS发布全新数据集成方案:全增量无缝同步,快速构建实时数仓》一文中,我们介绍了如何使用DTS的「数据同步」服务,将MySQL数据同步到Ckafka并应用于大数据场景中。读者可能会产生疑问:DTS的「数据订阅」服务也提供了类似的功能,那么这两者有何区别,实际使用时应如何选择?为此,本文将为您详细介绍相关内容。

二、为什么会形成两种

方案?

2.1 关于DTS

DTS是腾讯云自主研发的数据库传输服务工具,具有高传输性能、高可用、安全连接、操作便捷等特点,可以实现数据源在业务不停服状态下的实时数据同步,整个数据同步过程对源库业务没有影响。

DTS提供了「数据迁移」、「数据同步」、「数据订阅」三项服务,每个服务的定位和应用场景不同,可以满足用户不同的数据传输诉求。「数据迁移」主要用于数据库搬迁,如云下数据库上云的场景;「数据同步」主要用于两个数据源的长期实时同步,如双活、异地灾备等场景;「数据订阅」则是将源端数据变更同步到不确定的目标端,应用于缓存更新,大数据分析等场景。

DTS目前针对大数据集成场景提供了两种技术方案:

方案一:采用「数据同步」服务,将源端的全量+增量数据同步到用户自行维护的Ckafka中,再通过消费程序,将消息投递到数据湖仓。

方案二:采用「数据订阅」服务,将源端的增量数据同步到订阅服务内置的Kafka中,用户无需维护Kafka,只需要创建并使用消费组,再通过消费程序,将消息投递到数据湖仓。

为什么会形成两种方案,这就需要追溯DTS的历史发展渊源。

2.2 数据订阅

「数据订阅」的设计初衷是为了满足用户在没有明确下游链路的情况下,能够灵活地对接各种类型的下游场景,比如数据仓库、自定义处理程序等。为了简化用户操作,数据订阅会将源库的数据变更缓存在内置的Kafka中,从而实现“一站式”的数据同步,源库和目标下游之间只需通过DTS连接,无需使用其他中间服务。

数据订阅的具体实现如下(以MySQL为例):

数据订阅中,DTS会模拟成MySQL的从库,拉取源库的增量Binlog,并将其解析后投递到内置的Kafka中。但由于内置Kafka只有一个默认的Topic,因此无法进行多Topic的投递方式。

当我们收到用户的大数据集成需求时,用户提出一些新的诉求:

(1)需要将数据同步到他们自己的Kafka中。

(2)需要将数据投递到Kafka的多Topic下。

(3)需要实现全量+增量数据的无缝同步。

基于现有的同步能力以及对用户需求的深入调研,DTS团队形成了到Kafka的数据同步方案,即采用全量+增量数据一起的同步方式,将数据源先同步到Ckafka,再从Ckafka消费数据投递到数据湖仓。这样也可以复用同步的部分核心能力,比如任务重试,即在数据同步过程中任务发生异常中断,可以重试后继续同步,无需从头开始。

2.3 数据同步到Kafka

数据同步到Kafka的实现方案如下:

DTS会获取源端的全量+增量数据,并将其无缝衔接同步到消息队列CKafka中,由于目标端是用户自己的Kafka,因此可灵活配置。同时,用户也可在同步过程中设置投递策略,如指定源库中不同的表投递到目标端不同的Topic中。

那这两种方案在实际使用时如何选择呢?接下来为您详细介绍。

三、如何选择数据同步

最佳方案?

数据同步到Kafka(以下简称方案一),与数据订阅(以下简称方案二),两者的实现原理类似,都可实时获取源库的数据变更,都可应用于数据归档、数据分析等场景中,但在实际应用中,应根据具体情况选择最佳方案。

下图对比了两个方案的关键差别,如红色字体所示。

我们也整理了这两个方案各项差异的对比情况,如下表格所示。

下面我们结合使用场景,对关键的差异点进行详细介绍。

3.1 全量+增量 VS 增量

如果用户只需要获取新增日志,新增订单等类似信息,仅需要同步增量数据,可选择方案二(方案一也可以,需再结合其他差异点对比)。如果用户需要获取源数据库的历史存量和新增的数据,则选择方案一。

3.2 用户是否有自己的Kafka

方案一中,用户可以自行购买Ckafka,可灵活设置topic,比如创建多个Topic,将不同的表数据投递到不同的Topic中。另外可以设置Kafka中数据的保存时间和单个消息大小等参数。同时,用户在消费的时候不受地域限制,具有较高的灵活性。

相比之下,在方案二中,目标端为内置的Kafka,用户无需购买,节省Kafka的费用,但同时也无法修改Topic信息,只能将数据投递到一个默认Topic中,通过自定义partition分区策略来满足分区投递和并发消费的需求。此外,消费时需要在腾讯云网络环境进行,且消费的地域需要与DTS订阅任务的地域保持一致。

3.3 成本&性能

方案一中,费用包括购买DTS同步任务和CKafka。不同的DTS同步任务规格有不同的传输性能需求,规格越高,费用越高。

方案二中,用户仅需购买DTS订阅任务,其中DTS订阅任务提供通用的规格。

如果数据量大,对同步性能有要求,建议选择方案一的高规格链路;如果对性能要求不高,建议计算成本后,选择费用较低的一个方案即可。

四、应用案例

4.1 数据同步到Kafka

某教育行业用户使用DTS将数据同步到Kafka,替代之前的Canal组件方案。用户采用不同表写入到不同Topic的形式,消费数据时每个Topic的数据独立消费,最终实现了高性能传输和高稳定性保障,同时有效降低了运维成本。

  • 传输性能高:DTS的传输性能与用户实际网络延时、带宽、数据库本身的规格配置都有关系,在用户源端和目标端规格都比较高,网络无瓶颈的情况下,项目实测DTS全量阶段的RPS(每秒同步行数)最高可达30万/s,增量阶段RPS最高可达1.5万/s。
  • 稳定性强:DTS可提供高SLA保证,任务稳定性极强。
  • 运维成本低:用户之前使用Canal组件时,平均每月大概需要投入半个人力到研发和运维。改用DTS后,任务配置完成后基本无需运维人员投入,大大降低了运维成本。

4.2 数据订阅

某娱乐行业用户使用DTS数据订阅,替代之前的Flink CDC+MQ方案。改造后链路配置和维护便捷,数据无丢失。

  • 传输性能高:传输性能与源库的配置、网络带宽等因素都有关系。用户源端为腾讯云数据库且无压力,在网络无瓶颈,源库仅为简单事务操作,订阅数据格式为ProtoBuf的场景下,RPS可达到2万/s。
  • 传输延时低:从源库写入数据到下游消费到数据的延时,与实际的网络带宽、源库压力、源库数据的复杂程度都有关系。在源库无压力,网路无瓶颈的场景下,DTS订阅任务的延时一般在100ms左右。
  • 稳定性强:订阅任务提供高SLA保证,任务稳定性极强。
  • 数据无丢失:相比之前的Flink CDC,DTS订阅可保证数据准确同步无丢失。

五、总结

DTS提供了两种数据同步方案,两种方案相辅相成,可以满足用户在大数据场景下的不同诉求。

  • 数据同步到kafka:适用于全量+增量数据同步,且目标端Kafka为用户自己的Kafka,数据消费时不受腾讯云网络地域限制,支持同步数据到多Topic中。
  • 数据订阅:适用于增量数据同步,目标端Kafka为DTS内置Kafka,需要在腾讯云内网与DTS同地域的VPC中进行消费。

-- 更多精彩 --

腾讯云数据库DTS发布全新数据集成方案:全增量无缝同步,快速构建实时数仓

腾讯云TDSQL获评“2023年度可信云金融行业服务最佳实践”

↓↓点击阅读原文,了解更多优惠

文章来源于腾讯云开发者社区,点击查看原文