5分钟了解flink中的watermark

85 阅读1分钟

对于技术要解决的问题的思路,实际上就是现实生活中解决问题的一种实现方式.

Flink 中的 watermark 机制允许系统有效地处理乱序或延迟到达的事件,而不需要无限期地等待每个事件。这在处理大规模实时数据流时尤其重要,因为完全有序的数据流是很难保证的。

生活案例类比

同样的,对于watermark的理解也一样,我们可以拿现实中的问题来举例说明.

想象一下你正在组织一场聚会,邀请了很多朋友。聚会的规则是,大家伙12点都到齐了,才能开始聚会。

在这里,每个礼物就好比是一个数据事件, 每个人应当到达的时间就是事件时间,比方说我坐地铁预计11:48可以到; 每个人实际到达的时间是处理时间,比方说虽然我预计11:48到,但是实际上我是11:52才到;

在这个例子中,watermark 就像是一个内部规则,每个人在12点前都要到达。 一旦这个 watermark 到达12点,此时聚会开始。即使有些人说12点前会到的人实际上在12点后到达,由于 watermark 已经过了12点,这些晚到的人就不能参与聚会了.

在这个比喻中:

  • 礼物 = 数据事件
  • 每个人预计到达的时间标签 = 事件时间
  • 开始聚会 = 处理数据事件(比如计算、汇总等)
  • Watermark(12点) = 系统的时间界定,确保所有12点前的数据都被考虑在内