Flink原理学习之 状态
一、Flink的状态
状态在Flink中叫做State,用来保存中间计算结果或者缓存数据。State是实现有状态的计算下Exactly-Once的基础。
- 状态主要分为两种类型:
- Operator State:跟一个特定算子的实例绑定,整个算子只对应一个State对象(相同的并行算子都能访问到状态)。只支持ListState
- Keyed State:状态跟特定的key绑定,即每个KeyedStream对应一个State对象。支持多种State(ValueState、MapState、ListState等)
-
广播状态:
在一个数据流需要被广播到所有下游任务,并在下游算子本地存储,在处理另一个流的时候就要依赖广播状态。比如业务数据流正常处理,但当规则更新的时候,则规则数据流需要被广播至所有业务数据流的并行算子中,并以广播State的形式在这些算子中缓存规则数据(必须是MapState类型)。主流和广播流通过connect,广播函数也提供了处理广播流数据和主流数据的接口。 -
状态后端:
状态后端具备以下两种能力:
(1) 在计算过程中提供

本文深入探讨了Flink的状态,包括Operator State和Keyed State,以及状态后端和持久化的全量与增量方式。同时,文章阐述了Flink的checkpoint机制,如何通过分布式快照实现应用容错,并详细解释了Flink如何实现端到端一致性保证。此外,还讨论了算子并行度变化时State的恢复策略。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



