美文网首页
基于Apache Flink的流处理 第二章 流处理基础

基于Apache Flink的流处理 第二章 流处理基础

作者: kaiker | 来源:发表于2021-09-12 15:47 被阅读0次

1、Dataflow

  • Dataflow图中,顶点为算子,代表计算,边代表数据依赖关系。
  • 没有输入端的算子被称为数据源
  • 没有输出端的算子被称为数据汇


    数据流图

2、数据流上的操作

  • 无状态的。处理事件时无需依赖已处理过的时间,也不保存历史数据。
  • 有状态的。算子需要维护之前接收的事件信息,它们的状态会根据传入的事件更新,并用于未来事件的处理逻辑中。

2.1转换操作

转换操作就是只过一次的操作,比如map


转换操作

2.2 滚动聚合

根据每个到来的事件持续更新结果


滚动求最小值

2.3 窗口聚合

窗口操作会持续创建一些称为桶的有限事件集合,允许基于这些有限集进行计算

  • 滚动窗口:将事件分配到长度固定且互不重叠的桶中


    基于时间的滚动窗口
  • 滑动窗口:将事件分配到大小规定且允许相互重叠的桶中


    滑动窗口
  • 会话窗口:根据事件之间的间隔将事件分为不同的会话


    会话窗口

3、时间语义

  • 处理时间:当前流处理算子在机器上的本地时钟时间。
  • 事件时间:数据流中事件实际发生的时间。

水位线

水位线用来触发窗口。
水位线是一种被传递的特殊的时间戳数据。
水位线传递到算子的时候,算子认为水位线时间戳之前的数据都已经收到了。

3、状态和一致性保证

  • 至多一次:每个事件至多被处理一次。不恢复、重放丢失事件,其实等于没有保障。
  • 至少一次:所有事件都会最终处理,但是有些可能会处理多次。
  • 精确一次:事件没有丢失且所有事件处理过一次。需要数据重放、确保内部状态一致性。flink采用轻量级检查点机制来实现精确一次结果保障。
  • 端到端精确一次:整个数据管道上结果都是正确的。

相关文章

网友评论

      本文标题:基于Apache Flink的流处理 第二章 流处理基础

      本文链接:https://www.haomeiwen.com/subject/bpctgltx.html