Flink初探

编程模型

应该说Flink的编程编程模型和Spark Streaming的DStream还是非常相似的,也是抽象出了Stream概念来表示没有边界的数据流,针对Stream所施加的操作被称之为"transformation",它会把一个流转换成另一个流作为转换的输出。与很多流计算模型一样,流的起点往往是数据的输入源,被称之为"source",流的终点是数据的输出目的地,被成为“sink”。下 图形象地展示了Flink的流计算编程模型:

![Flink编程模型][8]

窗口计算

Flink同样支持窗口计算,并且提供多种不同的时间概念供开发者选择,这些时间概念包括:

  1. 事件时间:是事件创建的时间。它通常由事件中的时间戳描述,例如附接在生产传感器,或者生产服务。Flink通过时间戳分配器访问事件时间戳。
  2. 摄入时间:是事件进入Flink数据流源的时间。
  3. 处理时间:是每一个操作在执行时的本地时间。

这是我们第一次系统地梳理流计算时关于"时间"的概念,在前面介绍Spark Streaming时我们提到了事件时间,大多数时候,事件时间总是更具有实际参考价值,但是全面了解一下这三种时间的定义还是很有必要的,Flink正好给我们总结归纳好了:

![此处输入图片的描述][9]

批处理与更多的编程模型

Flink确实走了一条“不寻常”的路,它以它的流计算内核为基础,将数据处理能力从流计算拓展到了批处理,进而又在更上层提供了面向不同的计算需求的"上层库",下图展示了Flink整体的架构和编程接口:

![此处输入图片的描述][10]

在流处理方面,Flink以DataStream API为基础,向上封装了两个DSL的库,一个是面向复杂事件处理的库:FlinkCEP,另一个是面向结构化数据操作的Table/SQL引擎。在批处理方面,Flink提供了一组专门面向批处理的API- DataSet,然后以这个批处理平台为支撑,向上又分装了机器学习库FlinkML,图计算库Gelly以及Table /SQL引擎。所以说,Flink并不是一个单纯的流计算引擎,而是和Spark一样,以一个核心的库或底层运行时为基础,同时提供流计算和批处理引擎,然后再向上分装各类应用库,进而形成了一个大的生态系统。

[8]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fci.apache.org%2Fprojects%2Fflink%2Fflink-docs-release-1.4%2Ffig%2Fprogram_dataflow.svg&pos_id=img-ZtissHaY-1718768053436)
[9]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fdoc.flink-china.org%2F1.2.0%2Ffig%2Fevent_ingestion_processing_time.svg&pos_id=img-l8oPfOmp-1718768053936)
[10]: https://img-blog.csdnimg.cn/img_convert/26e5d20c485bb1986a4cbe01c09a8d11.png
[11]: https://kafka.apache.org/11/images/streams-architecture-topology.jpg

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laurence 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值