

# 状态与容错

> 译者：[flink.sojb.cn](https://flink.sojb.cn/)


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

例如：

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

Flink需要了解状态，以便使用[检查点](checkpointing.html)使状态容错，并允许流应用程序的[保存点](https://flink.sojb.cn/ops/state/savepoints.html)。

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

Flink 的[可查询状态](queryable_state.html)函数允许您在运行时从Flink外部访问状态。

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

## 下一步

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

