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.
Создать cloud-discovery-server-dev.yaml настроить nacos.yaml.age= 30
Запустите сервис curl http://localhost:9012/server/hello?name=tom
печать журнала
Это означает, что центр конфигурации nacos вступил в силу, и тогда мы изменяем возраст файла конфигурации cloud-discovery-server-dev.yaml на 20 параметров и публикуем его повторно.
Вы увидите фоновую печать журнала
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 отправил изменения
Выше приведена конфигурация центра конфигурации 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 в консоли
Там будет идентификатор пространства имен 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.
отражение
dataID и группа используются в комбинации. ${префикс} - ${spring.profiles.active} ${расширение-файла}. Изменение активного параметра может помочь нам изолировать среду. групповые изменения. Это также может помочь нам различать группы проектов и версии. Таким образом, конфигурация не будет случайным образом совпадать с изменениями двух параметров для достижения желаемого различия динамических изменений. Фактически, дизайн этой части отвечает потребностям и поддерживает большинство наших сценариев.
В дополнение к концепции пространств имен. У нас есть еще одно изменение и выбор. Но это слишком много, когда наша кластерная среда достаточно велика, многие студенты не найдут никаких зацепок. Это требует от нас согласия заранее. использование правил
Если вам это нравится, вы можете подписаться и поделиться этой общедоступной учетной записью.
Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки. Пожалуйста, прикрепите QR-код официального аккаунта для перепечатки