在流处理(通常是 Flink 或 Spark Streaming)中实现端到端的 Exactly-Once 语义(EOS),Source 和 Sink 都是 Kafka 且使用两阶段提交(2PC)是非常经典的架构。 如果在写出到目标 Kafka 时,由于 2PC 超时导致下游消费者数据不可见,通常是因为下游消费者配置了 ,而 Kafka 端的事务处于挂起(Pending)状态,导致最后稳定偏移量(LSO, Last Stable Offset)没有向前推进,从而阻塞了消费。 以下是详细的排查过程和解决方案: --- 一、 现象确认与排查步骤 1. 确认下游消费者的隔离级别 检查下游消费者的配置,确认是否设置了 。如果是,消费者只能看到已经 Commit 的事务数据。如果事务未提交或卡住,消费者的 Lag 会持续增加,但无法拉取新数据。 2. 检查 Kafka Broker 日志 去目标集群的 Kafka Broker 节点查看 和 ,搜索 相关的日志。 寻找是否有类似 、 的日志。 确认是否有 (通常是因为客户端请求的超时时间大于 Broker 允许的最大值)。 3. 检查流处理...