全部產品
Search
文件中心

Data Transmission Service:Kafka Partition遷移策略說明

更新時間:Mar 13, 2025

在配置遷移到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中,效能一般。