这是一个非常经典且核心的流处理场景。 要确保拿到“事件发生那个时刻”的维表快照数据(即严格的 Event-Time 语义,且能处理 Update 和 Delete),标准的 Lookup Join 是无法做到的,必须使用基于 Flink CDC 的 Event-Time Temporal Table Join(事件时间时态表关联)。 下面详细解释为什么,以及具体如何实现。 --- 核心结论对比 1. Lookup Join (外部查找联接) 机制:基于处理时间 (Processing Time)。当事实流的一条数据到达 Flink 时,Flink 发起一个 RPC 请求(如通过 JDBC)去查 MySQL 的当前最新状态。 致命缺陷:如果事实流发生延迟,或者消费堆积,当数据被处理去查 MySQL 时,MySQL 里的维表可能已经被 Update 甚至 Delete 了。你拿到的是“处理时刻”的数据,而不是“事件发生时刻”的数据。 2. Temporal Table Join (时态表联接) 机制:基于事件时间 (Event Time)。利用 Flink CDC 实时抽取 MySQ...