Apache kafka KSQL表左外部联接多次发出相同的联接结果
通过使用KSQL并执行左外连接,我可以多次看到连接的结果 换句话说,相同的联接结果会多次发出。我不是说,连接的一个版本在右边有空值,另一个版本没有空值。从字面上讲,连接产生的同一条记录被多次发出Apache kafka KSQL表左外部联接多次发出相同的联接结果,apache-kafka,ksqldb,Apache Kafka,Ksqldb,通过使用KSQL并执行左外连接,我可以多次看到连接的结果 换句话说,相同的联接结果会多次发出。我不是说,连接的一个版本在右边有空值,另一个版本没有空值。从字面上讲,连接产生的同一条记录被多次发出 我想知道这是否是一种预期的行为 一般的答案是肯定的。卡夫卡是一个至少有一次的系统。 更具体地说,有几种情况可能导致重复: 消费者只会定期检查他们的位置。消费者崩溃可能会导致某些范围或记录的重复处理 生产者有客户端超时。这意味着生产者可能认为请求超时并在代理端实际成功时重新传输 如果在kafka集群之间镜
我想知道这是否是一种预期的行为 一般的答案是肯定的。卡夫卡是一个至少有一次的系统。 更具体地说,有几种情况可能导致重复:
enable.idemptence
设置为true(请参阅)-会产生一些开销transactional.id
,以防跨机器的故障转移变得复杂,难以大规模管理isolation.level
为read\u committed
-增加延迟(需要与上述2项结合使用)auto.commit.interval.ms
——只是减少了重复窗口,并不能真正解决任何问题。以非常低的值产生开销为什么将“精确一次”设置为处理担保无法解决此问题?“ksql.streams.processing.guarance”:“精确一次”@MaatDeamon-没有魔法,只有开销。该设置(如果我正确阅读了文档)只需为ksql控制下的所有生产者和消费者设置我上面提供的所有配置。请注意,即使在官方文档中,您也会被警告,要真正获得一次,即使是ksql控制之外的上游/下游客户机也需要正确配置。您应该真正衡量DUP对性能的影响和损害