Spring Cloud Consul: Центр управления и настройки служб

Java задняя часть
Spring Cloud Consul: Центр управления и настройки служб

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

Резюме

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

О Консуле

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

Spring Cloud Consul имеет следующие функции:

  • Управление службами поддержки: когда Consul действует как реестр, приложения в микросервисах могут регистрироваться в Consul и получать от Consul другую информацию о приложениях;
  • Поддержите клиента, чтобы он отвечал за балансировку: включая Ribbon и Spring Cloud LoadBalancer;
  • Поддержка Zuul: Когда Zuul используется в качестве шлюза, приложения могут быть зарегистрированы и обнаружены из Consul;
  • Поддержка распределенного управления конфигурацией: когда Consul действует как центр конфигурации, он использует пары ключ-значение для хранения информации о конфигурации;
  • Поддержка шины управления: сообщения о событиях могут распространяться через шину управления по всей микросервисной системе.

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

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

  • После завершения загрузки остается только один exe-файл, дважды щелкните для запуска;

  • Введите следующую команду в командной строке, чтобы просмотреть номер версии:

consul --version
  • Просмотрите информацию о номере версии следующим образом:
Consul v1.6.1
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
  • Запустите в режиме разработки:
consul agent -dev 
  • Доступ к домашней странице Consul можно получить по следующему адресу:http://localhost:8500

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

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

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

  • Измените соответствующие зависимости, измените зависимости, найденные исходной регистрацией Eureka, на Consul и добавьте зависимости SpringBoot Actuator:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • Измените файл конфигурации application.yml и измените конфигурацию обнаружения регистрации Eureka на Consul:
server:
  port: 8206
spring:
  application:
    name: consul-user-service
  cloud:
    consul: #Consul服务注册发现配置
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
  • Запустив два consul-user-service и один consul-ribbon-service, вы можете увидеть следующую информацию на странице Consul:

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

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

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

2019-10-20 10:39:32.580  INFO 12428 --- [io-8206-exec-10] c.macro.cloud.controller.UserController  : 根据id获取用户信息,用户名称为:macro

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

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

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

  • Добавьте связанные зависимости в pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
  • Добавьте файл конфигурации application.yml, чтобы включить настройку среды разработки:
spring:
  profiles:
    active: dev
  • Добавьте файл конфигурации bootstrap.yml, в основном для настройки функции конфигурации Consul:
server:
  port: 9101
spring:
  application:
    name: consul-config-client
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        serviceName: consul-config-client
      config:
        enabled: true #是否启用配置中心功能
        format: yaml #设置配置值的格式
        prefix: config #设置配置所在目录
        profile-separator: ':' #设置配置的分隔符
        data-key: data #配置key的名字,由于Consul是K/V存储,配置存储在对应K的V中
  • Создайте ConfigClientController и получите информацию о конфигурации из центра конфигурации Consul:
/**
 * 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;
    }
}

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

  • Ключ для добавления хранилища конфигурации в консул:
config/consul-config-client:dev/data
  • Значение, добавленное в хранилище конфигурации в консуле:
config:
  info: "config info for dev"
  • Скриншот информации о хранилище выглядит следующим образом:

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

Динамическая конфигурация обновления Consul

Пока мы изменяем информацию о конфигурации в Consul и снова вызываем интерфейс для просмотра конфигурации, мы обнаружим, что конфигурация была обновлена. Напомним, что при использовании Spring Cloud Config нам нужно вызвать интерфейс для обновления конфигурации через Spring Cloud Bus. Consul использует собственную шину управления для реализации механизма доставки событий, тем самым реализуя функцию динамического обновления.

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

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

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

GitHub.com/macro-positive/…

публика

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

公众号图片