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"
相关推荐
最笨的羊羊5 小时前
Flink CDC系列之:Kafka表结构信息管理类TableSchemaInfo
flink cdc系列·kafka表结构信息·管理类·tableschemainfo
最笨的羊羊10 小时前
Flink CDC系列之: Kafka 数据接收器实现类KafkaDataSink
kafka·flink cdc系列·数据接收器实现类·kafkadatasink
最笨的羊羊2 天前
Flink CDC系列之:Doris 模式工具类DorisSchemaUtils
doris·flink cdc系列·schemautils·模式工具类
最笨的羊羊2 天前
Flink CDC系列之:flink-cdc-base模块config
flink cdc系列·config·flink-cdc-base
最笨的羊羊2 天前
Flink CDC系列之:flink-cdc-base模块dialect
flink cdc系列·flink-cdc-base·dialect
最笨的羊羊3 天前
Flink CDC系列之:JSON 序列化器JsonRowDataSerializationSchemaUtils
json·flink cdc系列·serialization·json 序列化器·rowdata·schemautils
最笨的羊羊3 天前
Flink CDC系列之:Kafka CSV 序列化器CsvSerializationSchema
kafka·csv·schema·flink cdc系列·serialization·序列化器
最笨的羊羊3 天前
Flink CDC系列之:Kafka的Debezium JSON 结构定义类DebeziumJsonStruct
kafka·debezium·flink cdc系列·debezium json·结构定义类·jsonstruct
最笨的羊羊3 天前
Flink CDC系列之:Kafka JSON 序列化类型枚举
flink cdc系列·kafka json·序列化类型枚举