Flink如何保证 Kafka 的记录一次,尽管重试


0

我的源头和源头都是 Kafka 的话题。有没有一种方法可以为每个不同的 Kafka 记录生成一次唯一的id?“精确一次”意味着如果重试发生,同一记录仍使用以前生成的相同id,并且 sink只存在单个记录。

2 答案


0

不清楚您希望通过添加这个惟一的id获得什么,也不清楚对其唯一性的要求。

但是,如果您担心由于故障恢复过程中发生的重试,Flink会在输出主题中创建重复记录,则可以配置Flink和Kafka以避免这种情况,并保证只执行一次行为。

要实现一次端到端保证:

    启用Flink checkpoints

这种方法的代价是下游Kafka消费者的预期延迟等于 checkpoints间隔。

有关详细信息,请参阅文档。


0

想到的最简单的想法就是简单地创建一个函数,为每个记录生成唯一的hashcode()。如果hashcode将基于字段,那么它对于非不同的记录是相同的,对于不同的记录应该是不同的。

您甚至可以考虑在Java中使用hashcode()from Object。


我来回答

写文章

提问题

面试题