Боевая серия Spring Boot (7) интегрированный центр конфигурации Consul

Spring Boot

Эта статья в основном знакомитSpring BootКак работать сConsulДля интеграции Consul — это только реализация регистрации сервисов, а есть и другие, такие как Zookeeper, Etcd и т. д. Обнаружение регистрации сервисов играет важную роль в архитектуре микросервисов.С появлением большого количества сервисов взаимосвязь между сервисами и услуги Управление конфигурацией и управление эксплуатацией и обслуживанием также стало трудным поддерживать Consul может решить эти проблемы и реализовать управление услугами и мониторинг услуг.

Дополнительные знания о Consul не будут здесь повторяться, но я надеюсь, что вы сможете понять их до изучения этого раздела, пожалуйста, перейдите к тому, что я написал ранееСерия Consul по обнаружению регистрации сервисов микросервисов

Быстрая навигация

Уведомление:Следующие примеры кода можно просмотреть на Github для полного примера главы 7-1 проекта.

добавить зависимости maven

существуетSpring BootПроектpom.xmlимпортируется в файлspring-cloud-starter-consul-discoveryПусковая установка

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

Необходимо импортировать при использовании информации о конфигурации Consulspring-cloud-starter-consul-configполагаться

 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>

конфигурационный файл

Файл конфигурации системного уровня bootstrap.yml

использоватьSpring Cloud Consul Config, вам необходимо настроить следующую информацию вbootstrap.ymlдокумент

  • spring.cloud.consul.host: настроить адрес консула
  • spring.cloud.consul.port: настроить консульский порт
  • spring.cloud.consul.config.prefix: настроить базовый файл, значение по умолчанию — config
  • spring.cloud.consul.config.enabled: запустить центр конфигурации консула
  • spring.cloud.consul.config.format: Формат файла выше консул YAML, ФАЙЛЫ, СВОЙСТВА, по умолчанию КЛЮЧ-ЗНАЧЕНИЕ
  • spring.cloud.consul.config.data-key: указывает значение KEY (или имя файла) на консуле, по умолчанию это данные

bootstrap.yml

spring:
  cloud:
    consul:
      host: 192.168.6.128
      port: 8500
      config:
        prefix: config
        enabled: true
        format: YAML
        data-key: user

Файл конфигурации уровня приложения application.yml

Определите конфигурацию уровня приложения вbootstrap.ymlЗагрузите его позже, например, с помощьюspring-cloud-configиспользовать.

  • spring.cloud.consul.host: настроить адрес консула
  • spring.cloud.consul.port: настроить консульский порт
  • spring.cloud.consul.discovery.enabled: включить обнаружение службы
  • spring.cloud.consul.discovery.register: включить регистрацию службы
  • spring.cloud.consul.discovery.deregister: отменить регистрацию, когда служба остановится
  • spring.cloud.consul.discovery.prefer-ip-address: означает использовать IP вместо имени хоста при регистрации
  • spring.cloud.consul.discovery.health-check-interval: частота проверки работоспособности
  • spring.cloud.consul.discovery.health-check-path: путь проверки работоспособности
  • spring.cloud.consul.discovery.health-check-critical-timeout: Через какое время после сбоя проверки работоспособности отменить регистрацию
  • spring.cloud.consul.discovery.instance-id: Идентификатор регистрации службы
server:
  port: 8082
spring:
  application:
    name: consul-service
  profiles:
    active: dev
  cloud:
    consul:
      host: 192.168.6.128
      port: 8500
      discovery: # 服务发现配置
        enabled: true
        register: true
        deregister: true
        prefer-ip-address: true
        health-check-interval: 10s
        health-check-critical-timeout: 30s
        health-check-path: /health
        instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} # 应用名称+服务器IP+端口

Настройка консоли администратора Consul

Consulпри условииKey/ValueХранилище используется для хранения данных конфигурации, вSpring Cloud ConsulКонфигурация по умолчанию хранится в/configпапка, в соответствии с названием приложения и симуляциейSpring Cloud ConfigПравила разбора свойств для настройки файлов.

В этом примере используйте консоль Consul, чтобы установить следующую конфигурацию пути:

  • config: для настройки основного файла по умолчанию используетсяconfig.
  • consul-service:заapplication.ymlнастроен вspring.application.nameценность.
  • dev:заapplication.ymlнастроен вspring.profiles.activeЗначение также является переменной среды, установленной этой программой для обозначения среды разработки.
  • user.yml: имя файла конфигурации, форматymlФормат.
config/consul-service.dev/user.yml

Окончательно установленные данные конфигурации для консоли Consul показаны на следующем рисунке:

图片描述

сборка проекта

Примечание. Ниже размещен только основной код, см. исходный код:Github chapter7-1

Создайте Config, чтобы получить данные конфигурации Consul

  • Получить данные о конфигурации учащихся

Обратите внимание, что следующие имена свойств должны полностью соответствовать именам, настроенным в консоли Consul.

@ConfigurationPropertiesвыполнить инъекцию свойств

config/StudentConfig.java

@ConfigurationProperties(prefix = "student")
public class StudentConfig {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "大家好我是" + name + ",今年" + age + "岁,我是一名在校大学生!";
    }
}
  • Получить данные конфигурации обучения

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

@ConfigurationProperties(prefix = "teach")
public class TeachConfig {
    private String name;
    private String course;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCourse() {
        return course;
    }

    public void setCourse(String course) {
        this.course = course;
    }

    @Override
    public String toString() {
        return "大家好我是" + name + ",是一名大学老师!教同学们学习" + course;
    }
}

Напишите конфигурацию вызова класса запуска

Примечания:

  • EnableDiscoveryClient: позволить реестру выполнить обнаружение службы и зарегистрировать службу в компоненте службы.
  • RestController:Да@ResponseBodyи@ControllerКомбинация аннотаций, указывающая, что возвращаемое значение всех методов всего класса после аннотации в формате json.
  • SpringBootApplication: аннотация запуска SpringBoot.
  • EnableConfigurationProperties: Класс конфигурации атрибута добавлен в аннотацию конфигурации атрибута SpringBoot, иначе он не может пройти@AutowiredАннотация вводится в определяемый нами класс конфигурации свойства.

Описание интерфейса:

  • /health: Интерфейс проверки работоспособности
  • /user/description: аннотация @Value для получения интерфейса описания информации о пользователе.
  • /user/student/intro: @ConfigurationProperties для доступа к информационному интерфейсу профиля учащегося.
  • /user/teach/intro: @ConfigurationProperties Получить информационный интерфейс профиля учителя
@EnableDiscoveryClient
@RestController
@SpringBootApplication
@EnableConfigurationProperties({ StudentConfig.class, TeachConfig.class })
public class ConsulApplication {

    @Value("${description}")
    private String description;

    @Autowired
    private StudentConfig studentConfig;

    @Autowired
    private TeachConfig teachConfig;

    @GetMapping("/health")
    public String Health() {
        System.out.println("health");
        return "OK";
    }

    @GetMapping("/user/description")
    public String Description() {
        return description;
    }

    @GetMapping("/user/student/intro")
    public String StudentIntro() {
        return studentConfig.toString();
    }

    @GetMapping("/user/teach/intro")
    public String TeachIntro() {
        return teachConfig.toString();
    }

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

тест интерфейса

  • Интерфейс проверки работоспособности

После того, как служба запущена и зарегистрирована в центре конфигурации Consul, этот интерфейс автоматически вызывается в соответствии со свойствами Health-Check-Interval и Health-Check-Path, настроенными в файле application.yml.

$ curl http://127.0.0.1:8082/health
OK!

После успешной регистрации название нашего сервиса и результаты проверки работоспособности будут отображаться следующим образом:

图片描述
图片描述

  • Получить интерфейс настройки профиля учителя
$ curl http://127.0.0.1:8082/user/teach/intro
大家好我是Teach Li,是一名大学老师!教同学们学习Java软件开发!
  • Получить интерфейс настройки профиля учащегося
$ curl http://127.0.0.1:8082/user/student/intro
大家好我是Jack,今年18岁,我是一名在校大学生!
  • Используйте аннотацию @Value, чтобы получить интерфейс описания элемента
$ curl http://127.0.0.1:8082/user/description
用户信息描述

Суммировать

Здесь мы только представляем функцию настройки Consul в Spring Boot. О Consul как о реестре будет рассказано в следующей главе. В этой статье вам нужно обратить внимание на свойства, введенные через @Value. После модификации Consul вам нужно перезапустите сервис, чтобы он вступил в силу Через @ConfigurationProperties Внедренные свойства вступают в силу сразу после изменения свойств в консоли Consul.

Если вы столкнетесь с чем-то еще, вы можетеSpringBoot-Course issuesвопрос в

материал

Автор: Мэй Джун
Ссылка на сайт:Уухуу. ИМО OC.com/article/286…
Источник: МООК