Flink CDC系列之:Kafka 分区策略枚举类PartitionStrategy
这是一个 Kafka分区策略枚举类,定义了如何将 ProducerRecord 分发到 Kafka 的不同分区。
枚举定义
java
public enum PartitionStrategy {
/** All {@link ProducerRecord} will be sent to partition 0. */
ALL_TO_ZERO("all-to-zero"),
/** {@link ProducerRecord} will be sent to specific partition by primary key. */
HASH_BY_KEY("hash-by-key");
private final String value;
PartitionStrategy(String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
}
策略详解
ALL_TO_ZERO - 全部发送到分区 0
字符串值: "all-to-zero"
行为: 所有消息都发送到 Kafka 主题的第 0 个分区
适用场景:
- 数据量较小,不需要分区并行处理
- 需要严格保证消息顺序的场景
- 测试和开发环境
特点:
- 简单直接
- 可能造成单个分区压力过大
- 无法利用 Kafka 的分区并行能力
HASH_BY_KEY - 按键哈希分区
字符串值: "hash-by-key"
行为: 根据消息的 主键哈希值 决定发送到哪个分区
适用场景:
- 生产环境,需要负载均衡
- 需要保证相同键的消息进入相同分区(保证顺序)
- 大规模数据处理的场景
特点:
- 较好的负载均衡
- 相同主键的消息会进入相同分区
- 充分利用 Kafka 的并行处理能力
配置方式
java
# 在 Flink CDC 配置中
sink:
partition-strategy: "hash-by-key" # 或 "all-to-zero"