状态与容错

有状态函数和 算子在各个数据元/事件的处理中存储数据,使状态成为任何类型的更复杂 算子操作的关键构建块。

例如:

  • 当应用程序搜索某些事件模式时,状态将存储到目前为止遇到的事件序列。
  • 在每分钟/小时/天聚合事件时,状态保存待处理的聚合。
  • 当在数据点流上训练机器学习模型时,状态保持模型参数的当前版本。
  • 当需要管理历史数据时,状态允许有效访问过去发生的事件。Flink需要了解状态,以便使用检查点使状态容错,并允许流应用程序的保存点

有关状态的知识还允许重新调整Flink应用程序,这意味着Flink负责跨并行实例重新分配状态。

Flink 可查询状态函数允许您在运行时从Flink外部访问状态。

在使用state时,阅读Flink的状态后台可能也很有用Flink提供了不同的状态后台,用于指定状态的存储方式和位置。State可以位于Java堆上或堆外。根据您的状态后台,Flink还可以管理应用程序的状态,这意味着Flink处理内存管理(如果需要可能会溢出到磁盘)以允许应用程序保持非常大的状态。可以在不更改应用程序逻辑的情况下配置状态后台。

下一步

  • 使用状态:显示如何在Flink应用程序中使用状态并解释不同类型的状态。
  • 广播状态模式:解释如何将广播流与非广播流连接,并使用状态在它们之间交换信息。
  • 检查点:描述如何启用和配置容错检查点。
  • 可查询的状态:介绍如何从Flink之外运行期间访问状态。
  • 托管状态的自定义序列化:讨论状态及其升级的自定义序列化逻辑。