Я не думаю, что режим Flink HA действительно подходит для обновлений с нулевым временем простоя. Режим HA гарантирует, что неисправный Jobmanager может быть заменен без потери информации о состоянии, но это не HA в том смысле, что «недоступность» все еще возникает между временем, когда основной Jobmanager выходит из строя и вторичный Jobmanager вступает во владение. (Или в случае таких систем, как Kubernetes, когда одинокий Jobmanager не проходит проверку работоспособности и заменяется)
Для некоторых типов работ возможны обновления без простоев, но они не поддерживаются самим Flink. Например, если ваше задание выводится в индекс Elasticsearch, вы можете вызвать обновленное задание из точки сохранения параллельно с исходным, но записать в новый индекс, и, когда оно выполнено, переключить клиентов (или псевдоним индекса Elasticsearch). для ссылки на новый индекс.
Другой метод, который я рассмотрел, но никогда не пробовал, - это встроить в ваши приложения способ настройки флага, указывающего, когда начинать или прекращать передачу данных. Таким образом, вы можете обновить конфигурацию исходного задания, чтобы отбрасывать (не пересылать в приемник) любые оконные данные, начиная с некоторой отметки времени в ближайшем будущем, а затем запускать обновленное задание и настраивать его на выдачу первого окна в это время.
Встроенная поддержка «хэндов» без простоев - это функция, которую было бы неплохо иметь во Flink для многих сценариев использования.