我有一个flink Job,它从一个Kafka主题读取数据,丰富数据并将其发送到输出Kafka话题。
从我的源kafka,我得到了一致的3mbs和每秒200条消息。但有时我可以得到70毫秒和每秒9k条信息的峰值。
当出现这样的峰值时,我的输出主题配额无法处理我发送的消息量。所以我在我的水槽上忙了100%,这导致了反向结果,导致了检查点失败,导致了作业失败。有时作业无法成功重新启动。
有没有一种方法可以在不导致作业重新启动的情况下处理这样的数据峰值。(比如放慢从源代码读取的速度主题(
Flink会自动将背压转发到源,并将读取速度减慢到管道的容量。问题不在于来源没有被抑制,而是在严重的背压期间,检查点屏障没有取得足够快的进展。
未对齐的检查点和缓冲区去浮动都是为了在这种情况下提供帮助。有关详细信息,请参阅有关背压下的检查点的文档。(尽管自Flink 1.11起就可以使用未对齐的检查点,但该功能自Flink 1.13以来效果最好。缓冲区去浮动从1.14开始可用。(
您还可以考虑增加检查点超时,并且您可能希望研究自动缩放,将其作为在峰值负载期间扩大集群的一种方式。