Kafka 的事务消息(Transactional Message)是在 Kafka 0.11 版本引入的核心特性,主要用于实现 Exactly-Once Semantics (EOS,精确一次语义)。 Kafka 事务最核心的场景是 “消费-处理-生产”(Read-Process-Write) 模式(例如 Kafka Streams)。它保证了从上游 Topic 读取消息、提交消费位移(Offsets)、并向下游 Topic 写入处理结果,这三个操作要么全部成功,要么全部失败,从而实现原子性跨分区写入。 下面深入拆解 Kafka 事务消息的底层实现原理。 --- 一、 核心概念与组件 在了解流程之前,需要先认识几个关键组件和概念: 1. Transactional ID (): 由用户显式配置的全局唯一静态字符串。 作用是跨越 Producer 的重启,确保同一个 Producer 实例重启后依然能被 Kafka 识别。 2. Producer ID (PID) 和 Epoch: PID:Kafka 集群为每个 Producer 分配的内部唯一 ID。 Epoch(纪元):与 ...