Flink 如何实现新的流处理应用第二部分:版本化状态

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 如何实现新的流处理应用第二部分:版本化状态相关的知识,希望对你有一定的参考价值。

Flink 系统性学习笔记


这是我们关于 Flink 如何实现新的流处理应用系列中的第二篇博文。第一部分介绍了事件时间和乱序处理

这篇文章是关于版本化应用程序状态,后面是关于会话和高级窗口的文章。

1. 有状态数据流处理

流处理可以分为无状态处理和有状态处理。无状态流处理应用仅是接收事件,然后基于接收的单个事件的信息产生某种响应(例如,报警或事件转换)。因此,没有"记忆"或聚合能力。但是在许多场景下还是有用的(例如,过滤,简单的转换),许多有趣的流处理应用,例如基于时间窗口的聚合,复杂事件处理,多事件的模式匹配,以及事务处理都是有状态的。

早期的流处理系统,如 Apache Storm(使用 core API)不支持状态(Storm Trident,Storm 通过附带的库来支持状态)。Storm 程序可以在 Bolts 上定义 Java 对象来保存状态,与外部数据库和键/值存储系统进行交互,但是出现故障的时候,系统并不能提供状态的正确性保证,可能退回到 At-Least-Once 语义(数据重复),或 At-Most-Once 语义(数据丢失)。这种缺乏准确性保证,再加上无法处理大数据流(高

以上是关于Flink 如何实现新的流处理应用第二部分:版本化状态的主要内容,如果未能解决你的问题,请参考以下文章

Flink 如何现实新的流处理应用第一部分:事件时间与无序处理

Flink 如何现实新的流处理应用第一部分:事件时间与无序处理

Flink 如何现实新的流处理应用第一部分:事件时间与无序处理

Flink 系统性学习笔记系列

整合Kafka+Flink 实例(第二部分 设计思路)

为什么说新一代流处理器Flink是第三代流处理器(论点:发展历史区别适用场景)