1.视界
2. 概述
Flink 支持有状态的操作和用户方法。例如,窗口操作使用状态维护不断追加的聚合数据,sink 操作使用状态保证一致性提供 exactly-once 语义。
大多数流应用是有状态的。很多operators会不断的访问并更新某中状态,例如一个window中收集了多少条记录,输入源中当前读到的位置,亦或是用户定义的特定operators的状态。无论是内置的operator还是用户定义的operators,Flink对待它们都是一致的。在这章我们会讨论Flink 支持的不同的状态类型、state是如何被存储并由state backends管理的,以及有状态的应用如何通过重新分发state而进行扩展。
一般来说,所有数据都由一个task维护,并被用于计算一个函数的结果,这个函数包含于此task的state。可以认为state是一个本地变量或是一个实例变量,可以由task的业务逻辑访问。下图展示了一个task与它的state的常规交互过程: