Introduction au centre de configuration Nacos, introduction à la configuration à distance et à la fonction de configuration d'actualisation dynamique

introduction

Nacos a les fonctions de centre d'enregistrement et de centre de configuration.Tout d'abord, nous présenterons le centre de configuration séparément.

Nacos fourni pour stocker la configuration et dont sa clé de métadonnées / valeur stockent , le serveur et le client assure le support de la configuration externe du système distribué. À l'aide de Spring Cloud Alibaba Nacos Config, vous pouvez gérer de manière centralisée la configuration des propriétés externes de votre application Spring Cloud dans Nacos Server .

Spring Cloud Alibaba Nacos Config est une alternative au serveur et au client Spring Cloud Config . Les concepts sur le client et le serveur ont la même abstraction que Spring Environment et PropertySource. Lors de l'étape d'amorçage spéciale, la configuration est chargée dans l'environnement Spring. Au fur et à mesure que l'application passe par le pipeline de déploiement du développement aux tests en passant par la production, vous pouvez gérer la configuration entre ces environnements et vous assurer que l'application dispose de tout ce dont elle a besoin pour s'exécuter pendant la migration. Veuillez vous référer au site officiel de Nacos pour savoir comment obtenir et démarrer Nacos .

Question :

Intégration de projet

Il existe également deux façons d'introduire Nacos Config, à savoir l'introduction d'Aliyun Java Initializr et la dépendance Maven pom.xml. Il est officiellement recommandé d'utiliser Aliyun Java Initializr pour introduire Nacos Config afin de simplifier les dépendances entre les composants.

Exemple 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>

Démarrez Nacos Server

Reportez - vous à résoudre le problème de la vitesse de téléchargement intérieur lent de Nacos serveur début Télécharger

Le nom d'utilisateur et le mot de passe par défaut sont: nacos

Nacos Server ajouter la configuration

  • Configuration du serveur Nacos
  • bootstrap.yml 配置
  • Configuration du code

L'image globale est la suivante:

Insérez la description de l'image ici

Introduction de fonctions communes

Il décrit uniquement comment l'utiliser et le principe renvoie à l'article suivant.

Utiliser Nacos Config comme configuration distribuée Spring Cloud

Commencer les cours

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

Classe de configuration

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

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

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

vérification

Accès navigateur: http://ip:port/config/get.

Utilisez Nacos Config pour obtenir une actualisation dynamique de Bean

Nacos Confg prend en charge la fonctionnalité standard Spring Cloud @ RefreshScope, c'est-à-dire qu'après que l'application s'est abonnée à une configuration Nacos, lorsque le contenu de la configuration change, les propriétés de la configuration de liaison dans Refresh Scope Beans seront mises à jour conditionnellement. La soi-disant condition signifie que le Bean doit:

  • Condition requise : la classe déclarée de Bean doit être marquée @RefreshScope
  • Choisissez une condition :
    • Les propriétés (champs non statiques) sont marquées @Value
    • @ ConfigurationPropertiesBean

En outre, Nacos Confg a également introduit l'interface de surveillance des changements de données sous-jacente de Nacos Client, à
savoir com.alibaba.nacos.api.config.listener.Listener. Le contenu suivant abordera ces trois
scénarios d'utilisation différents .

Client Nacos: API client Nacos, qui est également la dépendance sous-jacente de Nacos Config

Actualisation dynamique de la propriété 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 Bean, propriété d'actualisation dynamique

  • 激活 Bean @ConfigurationProperties @EnableConfigurationProperties (
    User.class)。
  • Injection de dépendance de User Bean via @Autowired.
@RefreshScope
@ConfigurationProperties(prefix = "laker")
public class User {
    
    
    private String name;
    private int age;
}

Commencer les cours

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

Utilisez Nacos g Config pour surveiller l'actualisation dynamique des propriétés de Bean

Comme mentionné précédemment, com.alibaba.nacos.api.config.listener.Listener est l'interface d'écoute de configuration standard Nacos ClientAPI. Comme il n'écoute que le contenu de la configuration et ne peut pas communiquer directement avec le système Spring, il a besoin de l'aide de Spring Cloud Alibaba API Nacos Config 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

référence:

  • Spring Cloud Alibaba de l'entrée au combat réel.pdf
Tirez parti des avantages de la fête: Spring Cloud Alibaba de l'entrée au combat réel.pdf Télécharger

Faites attention à mon compte public [ Java Interviewer ], réponse: 100 peuvent être téléchargés

Catalogue de cette série

Je suppose que tu aimes

Origine blog.csdn.net/abu935009066/article/details/112667479
conseillé
Classement