Использование центра конфигурации Spring Cloud Alibaba nacos

Java

Spring Cloud Alibaba использует реестр nacos

задний план

В первом введении в nacos упоминалось, что nacos является как центром регистрации, так и центром конфигурации. В последней статье мы представили использование центра регистрации nacos в Spring Cloud Alibaba. В этой статье мы описали использование центр конфигурации.

центр конфигурации Nacos

В предыдущем разделе описывается конфигурация файла конфигурации. На этот раз нам нужно только добавить зависимость центра конфигурации maven nacos в предыдущем коде, который настроен на файл pom общего управления версиями pom учебника весеннего облака alibaba. Это по-прежнему использует собственные зависимости пакета jar от maven. Два модуля discovery-server и cloud-discovery-client-common автоматически вводят зависимости центра конфигурации nacos.

       <!-- nacos config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

Измените соответствующий файл yml, чтобы добавить

файл конфигурации yaml на стороне сервера

spring:
    cloud:
      config:
        server-addr: 47.99.209.72:8848
        file-extension: yaml

Наконец, результаты представлены отдельно

server:
  port: 9012

spring:
  profiles:
    active: dev
  application:
    name: cloud-discovery-server
  cloud:
    nacos:
      config:
        server-addr: 47.99.209.72:8848
                #指定文件后缀
        file-extension: yaml
      discovery:
        server-addr: 47.99.209.72:8848

Изменить http-интерфейс

package com.xian.cloud.controller;

import lombok.extern.slf4j.Slf4j;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: xlr
 * @Date: Created in 2:57 PM 2019/10/27
 */
@RestController
@RequestMapping("server")
@Slf4j
# 提供分布式的配置动态刷新
@RefreshScope
public class DiscoverCotroller {


    @Value( "${nacos.yaml.age}" )
    private String age;
    
    /**
     * 对外提供的服务 HTTP接口
     * @param name
     * @return
     */
    @GetMapping("/hello")
    public String hello(@RequestParam String name) {
        log.info("invoked name = " + name+ " age = " + age);
        return "hello " + name + " age = " + age;
    }


}

Затем настройте и создайте файл конфигурации в центре конфигурации и нажмите, чтобы войти в центр конфигурации nacos.

file

Создать cloud-discovery-server-dev.yaml настроить nacos.yaml.age= 30file

Запустите сервис curl http://localhost:9012/server/hello?name=tom

печать журналаfilefile

Это означает, что центр конфигурации nacos вступил в силу, и тогда мы изменяем возраст файла конфигурации cloud-discovery-server-dev.yaml на 20 параметров и публикуем его повторно.file

Вы увидите фоновую печать журнала


2019-10-27 19:53:08.884  INFO 44618 --- [.99.209.72_8848] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration?EnhancerBySpringCGLIB?87d25f89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-10-27 19:53:09.091  INFO 44618 --- [.99.209.72_8848] c.a.c.n.c.NacosPropertySourceBuilder     : Loading nacos data, dataId: 'cloud-discovery-server-dev.yaml', group: 'DEFAULT_GROUP'
2019-10-27 19:53:09.092  INFO 44618 --- [.99.209.72_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='cloud-discovery-server-dev.yaml'}, NacosPropertySource {name='cloud-discovery-server.yaml'}]}
2019-10-27 19:53:09.093  INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication               : The following profiles are active: dev
2019-10-27 19:53:09.103  INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication               : Started application in 0.277 seconds (JVM running for 883.2)
2019-10-27 19:53:09.119  INFO 44618 --- [.99.209.72_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [nacos.yaml.age]

Не перезапускайте сервис, запросите еще раз .age отправил измененияfile

Выше приведена конфигурация центра конфигурации nacos.

Затем мы объясняем правила соответствия конфигурации nacos

dataID

В Nacos Config Starter формат сплайсинга dataId (то есть вышеописанный cloud-discovery-server-dev.yaml) выглядит следующим образом.

${prefix} - ${spring.profiles.active} . Префикс ${file-extension} по умолчанию равен значению spring.application.name или может быть настроен с помощью элемента конфигурации spring.cloud.nacos.config.prefix.

spring.profiles.active — это профиль, соответствующий текущей среде.Подробности см. в документации по Spring Boot.

Обратите внимание, что когда activeprofile пуст, соответствующий коннектор - также не будет существовать, а формат конкатенации dataId становится ${prefix}.${file-extension}

расширение файла — это формат данных содержимого конфигурации, который можно настроить с помощью элемента конфигурации spring.cloud.nacos.config.file-extension. В настоящее время поддерживается только тип свойств.

group

Группа по умолчанию имеет значение DEFAULT_GROUP, которое можно настроить через spring.cloud.nacos.config.group.

автоматический впрыск

Nacos Config Starter реализует интерфейс org.springframework.cloud.bootstrap.config.PropertySourceLocator и устанавливает наивысший приоритет.

На этапе запуска приложения Spring Cloud оно будет активно получать соответствующие данные с сервера Nacos, преобразовывать полученные данные в PropertySource и внедрять их в свойство PropertySources среды, поэтому с помощью аннотации @Value также можно напрямую получить конфигурацию на сервер Nacos.

Динамическое обновление

Nacos Config Starter добавляет функцию мониторинга ко всем элементам конфигурации Nacos, которые успешно получают данные по умолчанию.При отслеживании изменений в конфигурации сервера он запускает метод обновления org.springframework.cloud.context.refresh.ContextRefresher в режиме реального времени.

Если вам нужно динамически обновлять bean-компонент, обратитесь к спецификациям Spring и Spring Cloud. Рекомендуется добавлять к классам аннотации @RefreshScope или @ConfigurationProperties,

Выше приведено все содержимое центра конфигурации nacos.

Дополнительное пространство имен

И реестр nacos, и центр конфигурации nacos имеют атрибут пространства имен. Это свойство относится к нашему пространству имен консоли nacos.

Особое примечание: понятие пространства имен, поскольку центр конфигурации и реестр являются общими понятиями. Так что поместите это в центр конфигурации и объясните здесь.

Создаем пространство имён lms в консолиfile

Там будет идентификатор пространства имен e071c3ab-b280-4ae7-a081-044fff5613ad. Мы поместим этот идентификатор в файл конфигурации и изменим конфигурацию соответствующего атрибута пространства имен. Если вы не измените общедоступное пространство по умолчанию

server:
  port: 9013

spring:
  profiles:
    active: dev
  application:
    name: cloud-discovery-server
  cloud:
    nacos:
      config:
        server-addr: 47.99.209.72:8848
        file-extension: yaml
        namespace: e071c3ab-b280-4ae7-a081-044fff5613ad
      discovery:
        server-addr: 47.99.209.72:8848
        namespace: e071c3ab-b280-4ae7-a081-044fff5613ad

Перезапуск обнаружит, что служба зарегистрирована в пространстве имен lms.file

отражение

dataID и группа используются в комбинации. ${префикс} - ${spring.profiles.active} ${расширение-файла}. Изменение активного параметра может помочь нам изолировать среду. групповые изменения. Это также может помочь нам различать группы проектов и версии. Таким образом, конфигурация не будет случайным образом совпадать с изменениями двух параметров для достижения желаемого различия динамических изменений. Фактически, дизайн этой части отвечает потребностям и поддерживает большинство наших сценариев.

В дополнение к концепции пространств имен. У нас есть еще одно изменение и выбор. Но это слишком много, когда наша кластерная среда достаточно велика, многие студенты не найдут никаких зацепок. Это требует от нас согласия заранее. использование правил

Если вам это нравится, вы можете подписаться и поделиться этой общедоступной учетной записью.file

Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки. Пожалуйста, прикрепите QR-код официального аккаунта для перепечатки