在Flink的官网写着:Stateful Computations over Data Streams。
基于状态计算的数据流。
在流式计算中,希望做一些聚合分析等。那么就需要保存当前日志的状态,以备与后来的日志做比较。
在Flink中每个操作都会有状态的保存无论是source、sink还是operator。
按照使用使用keyby可将State分为Keyed State 和 Operator State。他们的区别主要在于Keyed State有key而Operator State没有key。
而按照State的操作是否为运行时的可分为:Raw State和Managed State。Raw State是用户自定义的使用State,虽然不太建议。用户可以在RichFunction中使用。
Flink支持不少State的保存方式:memory、fs、rocksdb。
State可以用于状态保存还可以用于容错、checkpoint等。总之功能很强大。
但是,感觉State都是Flink在维护不需要用户定义使用。