Spring Cloud Alibaba (2) Унифицированное управление конфигурацией Nacos

Оглавление

1. Зачем нужен центр конфигурации

2. Часто используемые центры конфигурации

Несколько концепций Nacos

3. Использование центра конфигурации Nacos

(1) формат свойств

1. Импорт зависимостей

2. Создайте новую конфигурацию в центре конфигурации

3. Измените имя файла конфигурации на bootstrap.yml.

4. Добавьте конфигурацию адреса сервиса nacos config в микросервис

5. Тест для получения конфигурации центра регистрации

(2) формат yaml

(3) profiles.active — конфигурация детализации

Часто появляющиеся сообщения об ошибках:

распространенная ошибка


вставьте сюда описание изображения

1. Зачем нужен центр конфигурации

До того, как не было центра конфигурации, традиционная конфигурация приложений имела следующие болевые точки:

(1) При использовании локальной статической конфигурации производительность в реальном времени не может быть гарантирована: модификация конфигурации негибкая и требует длительного цикла тестирования и выпуска, а клиент не может быть уведомлен как можно скорее Некоторые конфигурации предъявляют высокие требования к производительности в реальном времени , такие как конфигурация переключения «активный-резервный», или вам нужно изменить конфигурацию при сбое.В настоящее время, если вы настраиваете его с помощью традиционной статической конфигурации или повторной публикации, скорость отклика очень низкая, а бизнес-риск очень высок.

(2) Легко вызвать несчастные случаи на производстве: например, при выпуске легко перенести конфигурацию тестовой среды в производство, что приведет к несчастным случаям на производстве.

(3) Конфигурация разбросана и формат не стандартный: кто-то использует формат свойств, кто-то использует формат xml, а кто-то сохраняет его в БД.Команда стремится делать свои колеса, разными методами.

(4) В конфигурации отсутствуют функции аудита безопасности, контроля версий и полномочий по управлению конфигурацией: кто? сколько времени? Какая конфигурация была изменена? Нет возможности отследить, и невозможно вовремя откатиться на предыдущую версию, если что-то пойдет не так, невозможно аутентифицировать и авторизовать выпуск изменений конфигурации, и каждый может изменить и опубликовать конфигурацию.

    而配置中心区别于传统的配置信息分散到系统各个角落的方式,对系统中的配置文件进行集中统一管理,而不需要逐一对单个的服务器进行管理。那这样做有什么好处呢?
После использования центра конфигурации

(1) Путем унификации формата центра конфигурации конфигурация может быть стандартизирована,

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

(3) Проблемы также можно отследить с помощью функции аудита.

2. Часто используемые центры конфигурации

Существует три основных решения для центра конфигурации в микросервисах: Nacos, Apollo, Config+Bus, но здесь мы в основном представляем использование Nacos в качестве центра конфигурации.

вставьте сюда описание изображения

Несколько концепций Nacos

Пространство имен (Namespace)
Пространство имен можно использовать для изоляции конфигурации различных сред. Как правило, среда делится на
группу конфигурации пространства имен (группу).
Группа конфигурации используется для классификации различных служб в одну группу. Как правило, конфигурация проекта делится на набор наборов
конфигурации (идентификатор данных).
В системе файл конфигурации обычно представляет собой набор конфигурации. Конфигурация общего микросервиса — это набор конфигураций
вставьте сюда описание изображения

3. Использование центра конфигурации Nacos

Использование nacos в качестве центра конфигурации фактически означает обращение с nacos как с сервером, а с каждым микросервисом как с клиентом. Мы храним файлы конфигурации каждого микросервиса на nacos, а затем каждый микросервис извлекает конфигурацию из nacos.

Это эквивалентно сервисному модулю, запрашивающему nacos, и nacos отвечает сервисному модулю некоторыми данными.

(1) формат свойств

1. Импорт зависимостей

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

<!--nacos的config配置中心依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--把application.yml配置文件名称改为bootstrap.xml-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2. Создайте новую конфигурацию в центре конфигурации

 

3. Измените имя файла конфигурации на bootstrap.yml.

4. Добавьте конфигурацию адреса сервиса nacos config в микросервис

spring:
  application:
    name: user-server #注册服务的名称
  # 配置数据源
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/nacos?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: 123456
  #clout配置nacos服务注册中心
  cloud:
    nacos:
      discovery: #配置客户端
        server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号
        username: nacos #nacos网址的账号密码
        password: nacos
      #配置nacos网站的config配置中心
      config:
        server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号
        file-extension: properties #配置内容的类型格式
        username: nacos #nacos网站的账号密码
        password: nacos

5. Тест для получения конфигурации центра регистрации

@RestController
@RequestMapping("/user")
public class UserController {

    @Value("${username}")//通过配置中心的配置内容的键获取value
    public String username;

    @Value("${age}")//通过配置中心的配置内容的键获取value
    public String age;

    @GetMapping("/test2")
    public void test2(){
        System.out.println(username); //控制台打印张三
        System.out.println(age);//99
    }

}

6. Вы можете переместить конфигурацию базы данных в файле конфигурации yml в центр конфигурации и изменить конфигурацию источника данных в проекте.

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

@Configuration
public class DataSourceConfig {
    @Value("${spring.datasource.druid.username}")
    private String username;
    @Value("${spring.datasource.druid.password}")
    private String password;
    @Value("${spring.datasource.druid.url}")
    private String url;
    @Value("${spring.datasource.druid.driver-class-name}")
    private String driverClassName;
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        druidDataSource.setDriverClassName(driverClassName);
        return druidDataSource;
    }
}

(2) формат yaml

1. Создайте новую конфигурацию в центре конфигурации

вставьте сюда описание изображения

2. Измените имя файла конфигурации проекта на bootstrap.yml и измените конфигурацию файла конфигурации.

вставьте сюда описание изображения

(3) profiles.active — конфигурация детализации

1. Создайте конфигурацию в центре конфигурации

идентификатор данных: имя службы имя-пространство имен имя.суффикс имя (order-server-dev.yaml)

вставьте сюда описание изображения

2. Конфигурация инженерного модуля

вставьте сюда описание изображения

Часто появляющиеся сообщения об ошибках:

org.springframework.beans.factory.BeanCreationException: @Value не удалось успешно внедрить, внимательно проверьте

распространенная ошибка

1. Если не запускается и сообщает об ошибке, возможная проблема: брандмауэр не закрыт, а затем откройте службу Nacos после закрытия брандмауэра

Посмотреть статус пожара

systemctl статус firewalld

изображение

systemctl остановить firewalld

Затем перейдите к запуску службы Nacos

2. При успешном запуске обнаруживается отсутствие данных и регистрационной информации на сайте центра регистрации службы nacos, возможно, изменилась сеть машины

Поскольку IP-адрес в файле conf/application.properties является IPv4-адресом текущего сетевого атрибута, при изменении сети необходимо изменить IP-адрес.

# 启用standalone模式
nacos.standalone=true
# 修改端口号
server.port=8848
# 修改数据存储位置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.216.176:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

注意要修改以下参数: 

server.port: изменить номер порта, который будет использоваться db.url.0: изменить адрес подключения к базе данных MySQL.IP-адрес — это IPv4-адрес текущего атрибута сети. , Не забудьте изменить его

db.user, db.password: и установите правильное имя пользователя и пароль базы данных

Supongo que te gusta

Origin blog.csdn.net/m0_65992672/article/details/130734777
Recomendado
Clasificación