Flink-Streaming-State & Fault Tolerance-Overview

有状态的函数和操作符会在处理数据时存储一些数据,这使得state成为了任何想要进行精细操作的操作符的关键组成部分。
例如:

  • 当应用寻找某些特定的模式的数据时,state可以存储一个符合要求的数据的序列
  • 当执行每分钟/小时/天的聚合操作时,state可以存储不断变化的聚合结果
  • 当在数据点形成的流上进行机器学习模型的训练时,state可以存储模型参数的当前版本
  • 当需要管理历史数据时,state允许高效的访问历史数据

Flink需要对state保持感知,这样才可以使用 checkpooint 或 savepoint 做到故障容忍。
state也在伸缩Flink 应用时用到,flink会在应用伸缩后在多个并发实例间重分配state。
queryable state特性允许在flink应用运行时,从外部访问state
当使用state时,阅读下Flink's state backent文档会很有益。Flink提供了几种状态后端,它们决定了状态如何写入以及写入哪里。State可以在Java heap或者 off-heap(堆外内存)。取决于所选的状态后端,flink可以管理应用的state,这意味着flink会进行内存管理以便应用可以维持一个较大的state(需要时,会将state写入磁盘)。状态后端可以在不改变应用逻辑的情况下进行配置。

你可能感兴趣的:(Flink-Streaming-State & Fault Tolerance-Overview)