Я хочу развернуть свою весеннюю загрузку в распределенной среде. В общем, каковы лучшие практики?
1.Каждый узел распределенной среды имеет собственное application.properties.
2. Все узлы распределенной среды совместно используют одно приложение. Свойства.
Это мой первый проект весенней загрузки, пожалуйста, не убивайте меня за этот вопрос: P




Лично я бы попытался использовать сервер конфигурации: Централизованная конфигурация. В основном вы храните свои файлы конфигурации в репозитории git с относительно простым приложением Spring Boot поверх него, к которому могут подключаться другие ваши приложения Spring Boot и запрашивать конфигурацию.
Кроме того, в сочетании с приводом он также дает вам возможность изменять конфигурацию на лету без перезапуска приложения.
В зависимости от ваших потребностей возможны многие варианты, некоторые из них тривиальны, другие более сложные, но более гибкие.
Для начала вы можете сохранить конфигурацию внутри приложения Spring Boot, конечно, не идеальным способом, но это очень просто. Вы можете поместить application-local.properties, application-production.properties и т. д. В папку ресурсов и запустить приложение весенней загрузки с активными профилями для нужной среды.
Другая, более продвинутая установка - это использование файла конфигурации, но сохранение его вне приложения.
Здесь вы развернете этот файл конфигурации отдельно от приложения, и здесь возможно множество опций, включая общие файловые системы, автоматическое развертывание и т. д.
Вы можете запустить приложение весенней загрузки с --spring.config.location=<path to configuration file>
Теперь, если вы хотите сохранить конфигурации в репозитории или файловой системе git и в вашей организации много микросервисов, управление ими превращается в беспорядок. Так что в этом случае вы можете проверить серверы конфигурации. Spring boot интегрирован с сервером конфигурации, который является частью облачного проекта Spring. Вы можете найти более подробную информацию о здесь.
Это, безусловно, самая продвинутая настройка - вы даже можете динамически изменять конфигурации и не перезапускать микросервисы весенней загрузки (Google для обновляемых bean-компонентов в конфигурации весенней загрузки). Более того, вы можете сохранить конфигурацию в репозитории git, и он автоматически сможет с ней работать.
Есть и другие решения, возможно, меньшая интеграция с приложениями весенней загрузки, но их можно рассмотреть, если вы уже используете их в своей организации: etcd, consul и так далее.
Обычно люди, входя в мир весенней загрузки, начинают с первого или второго варианта, а затем выбирают третий вариант одной из его альтернатив.
Все две стратегии:
это зависит от того, чего вы хотите достичь.
В первом случае я предлагаю следовать шаблону Single Host Per Service Pattern и предоставить ваше приложение весенней загрузки в качестве контейнера докеров, а затем развернуть его на оркестраторах, таких как AWS ECS, Kubernetes, Swarm и т. д., Даже если предоставить одну виртуальную машину для каждой службы. решение, но я полагаю, что это может быть слишком дорого.
Преимущества заключаются в том, что наше приложение можно использовать без других усилий по разработке, поскольку у вас есть вся конфигурация рядом с вашим кодом, любое изменение конфигурации в этом шаблоне будет новым развертыванием, которое создаст новый образ докера в вашем реестре докеров. Таким образом вы можете предотвратить дрейф конфигурации, и все реплики будут обновлены и согласованы, вы, вероятно, будете использовать канареечный или сине-зеленый шаблон развертывания.
Вторая стратегия дает вам аналогичный шаблон конфигурации многих PAAS, таких как Cloud Foundry и Openshift. Все реплики приложения будут использовать одну единую точку входа в конфигурацию.
В случае Spring с Spring Cloud вы можете выбрать Spring Cloud Configuration Server. В этом случае все приложение будет запрашивать конфигурацию у сервера, сервер может быть обнаружен встроенным клиентом, который попытается получить конфигурацию, или через систему службы обнаружения, такую как Netflix Eureka или Consul.
Преимущество в этом случае заключается в том, что вы можете динамически масштабировать количество экземпляров сервера конфигурации, которые будут системой обнаружения для предоставления всей зарегистрированной реплики. В случае с сервером конфигурации вы можете воспользоваться многими хранилищами конфигурации, такими как файловая система, SVN, GIT или недавно JDBC. Что еще более важно, вы можете воспользоваться специальным @RefreshScope, который создаст ваш bean-компонент в качестве прокси, и разрешите ли вы обновлять конфигурацию в горячем режиме через конечную точку исполнительного механизма / исполнительный механизм / обновление с помощью последнего Spring Cloud (Finchley) или / обновления с помощью предыдущего Spring Cloud версии, даже Spring Cloud Bus можно использовать для распространения события обновления.
Если вы используете zuul, маршруты будут обновляться в случае изменений и обновления, таким образом, вы можете использовать для реализации стратегии сине-зеленого развертывания или канареечного развертывания.
Я надеюсь, что это может быть полезно для вас
em ............ невозможно, чтобы Spring Cloud Configuration Server не требовал Spring Cloud, поскольку это проект под Spring Cloud Umbrella ............. .
Вы читали руководство, на которое я дал ссылку? Там нет ничего о развертывании чего-либо в Spring Cloud - все находится на вашем локальном компьютере. Кроме того, я вполне уверен, что возможность считывания конфигурации приложения Spring Boot с сервера существовала задолго до появления Spring Cloud.
.......... если вы создаете проект с веб-сайтом start.spring.io и, например, выбираете сервер конфигурации и веб в качестве зависимостей и создаете проект, если вы разархивируете банку, вы увидите, что в банке у вас Spring например, cloud-commons dependedny ............ Я говорю, что при централизованной конфигурации будут использоваться проекты Spring Cloud, а не те, которые вы развертывали в облаке.
для магистерской работы я использую много проектов Spring Cloud, но все они работают на моей машине
Также в документации для Spring Cloud Config Server (cloud.spring.io/spring-cloud-config/single/…) четко указано, что сервер может быть встроен в любое приложение Spring Boot, поэтому он не может зависеть от Spring Cloud.
Хорошо, я вижу, мы неправильно друг друга поняли.
Сервер конфигурации Spring Cloud (который я назвал сервером конфигурации) на самом деле не требует Sping Cloud - см. Ссылку в моем ответе.