Настройте Zookeeper для доставки конфигурации только один раз для экземпляра приложения [Spring] - PullRequest
0 голосов
/ 13 января 2020

Я не могу найти решение или какие-либо подсказки онлайн относительно моей проблемы.

Я хочу настроить диспетчер центральной конфигурации с Apache Zookeeper для моего приложения Spring Boot, которое может иметь несколько экземпляров одновременно.

Так что в Zookeeper у меня есть только некоторые данные, которые являются диапазонами:

0-100

101-200

...

900-1000 ...

Допустим, у меня есть два экземпляра (A и B) приложения в начале. Тогда экземпляр A получит диапазон 0-100, а экземпляр B получит следующий доступный диапазон, который равен 101-200. Если новый экземпляр добавлен или какой-то экземпляр перезапущен, он получит следующий доступный диапазон. Каждый экземпляр должен будет считывать данные из конфигурации только один раз, и это происходит при запуске экземпляра.

Я знаю, что нужно читать данные из Zookeeper с помощью @Value и @ ConfigurationProperties.

Указать c с вопросами:

  • Как настроить Zookeeper таким образом, чтобы при считывании данных он больше не действовал или не имел значения?
  • Как настроить Spring Boot для чтения конфигурации из Zookeeper только один раз, при запуске приложения?

1 Ответ

0 голосов
/ 31 марта 2020
  1. Если добавить новый экземпляр или перезапустить какой-либо экземпляр, он получит следующий доступный диапазон.

Вы можете создать ZNode "/ counter" и запишите туда начальное значение (1). Каждый раз, когда вы запускаете новый экземпляр вашего приложения, вы должны запрашивать у этого ZNode текущее значение и устанавливать новое (в вашем случае, если оно было 1, новое должно быть 1 + 100 = 101). Также вам необходимо проверить версию записи при обновлении значения в ZNode.

Как настроить Zookeeper таким образом, чтобы после считывания данных он больше не действовал или не релевантный?

Вы могли бы написать «недопустимый» 'значение в ZNode или удалить его.

Как настроить в Spring Boot чтение конфигурации из Zookeeper только один раз при запуске приложения?

Вы можете делать все, что угодно запуск приложения в методе main (String [] args) (где вы запускаете приложение Spring). Итак, вы можете прочитать конфигурацию прямо здесь, она будет выполнена только один раз. Извините, я не работал с Spring Cloud (:

...