Каков наилучший способ хранения постоянного поля в микросервисной архитектуре? - PullRequest
1 голос
/ 14 марта 2019

Многие серверы используют одинаковые константы, необходимо организовать их централизованное изменение.Каков наилучший способ хранения постоянных параметров в микросервисной архитектуре.

Например, мы храним static final int MAX_PEOPLE_COUNT = 100;В этой области используются разные микроуслуги.Если мы изменим это значение, все микросервисы должны его увидеть.

Было бы замечательно иметь также контроль версий значений параметров.

Ответы [ 3 ]

5 голосов
/ 14 марта 2019

Если вы находитесь в экосистеме Spring, лучше всего использовать Spring Cloud Config Server . Вы можете легко и просто получить инструкции по настройке сервера конфигурации в руководстве Spring Cloud Config Server и здесь . Документация довольно проста.

Вы даже можете использовать Zookeeper в качестве централизованной службы конфигурации с Spring Cloud. Подробнее об этом в этой статье .

1 голос
/ 14 марта 2019

Существует множество решений для хранения кросс-микро-сервисной конфигурации.Начиная со всей базы данных.Мы специально используем консоль от HashiCorp для хранения наших конфигураций с несколькими микро-сервисами.

0 голосов
/ 16 марта 2019

Расширение аргумента @Madhu Bhat, на мой взгляд, также наилучшим способом является использование Spring Cloud Config Server (начало работы)

Теперь, в зависимости от вашего варианта использования, эта парамикросервисов имеют некоторые общие настраиваемые значения (я намеренно изменил слово с CONSTANT на CONFIGURABLE, так как по определению константа не является чем-то, что должно быть изменено), лучший способ использования Весной конфигурационные файлы выглядят следующим образом:

Предположим, у вас есть 3 микросервиса в вашей экосистеме (гипотетический сценарий)

  • billing-service
  • cart-service
  • product-service

Рекомендуется поддерживать файл конфигурации на разных уровнях -

  • microservice + среда, зависящая от среды файл конфигурации, например, billing-dev.properties или billing-test.properties Этот файл свойств будет содержать свойства, специфичные для конкретной среды.т для конкретной услуги.Служба выставления счетов может иметь определенные свойства, которые отличаются для вашей среды dev и для среды test .Вы можете иметь столько же файлов свойств / конфигурации, сколько и вашей среды.

  • Уровень микросервиса - свойства, общие для всех сред для конкретных микросервисов, например billing.properties

  • application.properties - этот файл свойств содержит свойства, общие для всех микросервисов или нескольких микросервисов ( ваш вариант использования )например, для выставления счетов и обслуживания продуктов требуется какое-либо настраиваемое свойство.

Разрешение свойства / конфигурации:

С точки зрения микросервиса (скажем, службы выставления счетов) любое свойство будетсначала выполняется поиск в первом упомянутом файле свойств (billing-test.properties или billing-dev.properties) в соответствии с тем, какую среду вы указали при запуске службы путем настройки свойством (см. здесь подробно)

spring.profiles.active

Если желаемое свойство не найдено в свойстве среды, тогда откатФайл конфигурации для поиска будет вторым упомянутым файлом конфигурации файла универсальной службы для всех сред ( billing.properties ).

Если свойство не найдено в вышеупомянутых двух файлах, оно будетразрешается application.yml file

...