Spring boot application.properties в распределенной среде? - PullRequest
0 голосов
/ 26 июня 2018

Я хочу развернуть мою весеннюю загрузку в распределенной среде. В общем, какова лучшая практика?

1.Каждый узел распределенной среды имеет свое собственное application.properties

2.Все узлы распределенной среды совместно используют одно приложение. Свойства

Это мой первый весенний загрузочный проект, пожалуйста, не убивайте меня за этот вопрос: P

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Возможны многие варианты в зависимости от ваших потребностей, некоторые тривиальны, другие более сложны, но более гибки.

Для начала, вы можете сохранить конфигурацию в приложении весенней загрузки, конечно, не идеальным способом, но его очень простым. Вы можете поместить application-local.properties, application-production.properties и т. Д. В папку ресурсов и запустить приложение весенней загрузки с активными профилями для нужной среды.

Другая, более продвинутая настройка использует файл конфигурации, но хранит его вне приложения. Здесь вы будете развертывать этот файл конфигурации отдельно от приложения, и здесь возможно множество вариантов, включая общие файловые системы, автоматическое развертывание и т. Д. Вы можете запустить приложение весенней загрузки с --spring.config.location=<path to configuration file>

Теперь, если вы хотите сохранить конфигурации в git-репозитории или файловой системе и у вас в организации много микросервисов, управление ими становится беспорядочным. Так что в этом случае вы можете проверить конфигурацию серверов. Spring boot интегрирован с сервером конфигурации, который является частью весеннего облачного проекта. Вы можете найти здесь больше информации.

Это, безусловно, самая продвинутая настройка - вы даже можете динамически изменять конфигурации и не перезапускать микросервисы с весенней загрузкой (Google для Refreshable bean в конфигурации с весенней загрузкой). Кроме того, вы можете сохранить конфигурацию в репозитории git, и он автоматически сможет работать с ней.

Существуют и другие решения, возможно, меньшая интеграция с приложениями весенней загрузки, но их можно рассмотреть, если вы уже используете их в своей организации: etc.d, КОНСУЛ и т. Д.

Обычно люди, вступая в мир весенней загрузки, начинают с первого или второго варианта, а затем принимают третий вариант одного из его вариантов.

0 голосов
/ 27 июня 2018

Все две стратегии:

  • Каждый узел распределенной среды имеет свое собственное application.properties
  • Все узлы распределенной среды совместно используют одно приложение. Хороший вариант - свойства

это зависит от того, чего вы хотите достичь.

В первом случае я предлагаю следовать шаблону «Один хост на сервис» и предоставить ваше приложение для весенней загрузки в качестве контейнера докера, а затем развернуть его на оркестровщиках, таких как AWS ECS, Kubernetes, Swarm и т. Д., Даже предоставить одну виртуальную машину на обслуживание может быть решением, но я полагаю, что может дорого.

Преимущества, о которых мы слышали, заключались в том, что наше приложение можно использовать без каких-либо дополнительных усилий по разработке, поскольку у вас есть вся конфигурация, близкая к вашему коду, любое изменение конфигурации в этом шаблоне будет новым развертыванием, которое создаст новый образ докера на вашем реестр докеров. Таким образом вы можете предотвратить смещение конфигурации, и все и все реплики будут обновлены и согласованы, вы, вероятно, будете использовать развертывание канареек или шаблон развертывания сине-зеленого цвета.

Вторая стратегия позволяет вам иметь похожий шаблон конфигурации многих PAAS, таких как Cloud Foundry и Openshift. Все реплики приложений будут совместно использовать одну точку входа в конфигурацию.

В случае Spring с Spring Cloud вы можете выбрать Spring Cloud Configuration Server. В этом случае все приложение будет запрашивать конфигурацию на сервере, сервер может быть обнаружен с помощью встроенного клиента, который попытается получить конфигурацию, или через систему служб обнаружения, такую ​​как Netflix Eureka или Consul.

Преимущество в этом случае заключается в том, что вы можете динамически масштабировать число экземпляров сервера конфигурации, которое будет системой обнаружения для предоставления всей реплики, которая была зарегистрирована. В случае сервера конфигурации вы можете воспользоваться многими хранилищами конфигурации, такими как, файловая система, SVN, GIT или недавно JDBC. Более важно то, что вы можете воспользоваться специальным @RefreshScope, который создаст ваш компонент в качестве прокси и позволит вам обновить конфигурацию в горячем состоянии через конечную точку привода / привод / обновление с последним Spring Cloud (Finchley) или / обновление с предыдущим Версия Spring Cloud, даже Spring Cloud Bus может использоваться для распространения события обновления. Если вы используете zuul, маршруты будут обновляться в случае изменений и обновления, таким образом, вы можете быть использованы для реализации сине-зеленой стратегии развертывания или канареечного развертывания.

Я надеюсь, что это может быть полезно для вас

0 голосов
/ 26 июня 2018

Лично я бы попробовал использовать сервер конфигурации: Централизованная конфигурация . По сути, вы храните свои файлы конфигурации в git-репо с относительно простым приложением Spring Boot, к которому другие ваши приложения Spring Boot могут подключиться и запросить конфигурацию.

Кроме того, в сочетании с приводом он также позволяет изменять конфигурацию на лету без перезапуска приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...