В настоящее время я работаю с реализацией, основанной на:
org.springframework.integration.support.leader.LockRegistryLeaderInitiator
Наличие нескольких ролей-кандидатов, так что только один экземпляр приложения в кластере выбирается в качестве лидера для каждой роли.Во время инициализации кластера, если для свойства autoStartup установлено значение true, первый инициализированный экземпляр приложения будет выбран в качестве лидера для всех ролей.Это то, чего мы хотим избежать, и вместо этого имеем справедливое распределение ведущих ролей в кластере.
Одним из возможных решений, описанных выше, может быть то, что, когда кластер готов и правильно инициализирован, затем вызывается конечная точка, котораявыполнит:
lockRegistryLeaderInitiator.start()
Для всех экземпляров в кластере, чтобы начался процесс выборов и роли были справедливо распределены по экземплярам.Один из недостатков заключается в том, что это должно быть частью процесса развертывания, добавляя каким-то образом сложность.
Каков предлагаемый наилучший метод для вышеизложенного?Есть ли планы на дополнительные функции, связанные?Например, чтобы автоматически запускать выборы лидера только тогда, когда доступны экземпляры приложения X?