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的自定義序列化邏輯和它的更新