私はkafkaからデータを読み込み、redisからいくつかの読み込みを行い、集計されたウィンドウデータをredis sinkに書き出します(redis書き込みは実際に読み込まれるluaスクリプト既存の値を増分する赤字に変換するため、ここで増分するだけで更新することはできません)。データの損失/複製を最小限に抑えるためにFlinkシャットダウンフック
セーブポイントを使用してもジョブを停止すると、重複したデータを書き込むか、再開するときにデータが失われるという問題があります。私はそれを理解しています、redis sinkはセマンティクス(正確には/少なくとも - 少なくとも - at-most)については保証していません。
問題は、シャットダウン信号があり、セマンティクスを正確に保証するためにジョブを完全にシャットダウンすることができますか?言い換えれば
、どのような私が探していることにある。
- は(ジョブのキャンセルから?)シャットダウン信号を受信
- ストップはカフカから読み込み、オフセット(すでに完了をコミットコネクタ内)
- 残りのデータを処理仕上げ(窓は非常に短い - ?15秒、処理時間のタンブリングウィンドウ)
- は
- シャットダウントンをRedisのために戻って最後のウィンドウの最後の出力を書き込みます彼の仕事
これは可能ですか?私がどのようにダウンタイム(計画中/計画外)に対処できるかについての他のアイデアは歓迎されます。