State & Fault Tolerance 状态与容错

有状态的函数和运算符在各个元素/事件的处理中存储数据,从而为任何类型的更详细的操作创建一个关键的构建块。

例如:

  • 当应用程序搜索某些事件模式时,状态将存储迄今遇到的事件序列。
  • 当每分钟/小时/天聚合事件时,状态保存挂起的聚合。
  • 当在数据流上训练机器学习模型时,状态保存模型参数的当前版本。
  • 当需要管理历史数据时,状态允许有效访问过去发生的事件。v

Flink需要了解状态,以便使用检查点实现状态容错,并允许流应用程序的savepoints

关于状态的知识还允许重新调用flink应用程序,这意味着flink负责在并行实例中重新分配状态。v

flink的QueryableState功能允许您在运行时从FLink的外部访问状态。

在与状态一起工作时,还可能对Flink”的状态后端进行读取是有用的。flink提供了不同的状态后端,指定如何存储状态和状态。状态可以位于Java的堆或堆上。根据您的状态后端,FLink也可以管理应用程序的状态,这意味着FLink处理内存管理(如果需要,可能会溢出到磁盘),以允许应用程序保持非常大的状态。可以在不更改应用程序逻辑的情况下配置状态后端。

下一个去哪里?

  • 使用State:演示如何在Flink应用程序中使用状态,并解释不同类型的状态。
  • 广播状态模式:解释如何将广播流与非广播流连接起来,并使用状态在它们之间交换信息。
  • checkpoint:描述如何启用和配置检查点以进行容错。
  • [Queryable State](queryable_state.html):说明如何在运行时从Flink外部访问状态。
  • 状态模式演进:显示如何演化状态类型的模式。
  • 管理状态的自定义序列化:讨论如何实现自定义序列化程序,尤其是用于架构演进。