Kafka 的幂等性生产者(Idempotent Producer)是在 Kafka 0.11 版本引入的核心特性。它的主要作用是保证生产者在进行重试时,不会在 Broker 端产生重复的消息,从而将 Kafka 的投递语义从“至少一次(At Least Once)”升级为单分区内的“精确一次(Exactly Once)”。 其核心机制正是依赖于 PID(Producer ID) 和 Sequence Number(序列号)。以下是具体的实现原理和工作流程: 1. 核心概念解析 为了实现幂等性,Kafka 引入了两个底层标识: PID (Producer ID): 每个生产者在初始化(启动)时,都会向 Broker 发送请求,Broker侧的事务协调器(Transaction Coordinator)会为其分配一个全局唯一的 PID。 这个过程对用户是完全透明的。 注意:PID 绑定的是生产者的单个会话(Session)。如果生产者重启,会分配一个新的 PID。 Sequence Number (序列号): 对于每个 PID,针对其发送的每一个 (主题-分区),生产者都会维护一个...