В распределенных системах файлы конфигурации разбросаны в каждом проекте, что затрудняет управление централизованием, или, если конфигурация изменена, ее необходимо перезапустить, прежде чем она сможет вступить в силу. Далее мы используем конфигурацию Spring Cloud для решения этой болевой точки.
Конфигурационный сервер
Мы используем Config-Server в качестве сервера конфигурации и необходимо только добавлять зависимости:
<Depective> <groupid> org.springframework.cloud </GroupId> <ArtifactId> Spring-Cloud-config-server </artifactid> </dependency>
В application.yml, настройка:
Spring: Приложение: Имя: config-server # name Cloud: Config: Server: GIT: URI: File: // users/yangdd/documents/code/github/config-repo # Использовать локальный репозиторий (для тестирования), формат: // $ {user.home}/config-repo Если это Windows, это файл: // $ {user.home}/config-repo. https://github.com/yangdd1205/spring-cloud-master/ #username: username #пароль: пароль #по умолчанию-label: config #может быть идентификатор коммита, имя филиала, имя тега, значение по умолчанию-Master #Поиск.Весенние проекты, как правило, имеют принцип «Конвенция больше, чем конфигурация». Следовательно, файлы конфигурации в нашем GIT обычно называют {Application}-{profile} .yml или {Application}-{profile} .properties.
У нас есть два файла client-dev.yml в главной ветви конфигурации:
Информация: Master-Dev
Client-prod.yml:
Информация: мастер-прод
В филиале конфигурации есть два файла client-dev.yml:
Информация: config-dev
Client-prod.yml:
Информация: config-prod
Start Config-Server Мы можем получить доступ к файлам конфигурации в GIT через следующие отношения отображения:
/application )/{ profilet илиhttp: // localhost: 4001/client-dev.yml
Конфигурация клиента
Мы используем config-client в качестве клиента конфигурации и добавляем зависимости:
<depervice> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> <depervice> <groupid> org.springframework.cloud </Groupid> <ratifactid> Spring-Cloud-starter-config </artifactid> </зависимость> </artifactid> Spring-starter-config </artifactid>
Настройка в bootstrap.yml (bootstrap.yml будет загружаться до Application.yml):
Весна: Приложение: Имя: Клиент Облако: Конфигурация: URI: http: // localhost: 4001/## представляет собой адрес профиля центра конфигурации: dev # эквивалентен атрибуту spring.profiles.active, но приоритет выше, чем Spring.profiles.active #label: config # Если вы не указываете использование LABKEL в сервере, если Spected, Port: 4002.
Создайте TestController в config-client:
@RestControllerPublic Class TestController {@Value ("$ {info}") @Requestmapping (value = "/getInfo") public String getInfo () {return this.info; }}Посетите http: // localhost: 4002/getInfo
Измените профиль в файле конфигурации конфигурации, чтобы подготовить его и получить доступ к нему, чтобы просмотреть результаты.
Теперь мы внедрили файлы конфигурации для управления ими унифицированным образом, но после изменения файлов конфигурации, как мы не можем перезапустить и вступить в силу?
Мы вводим зависимости в Config-Client:
<Depeication> <groupid> org.springframework.boot </GroupID> <ArtifactId> Spring-Boot-Starter-Actuator </artifactid> </depervice>
Добавьте аннотацию @refreshscope в класс, который нуждается в динамическом обновлении, здесь мы добавляем ее в TestController. И отключить аутентификацию разрешения привода в файле конфигурации:
Управление: Безопасность: включено: false
Перезапустите проект, http: // localhost: 4002/getInfo Результатом является: config-dev, и теперь измените файл config-dev.yml:
Информация: config-dev-1.0
Вызовите метод привода и обновите вручную. http: // localhost: 4002/rebresh Примечание: это должен быть метод публикации. Вы можете увидеть, какие изменения:
["Информация"]
Посетите http: // localhost: 4002/getInfo снова, и результат: config-dev-1.0.
Мы обнаружили, что, хотя конфигурация может быть динамически обновляться, метод обновления должен вызывать вручную каждый раз. Если у меня есть 1000 услуг, я должен назвать это 1000 раз. Есть лучший способ? То есть использовать его в сочетании с Spring Cloud Bus.
Высоко доступен
Теперь наш сервер конфигурации представляет собой услугу с одной точкой, и после того, как последний клиент конфигурации будет подвешен, он не будет использоваться. Итак, в поколении сервер конфигурации должен быть очень доступен, так как это сделать? Это очень просто. Как и высокая доступность Eureka, упомянутой ранее, вам нужно только развернуть еще несколько конфигурационных серверов.
Мы используем проект Eureka в качестве регистрационного центра с портом: 7001.
Скопируйте Config-Server в Config-Server-1, с портом: 4003 и зарегистрируйте оба сервера конфигурации в реестр.
Зарегистрируйте конфигурацию в реестре и укажите, чтобы получить сервер конфигурации от Eureka:
Spring: Cloud: config: #URI: http: // localhost: 4001/## Представляет адрес центра конфигурации, напрямую укажите адрес адреса сервера конфигурации: dev #label: config Discovery: включено: true # Включите, чтобы получить сервис конфигурации.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.