【发布时间】:2020-01-13 16:34:33
【问题描述】:
使用 KSQL 并执行左外连接,我可以看到我的连接结果有时会发出不止一次。
换句话说,相同的连接结果被多次发出。我不是在谈论右侧带有空值的联接版本和没有空值的版本。从字面上看,连接产生的相同记录被多次发出。
我想知道这是否是预期的行为。
【问题讨论】:
标签: apache-kafka ksqldb
使用 KSQL 并执行左外连接,我可以看到我的连接结果有时会发出不止一次。
换句话说,相同的连接结果被多次发出。我不是在谈论右侧带有空值的联接版本和没有空值的版本。从字面上看,连接产生的相同记录被多次发出。
我想知道这是否是预期的行为。
【问题讨论】:
标签: apache-kafka ksqldb
一般的答案是肯定的。 kafka 是一个至少一次的系统。 更具体地说,一些情况可能会导致重复:
您是否在日志中看到任何此类崩溃/超时?
您可以尝试使用一些 kafka 功能来降低发生这种情况的可能性:
enable.idempotence 设置为 true(请参阅 https://kafka.apache.org/documentation/#producerconfigs) - 会产生一些开销transactional.id,以防跨机器故障转移 - 大规模管理变得复杂isolation.level 设置为 read_committed - 增加延迟(需要结合上述 2 完成)auto.commit.interval.ms - 只是减少了重复窗口,并没有真正解决任何问题。以非常低的值产生开销。【讨论】: