状态 & 故障恢复
Flink是一个基于状态计算的流计算服务。Flink将所有的状态分为两大类: keyed state 与 operator
state .所谓的keyed state指的是Flink底层会给每一个Key绑定若干个类型的状态值,特指操作
KeyedStream中所涉及的状态。所谓operator state指的是非keyed stream中所涉及状态称为operator
state,所有的operator state会将状态和具体某个操作符进行绑定。无论是 keyed state 还 是 operator state flink将这些状态管理底层分为两种存储形式:
Managed State和Raw State
Managed State- 所谓的Managed State,指的是由Flink控制状态存储结构,例如:状态数据结构、数据
类型等,由于是Flink自己在管理状态,因此Flink可以更好的针对于管理状态做内存的优化和故障恢复。
Raw State - 所谓的Raw state,指的是Flink对状态的信息和结构一无所知,Flink仅仅知道该状态是一些
二进制字节数组,需要用户自己去完成状态序列化和反序列化。,因此Raw State Flink不能够针对性的做内存优化,也不支持故障状态的恢复。因此在Flink实战项目开发中,几乎不使用Raw State.