全部产品
Search
文档中心

数据传输服务 DTS:Kafka Partition同步策略说明

更新时间:Dec 27, 2024

在配置同步到Kafka的数据同步作业时,为提升同步的性能,您可以调整Kafka Partition(分区)同步策略,例如根据Hash结果将数据同步至不同的Partition。

Hash算法

DTS采用Java默认的hashcode算法来计算Hash值。

配置方法

您需要在配置数据同步作业的对象配置环节中配置Kafka Partition同步策略。

警告

数据同步作业启动后,请勿修改目标Topic的Partition数量,否则将导致数据同步失败。

策略说明

策略名称

说明

优缺点

全部投递至Partition 0

将所有数据和DDL信息都投递到目标Topic的Partition 0。

  • 优势:所有对象的创建、更改顺序都和源库保持一致。

  • 缺点:性能一般。

按库名+表名的hash值投递到不同Partition

将库名与表名合并作为Partition Key来计算Hash值,然后将各个表的数据和DDL信息投递到目标Topic中的各个Partition。

说明
  • 同一个表的数据和DDL信息会投递到同一个Partition。

  • 与表无关的DDL信息(例如CREATE DATABASE)则投递到Partition 0。

  • 优势:单个表的创建、变更顺序和源端保持一致,性能较好。

  • 缺点:由于不同的表投递到不同的Partition,表与表之间的先后顺序无法保证。

将Redis全量数据和增量数据分别投递到不同的Partition

将Redis实例的全量数据和增量数据,分别投递到目标Topic中的各个Partition。

  • 优势:可以将Redis实例的数据分别投递到不同的Partition。

  • 缺点:同一个Key的数据可能会出现在不同的Partition中,性能一般。

按主键的hash值投递到不同Partition

将表中的列(默认为主键,如果无主键则使用唯一键)作为Partition Key来计算Hash值,然后将不同的行投递到目标Topic的各个Partition中。您也可以指定单个或多个列作为Partition Key来计算Hash值。

说明
  • 此策略下,DDL信息默认投递到目标Topic的Partition 0中。

  • 如果表没有主键和唯一键,DTS会将其数据和DDL信息都投递到目标Topic的Partition 0。

  • 优势:该策略性能最好。

  • 缺点:只能保证单条记录的变更的先后顺序,无主键表以及多张表之间的先后顺序无法保证。

按Redis Key的hash值投递到不同Partition

将Redis实例的Key的作为Partition Key来计算Hash值,然后将全量数据和增量数据投递到目标Topic的各个Partition中。

  • 优势:可以将Redis实例的数据分别投递到不同的Partition。

  • 缺点:同一个Key的数据可能会出现在不同的Partition中,性能一般。