Flink 源码解读
文章平均质量分 87
一起研读 Flink 源码
@SmartSi
Stay Hungry, Stay Foolish
展开
-
Flink 源码解读系列 State
外部 State API 是对外部用户开放的稳定 API,需要使用这种 API 来开发应用程序。开发者 API(Internal API)是对内部开发者使用的 API,是不稳定的,可能会随着版本迁移发生变化。开发者 API(Internal API)在形式上继承了对外 API原创 2023-05-13 16:08:37 · 199 阅读 · 0 评论 -
Flink 源码解读系列 CheckpointCommitter
对于那些依赖于不支持回滚的状态后端的 Sink,当前检查点机制并不是完全适合。当处理这样的系统时,如果想要保证 Exactly-Once 语义,那么既不能在创建快照时提交数据(如果 Sink 的另一个实例失败了可能会导致对相同数据的重放),也不能在接收检查点完成通知时提交数据(因为后续失败将使我们不知道数据是否被提交)。原创 2023-05-07 23:53:11 · 194 阅读 · 0 评论 -
Flink 源码解读系列 DataStream 时间服务管理器 TimeServiceManager 设计与实现
Flink 1.12.0 版本将 InternalTimeServiceManager 重构为一个接口原创 2022-09-18 22:34:53 · 458 阅读 · 0 评论 -
Flink 源码解读
Flink 源码解读系列原创 2022-09-18 22:29:14 · 511 阅读 · 0 评论 -
Flink 源码解读系列 DataStream 数据流元素 StreamElement
StreamElement 是一个抽象类,其下有数据记录 StreamRecord、延迟标记 Latency Marker、Watermark、数据流状态 StreamStatus 4 种类型,如下图所示:在执行层面上,4 种数据流元素都被序列化成二进制数据,形成混合的数据流,在算子中将混合数据流中的数据流元素反序列化出来,根据其类型分别进行处理。下面我们详细看一下每种数据流元素。原创 2022-09-15 23:14:32 · 639 阅读 · 0 评论 -
Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器
这篇文章主要从源码角度讲一下 Flink DataStream 中带 Watermark 生成的时间戳分配器。我们通常通过 DataStream 的 assignTimestampsAndWatermarks 方法分配时间戳并生成 Watermark。这两种时间戳分配器均是 TimestampAssigner 的子类,具体继承关系如下图所示。在为元素分配时间戳的基础之上增加了生成 Watermark 的逻辑,可以理解是一个实现 Watermark 生成逻辑的时间戳分配器。原创 2022-09-10 17:18:21 · 1088 阅读 · 0 评论 -
Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner
在前一篇文章中,我们了解到 Flink 窗口 Window 有两种具体实现,一个是 TimeWindow,一个是 GlobalWindow。有了窗口之后,我们如何将元素分配给窗口呢?在这篇文章中我们重点了解一下窗口分配器 WindowAssigner 是如何将输入流中的元素划分给窗口的。...原创 2022-08-29 23:26:14 · 432 阅读 · 0 评论 -
Flink 源码解读系列 DataStream 窗口 Window 实现
在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一条消息就处理一次,但是有时我们需要做一些聚合类的处理,例如计算在过去 1 分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。.........原创 2022-08-28 20:48:32 · 492 阅读 · 0 评论