欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Kafka 消费者组 Rebalance 机制与位移提交语义

发表于:|最后更新:|分类:大数据与流计算|阅读:1376 次

Kafka 消费者组(Consumer Group)通过 Rebalance 将分区重新分配给组内成员,保证同一分区在同一时刻仅被一个消费者消费。

一、Rebalance 触发条件

  • 组成员加入或离开
  • 订阅主题的分区数变化
  • 心跳超时(session.timeout.ms)

二、位移提交语义

java
props.put("enable.auto.commit", "false");

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    process(records);
    consumer.commitSync();
}
  • 至多一次(At-Most-Once):先提交位移后处理,故障时可能丢消息
  • 至少一次(At-Least-Once):先处理后提交,故障时可能重复消费
  • 精确一次(Exactly-Once):结合幂等生产者与事务实现

生产环境推荐手动提交并保证处理逻辑幂等。