我有一个Apache Flink应用程序,它从单个Kafka主题读取。我想不时更新应用程序而不会遇到停机。目前,Flink 应用程序通过 http rest API 执行一些简单的运算符,例如 map 和一些同步 IO 到外部系统。
我尝试使用 stop 命令,但得到"作业终止 (STOP( 失败:此作业不可停止",我知道 Kafka 连接器不支持停止行为 - 一个链接!一个简单的解决方案是使用保存点取消并使用保存点重新部署新 jar,但随后我们会出现停机时间。另一种解决方案是从外部控制部署,例如,通过切换到新主题。
什么是好的做法?
如果您不需要恰好一次输出(即可以容忍一些重复(,则可以在不取消正在运行的作业的情况下获取保存点。保存点完成后,将启动第二个作业。第二个作业可以写入不同的主题,但不必这样做。当第二个作业启动时,您可以取消第一个作业。