

# State & Fault Tolerance 状态与容错

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

例如：

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

Flink需要了解状态，以便使用[检查点](checkpointing.html)实现状态容错，并允许流应用程序的[savepoints](//ci.apache.org/projects/flink/flink-docs-release-1.7/ops/state/savepoints.html)。

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

flink的[QueryableState](queryable_state.html)功能允许您在运行时从FLink的外部访问状态。

在与状态一起工作时，还可能对[Flink"的状态后端](//ci.apache.org/projects/flink/flink-docs-release-1.7/ops/state/state_backends.html)进行读取是有用的。flink提供了不同的状态后端，指定如何存储状态和状态。状态可以位于Java的堆或堆上。根据您的状态后端，FLink也可以_管理_应用程序的状态，这意味着FLink处理内存管理（如果需要，可能会溢出到磁盘），以允许应用程序保持非常大的状态。可以在不更改应用程序逻辑的情况下配置状态后端。

## 下一个去哪里?

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

