В моей настройке у меня есть два экземпляра приложения, которые одновременно работают и обрабатывают запросы, используя Hazelcast для совместного использования состояния и блокировки.Настройка по умолчанию в том, что все данные находятся на обоих узлах, причем 50% находятся в рабочем состоянии, а 50% являются резервной копией для другого узла.
Я хочу добавить сине-зеленое развертывание в мои настройки так, чтобы яможет развернуть новую версию без прерываний обработки запросов и без потери ошибочных данных / запросов на обработку.
Во время развертывания я бы отключил один экземпляр приложения, то есть оставшийся экземпляр теперь будет иметь 100%живых данных и обрабатывать запросы с этим.Если что-то пойдет не так с этим экземпляром, я потеряю все свои данные (у меня нет настроек резервного копирования) - я рад принять этот риск.
Как только я открою экземпляр новой версии приложения, Hazelcast должен начать перебалансировать кэш, чтобы его 50% работало и 50% резервировалось в каждом экземпляре снова.Именно в этот момент я хочу заблокировать и подождать, пока перебалансирование не будет полностью завершено, прежде чем я объявлю новый экземпляр как живой .По завершении новый экземпляр содержит 50% оперативных данных и 50% в качестве резервной копии.
После завершения перебалансировки я могу отключить вторую версию, вызвать новую версию, Hazelcast инициализирует перебалансировкуЯ бы заблокировал, дождался завершения перебалансировки, а затем объявил бы второй экземпляр как живой.
Мое сине-зеленое развертывание теперь будет завершено.
Вопрос: какзаблокировать новый экземпляр до полного перебалансирования (получены все данные)?