Introducción al Centro de configuración de Nacos, Introducción a la configuración remota y la función de configuración de actualización dinámica

Introducción

Nacos tiene las funciones de centro de registro y centro de configuración Primero, presentaremos el centro de configuración por separado.

Nacos proporcionó para almacenar la configuración y que su clave / valor de metadatos almacenan , el servidor y el cliente brinda soporte para la configuración externa del sistema distribuido. Con Spring Cloud Alibaba Nacos Config, puede administrar de forma centralizada la configuración de propiedades externas de su aplicación Spring Cloud en Nacos Server .

Spring Cloud Alibaba Nacos Config es una alternativa a Spring Cloud Config Server and Client . Los conceptos en el cliente y el servidor tienen la misma abstracción que Spring Environment y PropertySource. En la etapa especial de arranque, la configuración se carga en el entorno Spring. A medida que la aplicación pasa del desarrollo a la prueba y la producción a través de la canalización de implementación, puede administrar la configuración entre estos entornos y asegurarse de que la aplicación tenga todo lo que necesita para ejecutarse durante la migración. Consulte el sitio web oficial de Nacos para saber cómo obtener e iniciar Nacos .

Pregunta :

Integración de proyectos

También hay dos formas de introducir Nacos Config, a saber, la introducción de Aliyun Java Initializr y la dependencia de Maven pom.xml. Se recomienda oficialmente utilizar Aliyun Java Initializr para introducir Nacos Config para simplificar las dependencias entre componentes.

Ejemplo de Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.laker</groupId>
    <artifactId>config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.laker.config.ConfigApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Iniciar el servidor Nacos

Consulte a resolver el problema de la lenta velocidad de descarga interna de Nacos servidor de descarga de inicio

El nombre de usuario y la contraseña predeterminados son: nacos

Servidor Nacos agregar configuración

  • Configuración del servidor Nacos
  • bootstrap.yml 配置
  • Configuración de código

El panorama general es el siguiente:

Inserte la descripción de la imagen aquí

Introducción de funciones comunes

Solo describe cómo usarlo, y el principio se refiere al siguiente artículo.

Use Nacos Config como configuración distribuida de Spring Cloud

Comenzar la clase

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

Clase de configuración

@RestController
@RequestMapping("/config")
public class ConfigController {
    
    

    @Value("${laker.name}")
    private String lakerName;

    @RequestMapping("/get")
    public String get() {
    
    
        return lakerName;
    }
}

verificación

El acceso del navegador: http://ip:port/config/get.

Use Nacos Config para lograr la actualización dinámica de Bean

Nacos Confg admite la función estándar Spring Cloud @ RefreshScope, es decir, después de que la aplicación se suscribe a una configuración de Nacos, cuando cambia el contenido de la configuración, las propiedades de la configuración de enlace en Refresh Scope Beans se actualizarán condicionalmente. La llamada condición significa que el Bean debe:

  • Condición requerida : la clase declarada de Bean debe estar marcada con @RefreshScope
  • Elija una condición :
    • Las propiedades (campos no estáticos) están marcadas con @Value
    • @ ConfigurationPropertiesBean

Además, Nacos Confg también introdujo la interfaz de monitoreo de cambios de datos subyacente de Nacos Client, a
saber , com.alibaba.nacos.api.config.listener.Listener. El siguiente contenido discutirá estos tres
escenarios de uso diferentes .

Cliente Nacos: API del cliente Nacos, que también es la dependencia subyacente de Nacos Config

Actualización dinámica de la propiedad Bean @Value

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    
    

    @Value("${laker.name}")
    private String lakerName;

    @RequestMapping("/get")
    public String get() {
    
    
        return lakerName;
    }

    @PostConstruct
    public void init() {
    
    
        System.out.printf("---[init]--- laker name : %s ", lakerName);
    }
}

@ConfigurationProperties Las propiedades del bean se actualizan dinámicamente

  • 激活 @ConfigurationProperties Bean @EnableConfigurationProperties (
    User.class)。
  • Inyección de dependencia de User Bean a través de @Autowired.
@RefreshScope
@ConfigurationProperties(prefix = "laker")
public class User {
    
    
    private String name;
    private int age;
}

Comenzar la clase

@EnableConfigurationProperties(User.class)
@SpringBootApplication
public class NacosConfigSampleApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(NacosConfigSampleApplication.class, args
        );
    }
}

Use Nacos g Config para monitorear la actualización dinámica de las propiedades de Bean

Como se mencionó anteriormente, com.alibaba.nacos.api.config.listener.Listener es la interfaz de escucha de configuración estándar de Nacos ClientAPI. Dado que solo escucha el contenido de configuración y no puede comunicarse directamente con el sistema Spring, necesita la ayuda de Spring Cloud Alibaba API de configuración de Nacos NacosConfigManager

@SpringBootApplication
public class NacosConfigSampleApplication {
    
    
    @Autowired
    private NacosConfigManager nacosConfigManager;

    public static void main(String[] args) {
    
    
        SpringApplication.run(NacosConfigSampleApplication.class, args
        );
    }
    @Bean
    public ApplicationRunner runner() {
    
    
        return args -> {
    
    
            String dataId = "laker-dev.yaml";
            String group = "DEFAULT_GROUP";
            nacosConfigManager.getConfigService().addListener(dataId, group, new
                    AbstractListener() {
    
    
                        @Override
                        public void receiveConfigInfo(String configInfo) {
    
    
                            System.out.println("[Listener] " + configInfo);
                        }
                    });
        };
    }
}

[Listener] laker:
  name: laker1222222

referencia:

  • Spring Cloud Alibaba de la entrada al combate real.pdf
Busque los beneficios de la fiesta: Spring Cloud Alibaba desde la entrada hasta el combate real.pdf Descargar

Preste atención a mi cuenta pública [ Java Interviewer ], respuesta: 100 se pueden descargar

Catálogo de esta serie

Supongo que te gusta

Origin blog.csdn.net/abu935009066/article/details/112667479
Recomendado
Clasificación