1
我有一個flink作業,從kafka讀取數據,是否從redis中讀取數據,然後將聚合的窗口數據寫入redis sink(redis寫入實際上是調用加載的lua腳本到增加現有值的redis中,所以我只能在這裏遞增而不更新)。Flink關閉掛鉤以最大限度地減少數據丟失/複製
問題在於,當我停止作業(維護,代碼更改等)時,即使使用保存點,我仍然必須在重新啓動時將重複數據寫入redis或丟失一些數據,因爲儘可能我明白了,redis sink沒有關於語義的保證(完全/至少/最多一次)。
問題是 - 是否有某種停機信號,可以讓我乾淨地關閉作業以保證一次語義?
換句話說,我要找的是:
- 收到關機信號
- 停止從卡夫卡讀取和提交的偏移量(已完成(從取消工作?) ?在連接器內部)
- 處理完的剩餘數據(窗口是非常短 - 15秒,處理時間)
- 寫最後窗口的最後輸出翻滾窗口回Redis的
- 關機噸他的工作
這可能嗎?歡迎任何關於如何處理停機(計劃/未計劃)的其他想法。