У меня есть приложение для обработки потоков, созданное с помощью akka streaems.Входные данные представляют собой набор тем kafka, приложение выполняет недетерминированную операцию с сохранением состояния и сохраняет результат в другой теме kafka.
Состояние может быть получено из каждого выходного сообщения, поэтому при запуске приложение читаетпоследнее сообщение в теме вывода для восстановления его состояния.
Теперь я хочу реализовать развертывание без простоев.Не должно быть более одного экземпляра приложения, работающего одновременно (из-за недетерминированного характера процесса и каждого следующего вычисления, зависящего от результата предыдущего), поэтому я планирую использовать одноэлементную функцию кластера akka,
Я планирую иметь кластер из трех узлов, одноэлементного лидера, который выполняет обработку, и последователей, которые обновляют свое состояние на основе результатов лидера и готовы вступить во владение, если будут выбраны в качестве следующего лидера.
Одновременная передача обслуживания занимает несколько секунд, поэтому этот метод не обеспечивает реальной стратегии развертывания с нулевым временем простоя.Есть ли какой-то другой подход, который я могу использовать?