在 Flink 中,容錯機制是通過檢查點(Checkpointing)和保存點(Savepoints)來實現的。這兩種機制都可以確保在發生故障時,可以從最近的正確狀態恢復任務。
檢查點是 Flink 中用于實現容錯機制的關鍵特性。它定期捕獲應用程序的狀態并將其寫入持久化存儲。檢查點的間隔可以通過 env.enableCheckpointing(interval)
方法進行配置。默認情況下,檢查點間隔為 5 秒。
當檢查點觸發時,Flink 會暫停應用程序的執行,將狀態寫入持久化存儲,然后恢復執行。這樣,在發生故障時,Flink 可以從最近的檢查點恢復應用程序的狀態。
為了使檢查點正常工作,需要確保持久化存儲是可用的。Flink 支持多種存儲系統,如文件系統、HDFS、S3 等。可以通過 flink.checkpoints.dir
配置項指定持久化存儲的目錄。
保存點是用于手動觸發容錯機制的機制。與檢查點類似,保存點也會捕獲應用程序的狀態并將其寫入持久化存儲。然而,保存點是由用戶觸發的,而不是由 Flink 自動觸發的。
要觸發保存點,可以使用 jobmanager.triggerSavepoint(savepointPath)
方法。這個方法會向作業管理器發送一個請求,要求它在指定的路徑下創建一個保存點。作業管理器會將當前應用程序的狀態寫入保存點,并在完成后返回一個確認消息。
在發生故障時,可以使用保存點來恢復應用程序的狀態。與檢查點類似,需要確保持久化存儲是可用的。
總結:
Flink 通過檢查點和保存點實現了容錯機制。檢查點是自動觸發的,用于定期捕獲應用程序的狀態并將其寫入持久化存儲。保存點是由用戶手動觸發的,也可以用于捕獲應用程序的狀態并將其寫入持久化存儲。在發生故障時,Flink 可以從最近的檢查點或保存點恢復應用程序的狀態。