State & Fault Tolerance

原文链接


有状态函数和操作符在单个元素/事件的处理过程中存储数据,使状态成为任何类型的复杂操作的关键构件。

例如:

  • 当应用程序搜索某些事件模式时,状态将存储到目前为止所遇到的事件列表。
  • 当按分钟/小时/天聚合事件时,状态持有这期间的聚合。
  • 当通过数据点流训练机器学习模型时,状态保存模型参数的当前版本。
  • 当需要管理历史数据时,状态允许对发生在过去的事件进行有效的访问。

Flink需要了解状态,以便使用Checkpoint进行容错,并允许流应用程序进行savepoint。

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

Flink的 可查询状态 特性允许在运行时,从Flink外部访问状态。

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

你可能感兴趣的:(State & Fault Tolerance)