01.状态一致性
at-most-once at-least-once exactly-once
02.状态计算:
Key State 和 Operator state
03.状态存储和恢复
checkpoint:checkpoint的机制
savepoint
恢复机制:
04.状态管理
state backkend(分类-配置等)
State Processor API(Flink 1.9版本)
05.状态查看
Query
Flink状态具体介绍
1.状态一致性
State Consistency
at-most-once at-least-once exactly-once
fault tolerance 容错
2.状态计算-stateful
Stateful operators may maintain information about the events they have received before
01.Key State 应用于 KeyStream
Manged State
使用 StateDescription 来获取相应的State的操作类
RichFunction中可用的RuntimeContext具有访问状态的方
定义状态的名称,数据类型信息,状态自定义函数
ValueState ValueStateDescription value()/update()
ListState ListStateDescription get()/ update()/add()/addAll()
MapState MapStateDescription get()/put()/keys()/values()/entries()
ReducingState ReducingStateDescription get()/add()
AggregatingState AggregatingStateDescription get()/add()
eg: 在RichFlatmapFunction中使用ValueState
步骤:01.创建ValueStateDescription,02.使用getRuntimeContext.getState() 03.使用value()方法
生命周期TTL
Raw State
raw state是被应用程序自己管理,flink会调用相应的接口方法来实现状态的restore和snapshot
02.Non-key State == operator state
Manged State
Checkpointed-Function
ListCheckpoint
001. Broadcast State是Flink支持的一种Operator State
01.首先会创建一个Keyed或Non-Keyed的Data Stream
02.然后再创建一个 Broadcasted Stream
03.最后通过Data Stream来连接(调用connect方法)到Broadcasted Stream上,
这样实现将Broadcast State广播到Data Stream下游的每个Task中
状态数据重分布说明:
Event-Split Redistribute
Union Redistribution
Raw State
03其他:状态数据的划分和动态扩容
keyed State 动态扩展 当并发度改变时,Group在Task之间重新分配