在 Kafka 中,实现跨 Partition 的写入原子性(即 Exactly-Once Semantics,EOS 的核心部分)依赖于Transaction Coordinator(事务协调器,简称 TC)和内部的 主题。 Kafka 的事务机制确实采用了类似于两阶段提交(2PC)的协议,但为了适应高吞吐量的流处理场景,它对传统的 2PC 进行了改良(去除了同步阻塞和投票阶段)。 以下是 Transaction Coordinator 如何通过这种“类 2PC”机制保证跨 Partition 写入原子性的详细原理解析: --- 核心组件概述 1. Transactional ID (TID):开发者指定的全局唯一事务 ID。 2. Producer ID (PID) & Epoch:Kafka 自动分配的生产者 ID 和纪元,用于防范“僵尸生产者”(Zombie Fencing)。 3. Transaction Coordinator (TC):运行在 Broker 上的后台组件,负责管理事务状态。 4. :Kafka 的内部 Topic,充当 TC 的预写式日志(WAL),...