Apache flink 如何在零停机的情况下进行滚动升级

Apache flink 如何在零停机的情况下进行滚动升级,apache-flink,flink-streaming,Apache Flink,Flink Streaming,是否可以在零停机的情况下执行作业版本更新 也许和你一起?i、 e用更新的作业替换备用作业,然后取消主作业,这将使备用(更新)成为主作业,然后上载新的更新作业,而不是我们在上一阶段取消的主作业,以维护HA。 这种情况可能吗?是否存在其他可以实现作业版本更新零停机时间的方案 我认为Flink HA模式实际上不适合零停机作业升级。HA模式确保可以在不丢失状态信息的情况下更换出现故障的Jobmanager,但在主Jobmanager出现故障和辅助Jobmanager接管之间仍然出现“不可用”的情况下,H

是否可以在零停机的情况下执行作业版本更新

也许和你一起?i、 e用更新的作业替换备用作业,然后取消主作业,这将使
备用
(更新)成为
主作业
,然后上载新的更新作业,而不是我们在上一阶段取消的
主作业
,以维护HA。
这种情况可能吗?是否存在其他可以实现作业版本更新零停机时间的方案

我认为Flink HA模式实际上不适合零停机作业升级。HA模式确保可以在不丢失状态信息的情况下更换出现故障的Jobmanager,但在主Jobmanager出现故障和辅助Jobmanager接管之间仍然出现“不可用”的情况下,HA不是HA。(或者对于Kubernetes这样的系统,当单独的Jobmanager未通过健康检查并被替换时)

对于某些类型的作业,零停机升级是可能的,但Flink本身不支持。例如,如果您的作业输出到Elasticsearch索引,您可以从保存点将升级后的作业与原始作业并行调出,但写入新索引,当它被调出时,切换您的客户端(或Elasticsearch索引别名)以引用新索引

我考虑过但从未尝试过的另一种技术是在应用程序中构建一种配置标志的方法,该标志表示何时开始或停止发送数据。这样,您可以更新原始作业的配置,以便在不久的将来从某个时间戳开始删除(而不是转发到接收器)任何窗口数据,然后运行升级的作业,并将其配置为在该时间发出第一个窗口

对零停机时间“切换”的内置支持是Flink在许多用例中都具有的一项功能