我有一个从kafka读取数据的flink作业,从redis读取一些内容然后将聚合的窗口数据写入redis接收器(redis写入实际上是调用加载到redis中的lua脚本来增加现有值,所以我可以只在这里递增而不是更新)。
问题在于,当我停止工作(维护,代码更改等)时,即使使用保存点,我也必须将重复数据写入redis或在恢复时丢失一些数据,因为就我而言理解它,redis sink对语义没有保证(确切/至少/最多一次)。
问题是 - 是否有某种关闭信号可以让我干净地关闭工作以保证一次语义?
换句话说,我正在寻找的是:
这可能吗?关于如何处理停机(计划/计划外)的任何其他想法都将受到欢迎。