Базовое руководство по Spring Cloud Alibaba, часть 3: Nacos как центр конфигурации

Spring Cloud

в предыдущих двух статьях
Базовое руководство по Spring Cloud Alibaba, часть 1: использование Nacos для реализации регистрации и обнаружения сервисов
Базовое руководство по Spring Cloud Alibaba, часть 2: режим потребления
Я считаю, что у нас есть простое представление о том, как использовать Nacos для создания центра регистрации и реализации регистрации и обнаружения услуг. В Alibaba Spring Cloud мы также можем использовать методы потребления услуг Ribbon и Feign. Итак, далее давайте узнаем об управлении конфигурацией Nacos, чтобы почувствовать его красоту.

1. Введение в управление конфигурацией Nacos

Согласно официальным документам, Nacos занимается не только обнаружением служб и мониторингом работоспособности служб, а также реализует обнаружение регистрации служб, но и службы динамической настройки. Служба динамической конфигурации Nacos позволяет вам управлять конфигурацией приложений и конфигурацией служб всех сред централизованно, внешне и динамически.Мы можем централизованно хранить все конфигурации во всей системе архитектуры в Nacos. Этот принцип тот же, что и в Spring Cloud Config, преимущества заключаются в следующем:

  • Динамическая конфигурация устраняет необходимость повторного развертывания приложений и служб при изменении конфигурации, что делает управление конфигурацией более эффективным и гибким.
  • Централизованное управление конфигурацией упрощает внедрение служб без сохранения состояния и упрощает эластичное расширение служб по требованию.

Nacos предоставляет хранилище ключей/значений для хранения конфигурации и других метаданных, обеспечивая серверную и клиентскую поддержку внешней конфигурации в распределенных системах. С помощью Spring Cloud Alibaba Nacos Config вы можете централизованно управлять конфигурацией внешних свойств вашего приложения Spring Cloud в Nacos Server. Spring Cloud Alibaba Nacos Config является альтернативой Config Server и Client.Концепции клиента и сервера имеют ту же абстракцию, что и Spring Environment и PropertySource.На специальном этапе начальной загрузки конфигурация загружается в среду Spring. По мере того, как приложение перемещается по конвейеру развертывания от разработки к тестированию и производству, вы можете управлять конфигурацией между этими средами и гарантировать, что приложение имеет все необходимое для запуска при миграции.

2. Конфигурация Nacos в реальном бою

Далее мы расскажем, как создать содержимое конфигурации в Nacos и как получить информацию о конфигурации Nacos в приложениях Spring Cloud. Демонстрационная версия:

Nacos: 1.0.1 Spring Boot: 2.1.6.RELEASE Spring Cloud: Greenwich.SR1 Spring Cloud Alibaba: 0.2.2.RELEASE

Создать конфигурацию Nacos

Откройте браузер и введите: localhost:8848 Введите пароль учетной записи, чтобы войти на домашнюю страницу управления Nacos.

Нажмите в правом верхнем углу ➕ заполните следующую соответствующую конфигурацию

PS:

  • Идентификатор данных: Заполните alibaba-nacos-config-client.properties (почему это? Посмотрите на это медленно ниже)
  • Группа: не изменять, использовать значение по умолчанию DEFAULT_GROUP.
  • Формат конфигурации: поддержка шести форматов, здесь я выбираю Свойства
  • Содержимое конфигурации: Содержимое конфигурации, загружаемое приложением, здесь только пример, выполните простую настройку, например: gongzhonghao=lihaodong_blog

В Nacos Spring Cloud полный формат dataId выглядит следующим образом:${prefix}-${spring.profile.active}.${file-extension}

  • Префикс по умолчанию имеет значение spring.application.name, а также может быть настроен с помощью элемента конфигурации spring.cloud.nacos.config.prefix.
  • spring.profile.active — это профиль, соответствующий текущей среде.Подробности см. в документации Spring Boot. Примечание. Когда spring.profile.active пуст, соответствующий коннектор также не будет существовать, а формат сплайсинга dataId станет${prefix}.${file-extension}
  • file-exetension — это формат данных содержимого конфигурации, который можно настроить с помощью элемента конфигурации spring.cloud.nacos.config.file-extension. В настоящее время поддерживаются только свойства и типы yaml.

После завершения настройки это выглядит так

После того, как настройка параметров завершена, их необходимо получить и упорядочить программой!

Создайте клиент конфигурации

Здесь используется та же поза, что и в предыдущей статье.

файл pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xd</groupId>
        <artifactId>SpringCloudAlibabaLearn</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../</relativePath>
    </parent>
    <artifactId>alibaba-nacos-config-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>alibaba-nacos-config-client</name>
    <description>Nacos作为配置中心服务</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--nacos config依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

В основном как подмодуль на предыдущей основе, интегрируйте родительский файл pom и добавьте зависимости nacos-config

bootstrap.properties
server.port=8084
#配置客户端 Nacos中创建的配置Data Id匹配( 除了.properties或者.yaml后缀)
spring.application.name=alibaba-nacos-config-client
#注册服务到nacos
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

Основной реестр конфигурации и центр конфигурации Примечание: здесь необходимо использовать bootstrap.properties. При этом значение spring.application.name должно совпадать с Data Id конфигурации, созданным на предыдущем этапе Nacos (за исключением суффикса .properties или .yaml)

Создайте основной класс приложения и реализуйте интерфейс:
package com.xd.alibabanacosconfigclient;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //主要用来让这个类下的配置内容支持动态刷新
@SpringBootApplication
public class AlibabaNacosConfigClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(AlibabaNacosConfigClientApplication.class, args);
    }


    // nacos配置的参数
    @Value("${gongzhonghao}")
    private String gongzhonghao;

    @GetMapping("/test")
    public String getGongzhonghao() {
        return gongzhonghao;
    }
}

@SpringBootApplication: определение является приложением Spring Boot.
@RestController: аннотация @RestController, эквивалентная комбинации двух аннотаций @Controller+@ResponseBody, возвращает данные json без добавления аннотации @ResponseBody перед методом@Value: Вводится конфигурация с ключом gongzhonghao (по умолчанию — пустая строка), эта конфигурация будет возвращена через интерфейс /test, и позже мы будем использовать этот интерфейс для проверки загрузки конфигурации в Nacos.@RefreshScope: он в основном используется для того, чтобы содержимое конфигурации в этом классе поддерживало динамическое обновление, то есть после запуска нашего приложения после изменения содержимого конфигурации в Nacos оно вступит в силу немедленно.

стартовая программа

Консоль выводит адрес центра регистрации и информацию, относящуюся к центру конфигурации, что указывает на успешный запуск.

тестовое задание

Откройте браузер и введитеhttp://localhost:8084/testСодержимое отображается следующим образом:

Полученный контент заключается в том, что конфигурация проверки, которую я настроил в nacos, прошла успешно.
Мы изменяем этот контент через страницу Nacos после нажатия кнопки «Опубликовать».

посмотри сноваhttp://localhost:8084/test

Вы можете видеть, что результат возврата изменился

3. Ссылки:

4. Пример кода

Если вы заинтересованы в них, добро пожаловать, пометьте, подпишитесь, добавьте в избранное и вперед, чтобы поддержать!