在 Kafka 中,幂等性生产者(Idempotent Producer) 是实现“精确一次(Exactly-Once)”语义的核心机制之一。 简单来说,幂等性是指:无论生产者向 Broker 发送了多少次同一条消息,Broker 最终只会将该消息持久化一次,不会产生重复数据。 --- 一、 为什么需要幂等性生产者? 在没有幂等性的情况下,Kafka 默认的投递语义是“至少一次(At-Least-Once)”。 假设发生以下场景: 1. 生产者发送一条消息到 Broker。 2. Broker 成功将消息写入磁盘。 3. Broker 返回 ACK 给生产者时,由于网络抖动,ACK 丢失了。 4. 生产者迟迟没有收到 ACK,触发重试机制(Retries),再次发送同一条消息。 5. Broker 再次接收并写入磁盘。 结果:同一条消息在 Kafka 中被存储了两次,导致下游消费者消费到重复数据。 为了解决这个问题,Kafka 在 0.11 版本引入了幂等性生产者。 --- 二、 底层实现原理(PID 和 Sequence Number) 为了实现幂等性,Kafka 引入了两个核...