Spring Cloud Alibaba: Nacos используется как центр регистрации и настройки

Spring Cloud
Spring Cloud Alibaba: Nacos используется как центр регистрации и настройки

Адрес фактического проекта электронной коммерции SpringBoot (20k+star):GitHub.com/macro-positive/…

Резюме

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

Введение в Нако

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

Накос обладает следующими характеристиками:

  • Обнаружение служб и мониторинг работоспособности служб: поддержка обнаружения служб на основе DNS и RPC, поддержка проверки работоспособности служб в режиме реального времени и предотвращение отправки запросов на неработоспособные хосты или экземпляры служб;
  • Служба динамической конфигурации. Служба динамической конфигурации позволяет управлять конфигурацией приложений и конфигурацией служб всех сред централизованным, внешним и динамическим образом;
  • Служба динамической DNS. Служба динамической DNS поддерживает взвешенную маршрутизацию, упрощая реализацию балансировки нагрузки среднего уровня, более гибких политик маршрутизации, управления трафиком и простых служб разрешения DNS для внутренней сети центра обработки данных;
  • Управление службами и метаданными: поддерживает управление всеми службами и метаданными в центре обработки данных с точки зрения построения платформы микрослужб.

Использование Nacos в качестве реестра

Установите и запустите Nacos

  • Давайте сначала загрузим Nacos с официального сайта, скачать здесьnacos-server-1.1.4.zipфайл, адрес загрузки:GitHub.com/alibaba/вывезти…

  • настроитьJAVA_HOMEПеременные среды, если они не настроены, Nacos не сможет работать;

JAVA_HOME=D:\developer\env\Java\jdk1.8.0_91
  • Разархивируйте установочный пакет и запустите его напрямуюbinв каталогеstartup.cmd;

  • После успешного запуска посетитеhttp://localhost:8848/nacosВы можете просмотреть домашнюю страницу Nacos.Пароль учетной записи по умолчанию — nacos.

Создайте заявку на регистрацию в Nacos

Мы демонстрируем функции регистрации и обнаружения служб путем преобразования consul-user-service и consul-ribbon-service, в основном путем изменения исходной поддержки реестра Consul на поддержку реестра Nacos.

  • Создайте модуль nacos-user-service и модуль nacos-ribbon-service;

  • Если вы хотите использовать компоненты Spring Cloud Alibaba, вам необходимо добавить следующую конфигурацию в pom.xml;

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • Измените соответствующие зависимости и измените зависимости, найденные в исходной регистрации Consul, на Nacos:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • Измените файл конфигурации application.yml и измените конфигурацию регистрации и обнаружения Consul на Nacos:
server:
  port: 8206
spring:
  application:
    name: nacos-user-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include: '*'
  • Запустив два nacos-user-service и один nacos-ribbon-service, вы можете увидеть следующую информацию на странице Nacos:

Функция балансировки нагрузки

Поскольку мы запускаем два nacos-user-services, а nacos-ribbon-service по умолчанию вызывает свой интерфейс, мы вызываем интерфейс nacos-ribbon-service для демонстрации функции балансировки нагрузки.

Вызовите интерфейс несколько раз:http://localhost:8308/user/1, вы можете обнаружить, что консоли двух nacos-user-service поочередно печатают следующую информацию.

2019-11-06 14:28:06.458  INFO 12092 --- [nio-8207-exec-2] c.macro.cloud.controller.UserController  : 根据id获取用户信息,用户名称为:macro

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

Мы демонстрируем функцию управления конфигурацией, создавая модуль nacos-config-client и добавляя информацию о конфигурации на страницу Nacos.

Создайте модуль nacos-config-client.

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • Добавьте файл конфигурации application.yml, чтобы включить настройку среды разработки:
spring:
  profiles:
    active: dev
  • Добавьте файл конфигурации bootstrap.yml, в основном для настройки функции Nacos в качестве центра конфигурации:
server:
  port: 9101
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos地址
      config:
        server-addr: localhost:8848 #Nacos地址
        file-extension: yaml #这里我们获取的yaml格式的配置
  • Создайте ConfigClientController и получите информацию о конфигурации из центра конфигурации Nacos:
/**
 * Created by macro on 2019/9/11.
 */
@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return configInfo;
    }
}

Добавить конфигурацию в Nacos

  • Давайте сначала поговорим о формате композиции dataid в Nacos и соответствующей связи с атрибутами в конфигурационном файле SpringBoot:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
  • Например, теперь мы хотим получить имя приложения какnacos-config-clientприменение вdevокружающая обстановкаyamlКонфигурация dataid следующая:
nacos-config-client-dev.yaml
  • Добавьте следующую конфигурацию в соответствии с указанным выше идентификатором данных:
config:
  info: "config info for dev"
  • Заполните схему конфигурации:

  • Запустите nacos-config-client и вызовите интерфейс для просмотра информации о конфигурации:http://localhost:9101/configInfo
config info for dev

Конфигурация динамического обновления Nacos

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

2019-11-06 14:50:49.460  INFO 12372 --- [-localhost_8848] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ec395f8e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-11-06 14:50:49.608  INFO 12372 --- [-localhost_8848] c.a.c.n.c.NacosPropertySourceBuilder     : Loading nacos data, dataId: 'nacos-config-client-dev.yaml', group: 'DEFAULT_GROUP'
2019-11-06 14:50:49.609  INFO 12372 --- [-localhost_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client-dev.yaml'}, NacosPropertySource {name='nacos-config-client.yaml'}]}
2019-11-06 14:50:49.610  INFO 12372 --- [-localhost_8848] o.s.boot.SpringApplication               : The following profiles are active: dev
2019-11-06 14:50:49.620  INFO 12372 --- [-localhost_8848] o.s.boot.SpringApplication               : Started application in 0.328 seconds (JVM running for 172.085)
2019-11-06 14:50:49.638  INFO 12372 --- [-localhost_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [config.info]

использованная литература

Официальная документация Spring Cloud Alibaba:GitHub.com/Alibaba/SPR…

используемые модули

springcloud-learning
├── nacos-config-client -- 用于演示nacos作为配置中心的nacos客户端
├── nacos-user-service -- 注册到nacos的提供User对象CRUD接口的服务
└── nacos-ribbon-service -- 注册到nacos的ribbon服务调用测试服务

Адрес исходного кода проекта

GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на общедоступный номерПолучите это прямо сейчас.

公众号图片