Flink 状态与容错
状态性的函数和操作通过处理单个(元素/事件)存储数据,使任何类型的state构建更复杂的操作。
例如:
- 当应用程序针对特定事件模式进行搜索的时候,state将会存储到目前为止的一些列事件。
- 当每 分钟/小时/天 聚合事件的时候,state会持有所有等待聚合的数据。
- 当在一连串的数据流上训练机器学习模型时,state持有当前版本的模型参数。
- 当历史数据需要管理的时候,state允许高效的访问过去的数据
flink可以使用checkpoints对statue进行容错管理,并且允许对流应用程序执行savepoint。
了解到应用程序的state可以重新调节,意味着flink负责重新分配并行实例的状态。
Flink的queryable state允许你在flink运行时从外部接收state数据。
在工作的时候使用state,建议阅读Flink's state backends。flink提供了不同的state backends 来指定如何存储和把state数据存储在哪。State可以存在于java堆中。依赖于你的state backends,flink还可以管理应用程序的状态,意味着flink可以通过内存管理(必要时可以溢出到磁盘)来运行应用保存非常大的state。state backends 可以在不改变应用程序的逻辑的情况下进行配置。
后面会有对应的专题文章解释下面的内容
- working with state:在flink应用中展示了如何使用state,并解释了不同类型的状态
- checkpointing:描述了如何启动和配置容错的检查点
- queryable state:解释如何在运行时访问flink以外的state
- custom serialization for managed state:讨论了state的自定义序列化逻辑和它的升级