分布式一致性訊息傳遞、事件處理等場景中十分重要:
- At most Onece:最多一次,如果算子處理事件失敗,算子將不再嘗試該事件,
- At Least Onece:至少一次,如果算子處理事件失敗,算子會再次嘗試該處理事件,直到有一次成功,
- Exactly-Once:嚴格地,有且僅處理一次,通常有兩種方法實作:
1.分布式快斬訓狀態檢查點,思想就是對比檢查點和分布式快照中的狀態,如出現狀態不一致就回退到最小狀態處,重新計算,
2.At least Onece + 去重,重播失敗的算子,并洗掉重復算子的結果,
從理論上看,上面這兩種機制之間存在差異,但兩者均可理解為至少一次處理外加冪等保證,上面提到的兩種機制均使用持久的后端存盤作為事實來源(Source of truth),用于保存每個運算子的狀態,并自動提交狀態更新,對于機制1(分布式快照/狀態檢查點),這個持久的后端存盤可用于保存流應用程式中全域一致的狀態檢查點(每個運算子的狀態檢查點);對于機制2(至少一次事件交付,外加去重),這個持久的后端存盤可用于保存每個運算子的狀態,以及為了追蹤哪些事件已經被成功處理過而為每個運算子生成的事務日志,
- Effectively-Onece:有效的一次或者最終一次,狀態的提交或對事實來源的持久后端進行的更新可描述為事件(Occurring)的嚴格一次,然而在計算狀態的更新 / 改動,例如所處理的事件正在針對事件執行各種用戶定義的邏輯時,如果失敗則可能進行多次,這一點正如上文所述,換句話說,事件的處理可能會進行多次,但處理的最終結果只會在持久的后端狀態存盤中體現一次,因此Streamlio認為“實際一次(Effectively-once)”可以更精確地描述這樣地處理語意,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29392.html
標籤:大數據
上一篇:大資料引擎分代
下一篇:hadoop
