什么是状态编程? 在流处理中,数据是连续不断处理的。 在 Flink 中,算子任务可以分为无状态和有状态两种情况。 有状态的算子任务,则除当前数据之外,还需要一些其他数据来得到计算结果。 这里的“其他数据”,就是所谓的状态(state),最常见的就是之前到达的数据,或者由之前数据计算出的某个结果。比如,做求和(sum)计算时,需要保存之前所有数据的和,这就是状态;窗口算子中会保存已经到达的所有数据,这些也都是它的状态。 (1)算子任务接收到上游发来的数据; (2)获取当前状态; (3)根据业务逻辑进行计算,更新状态; (4)得到计算结果,输出发送到下游任务。