Все две стратегии:
- Каждый узел распределенной среды имеет свое собственное 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, маршруты будут обновляться в случае изменений и обновления, таким образом, вы можете быть использованы для реализации сине-зеленой стратегии развертывания или канареечного развертывания.
Я надеюсь, что это может быть полезно для вас