Flink 是如何保證 Exactly-once語義的?

Flink 通過實現兩階段提交和狀態保存來實現端到端的一致性語義。
分爲以下幾個步驟:
  • 開始事務(beginTransaction)創建一個臨時文件夾,來寫把數據寫入到這個文件夾裏面。
  • 預提交(preCommit)將內存中緩存的數據寫入文件並關閉。
  • 正式提交(commit)將之前寫完的臨時文件放入目標目錄下。這代表着最終的數據會有一些延遲。
  • 丟棄(abort)丟棄臨時文件。

若失敗發生在預提交成功後,正式提交前。可以根據狀態來提交預提交的數據,也可刪除預提交的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章