Привет всем, я рано утром В этой главе мы изучим использование единого центра конфигурации SpringCloud. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, напишите mr_beany@163.com
Первый: зачем вам единый центр конфигурации
Проще говоря, конфигурация в проекте управляется единой службой, которая может не только обеспечить безопасность содержимого конфигурации и иметь разрешения, но и обеспечить возможность обновления конфигурации службы без перезапуска службы. Например, информация онлайн-базы данных обычно закрыта для разработчиков и т. д.
Второе: создать единый центр конфигурации
1: Создать процесс с помощьюSpringCloud Practice II: Создание клиентов и высокая доступностьТакой же
Созданный каталог выглядит следующим образом
2: Откройте файл pom и добавьте зависимости
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
3: Измените класс запуска, чтобы служба стала серверной частью конфигурации.
Добавить аннотацию @EnableConfigServer
4: Создайте удаленный репозиторий git
Вы можете выбрать gitHub, облако кода или свой собственный сервер git, здесь я использую облако кода.
создать новый файл
Скопируйте содержимое файла конфигурации клиентской службы в файл и отправьте
5: Настройте адрес git службы конфигурации.
Изменить application.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/beany/config-juejindome
username: mr_beany@163.com
password: 2ewed678wediwen
где uri — адрес репозитория git, username — имя пользователя git, а password — пароль git
6: Запустите проект, ввод через браузер
http://localhost:8084/client-dev.yml
То, что мы видим, это то, что мы добавили в git
Глядя на консоль, мы также можем обнаружить, что удаленный файл git был перенесен на локальный git.
Так что, если мы хотим изменить путь к извлеченному файлу?
Измените файл конфигурации:
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/beany/config-juejindome
username: mr_beany@163.com
password: zy555566...
basedir: D:\work\file\juejinDome\cloudTest\configBasedir
После перезапуска откройте соответствующий каталог, и вы увидите извлеченный файл конфигурации.
Примечание. Если мы хотим извлечь одну и ту же конфигурацию в разных средах, нам нужно создать новый client.yml на удаленном git. Таким образом, каждый раз, когда вы обращаетесь к yml в другой среде, client.yml и client-dev.yml будут объединяться перед использованием.
7: Итак, почему наш файл — client.yml, и зачем нам нужен доступ к client-dev.yml в адресной строке?
Доступ к указанному файлу конфигурации в следующих формах
/{name}—{profites}.yml
/{tabel}/{åame}—{profiles}.yml
name 服务名
profiles 环境
tabet 分支(branch)
.yml 指定返回的数据格式,也可以写成.json .properties 他会自动转换成指定的格式
8: Формат тестовых данных
9: Тестовый доступ к различным средам
Переименуйте client.yml в git в client-dev.yml.
Измененный контент:
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client
evn:
dev
создать новый файл
ps: обратите внимание, что это должно быть env вместо evn, рука неправильная
Третье: используйте единый центр конфигурации
1: Добавить зависимости
Откройте файл pom клиентской службы и добавьте следующие зависимости.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2: Измените файл конфигурации клиентской службы и настройте конфигурацию
Сначала измените имя файла конфигурации наapplication.ymlпревратиться вbootstrap.yml
spring:
application:
name: client
cloud:
config:
enabled: true
discovery:
service-id: CONFIG
profile: dev
Здесь мы удаляем конфигурацию для Eureka.После перезапуска мы обнаруживаем, что все еще можем зарегистрироваться в Eureka, что указывает на то, что конфигурация вступает в силу.
Примечание. Поскольку в производственной среде должно быть запущено несколько eureka, в реальных ситуациях необходимоО настройке еврикаТакже пропишите в bootstrap.yml, т.е.:
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
profile: dev
Четыре: динамически изменяйте файл конфигурации, чтобы он вступил в силу без перезапуска.
Когда наша клиентская служба запустится, мы перейдем в центр конфигурации конфигурации, чтобы получить конфигурацию, а затем конфигурация извлечет конфигурацию из удаленного git, затем, когда мы изменим файл конфигурации после запуска, клиентская служба не вступит в силу, поэтому как нам быть с этим?Что насчет ситуации?
Здесь мы используем очередь для обработки, когда файл на git изменяется, очередь уведомляет каждый сервис об обновлении файла конфигурации
1: Ввести зависимости
Откройте файл pom службы конфигурации и добавьте зависимости
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2: Запустите RabbitMQ
существуетпредыдущая главаМы уже объяснили, как запустить RabbitMQ с установкой Docker, так что давайте воспользуемся этим.
3: изменить файл конфигурации службы конфигурации
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/beany/config-juejindome
username: mr_beany@163.com
password: zy555566...
basedir: D:\work\file\juejinDome\cloudTest\configBasedir
rabbitmq:
host: 192.168.88.134
username: user
password: password
Добавьте информацию о пароле адресной учетной записи rabbitmq и перезапустите.
Войдите на страницу управления rabbitmqhttp://192.168.88.134:15672
Здесь мы видим, что SpringCloud BUS создал для нас очередь
4: Измените файл pom клиентской службы.
Добавьте следующие зависимости
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
5: Измените файл конфигурации client-dev.yml клиентской службы на git.
Добавьте следующую конфигурацию
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client
rabbitmq:
host: 192.168.99.100
username: user
password: password
env:
test
6: Перезапустите клиент
В MQ уже есть два сообщения очереди.
7: Создайте TestController.java
package com.chuchen.client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description:
* @Author:
* @CreateDate: 2019/4/24 11:17
*/
@RestController
@RefreshScope
public class TestController {
@Value("${env}")
private String env;
@GetMapping("/printEnv")
public String printEnv(){
return env;
}
}
Где @RefreshScope автоматически обновляет файл конфигурации
8: ввод через браузер
http://localhost:8081/printEnv
Вы можете получить конфигурацию, которую мы написали на git.
9: Изменить файл конфигурации службы конфигурации
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/beany/config-juejindome
username: mr_beany@163.com
password: zy555566...
basedir: D:\work\file\juejinDome\cloudTest\configBasedir
rabbitmq:
host: 192.168.99.100
username: user
password: password
management:
endpoints:
web:
exposure:
include: "*"
Здесь мы выбираем, чтобы открыть интерфейс, Функция этого интерфейса — уведомить систему о повторном обновлении файла конфигурации для достижения динамического обновления при изменении файла в git.
10: Измените файл конфигурации на git
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: client
rabbitmq:
host: 192.168.99.100
username: user
password: password
env:
test1111
11: Откройте почтальон для доступа к службе конфигурации
http://localhost:8084/actuator/bus-refresh
12: ввод через браузер
http://localhost:8081/printEnv
Мы обнаружили, что без перезапуска службы конфигурации и службы клиента мы реализовали функцию динамического обновления файла конфигурации службы клиента.
13: настройки репозитория git WebHooks
В приведенном выше примере каждый раз при изменении репозитория git нам приходится обращаться к интерфейсу config для обновления файла конфигурации, что явно нецелесообразно. Затем мы можем автоматически получать доступ к нашему интерфейсу каждый раз, когда мы отправляем код, настроив git для автоматического обновления после модификации.
Выберите склад, нажмите «Управление», выберите WebHooks, нажмите «Добавить».
Обратите внимание, что URL-адрес здесь — это адрес доступа к внешней сети, вы можете добавить его после развертывания сервера.
Пятое: конец
Спасибо за вашу поддержку.Серия статей будет обновляться одна за другой.Спасибо.
Для тех, кто не знает о springBoot, вы можете прочитать мойСерия руководств по SpringBoot