Centro de registro/gestión de configuración——SpringCloud Consul

Descripción general del cónsul

Consul es un marco de servicios distribuidos que puede proporcionar descubrimiento de servicios, verificación de estado, múltiples centros de datos, almacenamiento de claves/valores y se utiliza para realizar el descubrimiento y configuración de sistemas distribuidos. Cousul se implementa utilizando el lenguaje Go, por lo que es naturalmente portátil. El paquete de instalación solo contiene un archivo ejecutable, que se puede ejecutar directamente al inicio, lo que facilita su implementación.


Instalación y puesta en marcha del cónsul

Tomando Windows como ejemplo, descargue Consul desde el sitio web oficial: https://www.consul.io/

Insertar descripción de la imagen aquí

Después de la descarga, descomprímalo, ingrese al directorio y ejecute consul.exe:.\consul.exe agent -dev

Después de iniciar Consul, visite http://ocalhost:8500/ en el navegador para ver la página de inicio de Consul.


Registro y descubrimiento del servicio de cónsul.

Cree un proyecto de servicio cousul e introduzca dependencias. Spring Boot Actuator es un paquete del que depende la verificación de estado. Este proyecto está basado en SpringBoot 2.3.1, SpringCloud Hoxton.SR12

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
</dependencies>

Agregue la siguiente configuración en el archivo de configuración application.yml:

server:
  port: 8080

spring:
  application:
    name: consul-service
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        instance-id: ${
    
    spring.application.name}:${
    
    server.port}

Agregar anotaciones a la clase de inicio@EnableDiscoveryClient

@EnableDiscoveryClient
@SpringBootApplication
public class ConsulProducerApplication {
    
    

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

Inicie el proyecto y vea la página web de Consul para ver si el registro del servicio se realizó correctamente.


Centro de configuración del cónsul

Consulte la sección anterior para crear el proyecto cousul-config e introducir dependencias.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <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>
</dependencies>

Agregue la siguiente configuración en el archivo de configuración bootstrap.yml (tenga en cuenta que se debe usar bootstrap):

server:
  port: 8080

spring:
  application:
    name: consul-service
  # profiles:
    # active: dev # 指定环境,默认加载 default 环境
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        instance-id: ${
    
    spring.application.name}:${
    
    server.port}
      config:
        enabled: true # false禁用Consul配置,默认为true
        format: yaml  # 表示consul上面文件的格式,有四种:YAML、PROPERTIES、KEY-VALUE、FILES
        prefix: config  # 可以理解为配置文件所在的最外层目录
        default-context: consul-service # 设置应用的文件夹名称
        data-key: consul-service-config # Consul的Key/Values中的Key,Value对应整个配置文件
        # 以上配置可以理解为:加载config/consul-service/文件夹下Key为consul-service-config的Value对应的配置信息
        # 配置环境分隔符,默认值 "," 和 default-context 配置项搭配
        # 例如应用 consul-service 分别有环境 default、dev、test、prod
        # 只需在 config 文件夹下创建 consul-service、consul-service-dev、consul-service-test、consul-service-prod 文件夹即可
        # profile-separator: '-'
        watch:
          enabled: true # 是否开启自动刷新,默认值true开启
          delay: 1000 # 刷新频率,单位毫秒,默认值1000

Agregar anotaciones a la clase de inicio@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
// 启用配置属性类,当SpringBoot程序启动时会立即加载@EnableConfigurationProperties注解中指定的类对象
@EnableConfigurationProperties({
    
    MySqlComplexConfig.class})
public class ConsulConfigApplication {
    
    

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

Definir la clase de configuración MysqlConfig

@Component
@ConfigurationProperties(prefix = "mysql")
public class MysqlConfig {
    
    

    private String host;
    private String username;
    private String password;

    public String getHost() {
    
    
        return host;
    }

    public void setHost(String host) {
    
    
        this.host = host;
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }
}

Desarrollar ConfigController

@RefreshScope // 用于重新刷新作用域实现属性值自动刷新
@RestController
public class ConfigController {
    
    

    @Autowired
    private MysqlConfig mysqlConfig;

    @GetMapping("getConfig")
    public Map<String, String> getMysqlConfig() {
    
    
        HashMap<String, String> map = new HashMap<>();
        map.put("host", mysqlConfig.getHost());
        map.put("username", mysqlConfig.getUsername());
        map.put("password", mysqlConfig.getPassword());
        return map;
    }
}

Agregue información de configuración en la interfaz de administración de Consul, haga clic en Clave/Valor en el menú de la izquierda, cree el directorio config/consul-service de acuerdo con la configuración en bootstrap.yml, cree la clave: consul-service-config en el directorio consul-service, y agregar valor Información de configuración

Insertar descripción de la imagen aquí

Solicite http://localhost:8080/getConfig. Puede ver que el servicio obtendrá la configuración de Consul y regresará.

Supongo que te gusta

Origin blog.csdn.net/CSDN_handsome/article/details/132378229
Recomendado
Clasificación