【发布时间】:2018-11-10 06:55:33
【问题描述】:
我有一种情况需要使用State 和TimeService 对大量消息进行滑动计数。滑动大小为 1,窗口大小大于 10 小时。我遇到的问题是检查点需要很多时间。为了提高性能,我们使用增量检查点。但是当系统做检查点时它仍然很慢。我们发现大部分时间用于序列化用于清理数据的计时器。我们为每个键设置了一个计时器,总共有大约 3 亿个计时器。
任何解决此问题的建议将不胜感激。或者我们可以用另一种方式进行计数?
———————————————————————————————————————————————
我想为这种情况添加一些细节。滑动大小是一个事件,窗口大小超过10小时(每秒大约有300个事件),我们需要对每个事件做出反应。所以在这种情况下我们没有使用 Flink 提供的 windows。我们使用keyed state 来存储以前的信息。 timers 用于ProcessFunction 触发旧数据的清理工作。最后 dinstinct 键的数量非常大。
【问题讨论】:
-
您能否提供更详细的说明?我试图回答你,但没有更多细节很难
-
请说明情况。滑动尺寸是“一”什么?一小时、一分钟还是一个事件?每个事件分配到多少个不同的窗口?窗口化与所讨论的计时器有何关系(您是在谈论 flink 用于 timeWindows 的计时器,还是 ProcessFunction 中的某些东西)?实际上有 300M 不同的键吗?
-
感谢您的关注。我在情况中添加了一些细节。我希望这可以澄清这个问题。
标签: apache-flink flink-streaming