前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >揭秘流式计算引擎Flink中的时间窗口机制

揭秘流式计算引擎Flink中的时间窗口机制

作者头像
brookwang
发布2023-09-02 10:18:47
6110
发布2023-09-02 10:18:47
举报
文章被收录于专栏:人人都是架构师(公众号)

前言

数据,已经渗透到当今各行各业的价值创造过程中,成为核心生产要素之一。海量数据的挖掘和运用,已经初见成效。各大厂也在不断尝试用新的流式计算框架来对数据进行处理。其中Flink就是一个非常耀眼的存在。今天,这篇文章就重点介绍一下Flink作为一个实时流处理引擎,其最核心的时间和窗口机制。

Flink中的时间与窗口

大数据处理中有两种经典模式:批处理、流处理。Flink以流为核心,构建出了高性能、高可用的批流一体的分布式大数据计算引擎,在数据流上提供数据分发、通信、具备容错能力的分布式计算功能。

目前,Flink以流式计算引擎为基础,同样也支持批处理,并且提供了SQL、复杂事件处理CEP、机器学习、图计算等更高级的数据处理场景。

流式处理系统长期以来一直应用在提供低延迟、不准确/近似结果的场景里,通常结合批处理系统来提供最终正确的结果。而流批一体计算的设计核心,就是窗口。

时间类型

在Flink中定义了3种时间类型:

3种时间类型

  • 事件时间(Event Time):事件发生的时间,一旦确定之后再也不会改变。
  • 处理时间(Processing Time):消息被计算引擎处理的时间,以各个计算节点的本地时间为准。
  • 摄取时间(Ingestion Time):时间进入流处理系统的时间,对于一个事件来说,使用其被读取的那一刻的时间戳作为摄取时间。

在Flink应用中可以使用这3种时间类型,其中最常用的是事件时间和处理时间。

窗口类型

为了对数据进行切分处理,Flink中提供了3类默认窗口:计数窗口、时间窗口和会话窗口。

计数窗口(Count Window):分为滚动计数窗口和滑动计数窗口。

  • 滚动计数窗口:累积固定个数的元素即视为一个窗口,该类型的窗口无法像时间窗口一样事先切分好。
  • 滑动计数窗口:累积固定个数的元素视为一个窗口,每超过一定个数的原则个数,则产生一个新的窗口。

时间窗口((Time Window):分为滚动时间窗口和滑动时间窗口。

  • 滚动时间窗口:表示在时间上按照事先约定的窗口大小切分的窗口,窗口之间不会相互重叠。
  • 滑动时间窗口:表示在时间上按照事先约定的窗口大小、滑动步长切分的窗口,滑动窗口之间可能会存在相互重叠的情况。

会话窗口((Session Window):是一种特殊的窗口,当超过一段时间,该窗口没有收到新的数据元素,即视为该窗口结束,所以无法事先确定窗口的长度、元素个数,窗口之间也不会相互重叠。

水印 Wartermark

水印用于处理乱序事件。数据总是可能因为各种原因导致延迟,比如网络延迟、数据乱序、背压、failover等。对于延迟太久的数据,不能无限制的等下去,所以必须有个机制,来保证特定的时间后一定会触发窗口进行计算,这个触发机制就是Wartermark。

Wartermark处理逻辑

小结

本文简要介绍了flink中的时间与窗口相关的内容。更详细的内容摘自《Deep in Flink:Flink内核原理与实现》。在书中,系统性介绍了Flink相关的基础知识、核心执行以及运维管理、时间与窗口、内存管理,作业的提交、调度以及执行等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人人都是架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档