0

我在 AWS 中运行的 Flink 应用程序(版本 1.11.1)中使用事件时间语义 - 运动分析。此应用程序的源为 kinesis 流,接收器为 Postgres。当在 notifyCheckpointComplete() 上触发 DB 接收器时,检查点间隔为 10 秒。在将不同的流下沉到 Postgres 之前,我使用多个 CoProcessFunction 和 ValueState 来连接不同的流。

观察是检查点数据大小在一段时间内增长,而线程数和堆内存利用率保持不变。CPU 利用率不超过 30%。我希望检查点数据大小最终会趋于稳定。

在此处输入图像描述

在浏览有关状态 TTL 的 flink 文档时,似乎当前状态 ttl 仅支持处理时间语义 -状态生存时间 (TTL)

基于事件时间的 Flink 应用程序的前进方向是什么?

4

1 回答 1

0

您仍然可以使用状态 TTL。只是状态保留间隔必须用挂钟时间表示,而不是与事件中的时间戳相关。

但是,如果您想更好地控制清除状态的时间和方式,您可以使用 CoProcessFunctions 中的计时器来触发对clear.

于 2021-03-02T10:59:00.827 回答