最新容錯機制(NameNode容錯機制)
縮放、遷移集群等。
Flink 是采用輕量級的分布式異步快照,其實現是采用柵欄 barrier 作為 checkpoint 的傳遞信號,與業務數據一樣無差別地傳遞下去 ,目的是使得數據流被切分成微批,進行 checkpoint 保存為 snapshot。當 barrier 經過流圖節點的時候,Flink 進行 checkpoint 保存狀態數據。
如下圖所示,checkpoint n 包含每個算子的狀態,該狀態是指checkpoint n 之前的全部事件,而不包含它之后的所有事件。
針對用戶作業出現故障而導致結果丟失或者重復的問題,Flink 提供3種語義:
① At-Least-Once 最少一次 :不會丟失數據,但可能會有重復結果。
② Exactly-Once 精確一次 :checkpoint barrier 對齊機制可以保障精確一次。
① FailureRateRestartStrategy :允許在指定時間間隔內的最大失敗次數,同時可以設置重啟延時時間。
② FixedDelayRestartStrategy :允許指定的失敗次數,同時可以設置重啟延時時間。
③ NoRestartStrategy :不需要重啟,即 Job 直接失敗。
④ ThrowingRestartStrategy :不需要重啟,直接拋異常。
Job Restart 策略可以通過 env 設置。
上述策略的父類接口是RestartStrategy,其關鍵是restart(重啟操作)。
① RestartAllStrategy :重啟全部 task,默認策略。
② RestartInpidualStrategy :恢復單個 task。如果該 task 沒有source,可能導致數據丟失。
③ NoOpFailoverStrategy :不恢復 task。
上述策略的父類接口是FailoverStrategy,其關鍵是Factory的create(創建 strategy)、onTaskFailure(處理錯誤)。
如何產生可靠的全局一致性快照是分布式系統的難點,其傳統方案是使用的全局時鐘,但存在單點故障、數據不一致等可靠性問題 。為了解決該問題, Chandy-Lamport 算法采用 marker 的傳播來代替全局時鐘 。
① 進程 Pi 記錄自己的進程狀態,同時生產一個標識信息 marker(與正常 message 不同),通過 ouput channel 發送給系統里面的其他進程。
② 進程 Pi 開始記錄所有 input channel 接收到的 message
進程 Pj 從 input channel Ckj 接收到 marker。如果 Pj 還沒有記錄自己的進程狀態,則 Pj 記錄自己的進程狀態,向 output channel 發送 marker;否則 Pj 正在記錄自己的進程狀態(該 marker 之前的 message)。
所有的進程都收到 marker 信息并且記錄下自己的狀態和 channel 的狀態(包含的 message)。
Flink 的分布式異步快照實現了Chandy Lamport 算法,其核心思想是 在 source 插入 barrier 代替 Chandy-Lamport 算法中的 marker,通過控制 barrier 的同步來實現 snapshot 的備份和 Exactly-Once 語義 。
Checkpoint Coordinator 向所有 source 節點 trigger Checkpoint。
source task向下游廣播barrier。
當source task備份完自己的狀態后,會將備份數據的地址(state handle)通知 Checkpoint Coordinator。
map和sink task收集齊上游source的barrier n,執行本地快照。下面例子是RocksDB增量Checkpoint 的流程:首先RocksDB會全量保存到磁盤上(紅色大三角表示),然后Flink會從中選擇沒有上傳的文件進行持久化備份(紫色小三角)。
map和sink task在完成Checkpoint 之后,將狀態地址state handle返回通知 Coordinator。
當Checkpoint Coordinator收到全部task的state handle,就確定該Checkpoint已完成,并向持久化存儲中備份一個Checkpoint Meta(元數據,包括該checkpoint狀態數據的備份地址)。
容錯糾錯機制的意義和目的
建立容錯機制,讓人能作為、敢作為,這主要是針對一些人存在不作為、不會為、亂作為,或不敢作為的情況。容錯就意味著可以給他們嘗試的機會,糾錯就是對于錯誤的改正,是一種對于工作內容的補充,通過這樣的方式放開他們的手腳,才可以更加有所作為。
詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫學等領域),建議您咨詢相關領域專業人士。