DZone.com Feed на русском
Подписаться
Идемпотентная ключевая информация для долгосрочных задач при поэтапном развертывании
Планируемая задача, которой требуется от девяноста до ста восьмидесяти секунд для создания одного выходного файла, выглядит безобидной до того дня, когда вы выпускаете новую сборку, пока она еще выполняется. Контроллер развертывания завершает старую задачу и запускает замену. В течение двух-трех минут обе реплики активны, обе читают один и тот же снимок входных данных и обе намереваются записать один и тот же логический вывод. Без идемпотентной привязки вывода они записывают его дважды, и вторая запись не обязана совпадать с первой. Любой потребитель, который читает в течение этого окна, может получить состояние, собранное из двух разных запусков.Это не теоретическая гонка. Она проявляется в любой системе, где длительная задача публикует данные в общее хранилище, а оркестратор использует поэтапные развертывания, то есть в большинстве производственных пакетных конвейеров. Сбой происходит незаметно. Ничего не падает. Журналы показывают два успешных завершения задачи. Повреждение существует исключительно в выводе и проявляется позже как последующее решение, принятое на основе данных, которых никогда не существовало в виде согласованного снимка.