flink使用的是基於chandy-lamport演算法的分布式快照
chandy-lamport algorithm 有興趣的同學可以看看。
檢查點配置**:
streamexecutionenvironment env = streamexecutionenvironment.
getexecutionenvironment()
;// 檢查點配置
env.
enablecheckpointing
(300);
// 高階選項
// 設定檢查點策略 exactly_once / at_least_once
env.
getcheckpointconfig()
.setcheckpointingmode
(checkpointingmode.exactly_once)
;// 檢查點超時時間
env.
getcheckpointconfig()
.setcheckpointtimeout
(1000l)
;// 設定可能同時進行的最大檢查點嘗試次數。
env.
getcheckpointconfig()
.setmaxconcurrentcheckpoints(2
);// 設定兩次檢查點嘗試之間的最小暫停時間
env.
getcheckpointconfig()
.setminpausebetweencheckpoints
(100l)
;// 設定是否有較新的儲存點時作業恢復是否應回退到檢查點。flink 1-12.0中已過期
env.
getcheckpointconfig()
.setprefercheckpointforrecovery
(true);
// 設定可容忍的檢查點失敗次數,預設值為0,表示
env.
getcheckpointconfig()
.settolerablecheckpointfailurenumber(0
);// 重啟策略配置
// 固定延遲重啟
env.
setrestartstrategy
(restartstrategies.
fixeddelayrestart(3
,10000l));
// 失敗率重啟
env.
setrestartstrategy
(restartstrategies.
failureraterestart(3
, time.
minutes(10
),time.
minutes(1
)));
Flink容錯機制
所謂的distributed snapshot,就是為了儲存分布式系統的state,那麼首先我們需要定義清楚什麼是分布式系統的state。考慮到上述分布式模型的定義,分布式系統state同樣是由 程序狀態 和 通道狀態 組成的。在某乙個時刻的某分布式系統的所有程序和所有通道狀態的組合,就是這個分布式...
Flink之四 容錯機制
批處理系統比較容易實現容錯機制,由於檔案可以重複訪問,當某個任務失敗後,重啟該任務即可。但是在流處理系統中,由於資料來源是無限的資料流,乙個流處理任務甚至可能會執行幾個月,將所有資料快取或是持久化,留待以後重複訪問基本上是不可行的。flink基於分布式快照與可部分重發的資料來源實現了容錯,使用者可自...
Flink狀態管理和容錯機制介紹
1.1什麼是有狀態的計算 計算任務的結果不僅僅依賴於輸入,還依賴於它的當前狀態,其實大多數的計算都是有狀態的計算。比如wordcount,給一些word,其計算它的count,這是乙個很常見的業務場景。count做為輸出,在計算的過程中要不斷的把輸入累加到count上去,那麼count就是乙個sta...