我们有一个Flink设置与卡夫卡生产者目前使用至少一次的语义.我们正在考虑切换到卡夫卡生产者的精确一次语义学,因为这会给我们带来好处。然而,考虑到文档,这似乎会增加非常可能的数据丢失风险,而我们目前还没有这种风险。如果由于Flink无法恢复或Kafka经纪人倒闭,我们有一个长期的停机时间,卡夫卡交易可能到期,数据将丢失。
如果Flink应用程序崩溃和完成重新启动之间的时间大于Kafka的事务超时时间,就会出现数据丢失(Kafka将自动中止超过超时时间的事务)。
这似乎是一种全新的风险,至少在一次语义中是不存在的,也是无法减轻的。不管设置了多大的事务超时,都可能会有一个达到实际情况的情况。在我看来,最好的方法是有很短的检查点间隔,因为它会导致事务被关闭,但仍然有一个非常大的事务超时(小时),以便减少数据丢失的机会。我的理解正确吗?
发布于 2020-12-30 08:23:18
https://stackoverflow.com/questions/65490072
复制相似问题