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

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

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

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

0-100

101-200

...

900-1000...

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

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

Чтобы быть конкретным с вопросами:

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

person backend-designer    schedule 13.01.2020    source источник


Ответы (1)


  1. #P1#

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

  1. #P3#

Вы можете записать какое-то «недопустимое» значение в ZNode или удалить его.

  1. #P5#

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

person Snatch    schedule 31.03.2020