Microservices approfondis - Concepts et pratiques de base du centre de configuration Nacos

Prenez l'habitude d'écrire ensemble ! C'est le 9ème jour de ma participation au "Nuggets Daily New Plan · April Update Challenge", cliquez pour voir les détails de l'événement .

Répertoire d'articles de la série Microservices


avant-propos

Cette série vous plonge dans l'utilisation de base et les principes sous-jacents de chaque cadre du système microservice Spring. L'article précédent a présenté les concepts de base de Nacos et la fonction du client pour réaliser la découverte de service. Cette section vous amènera à apprendre les concepts de base et le combat réel de Nacos Config.


Le rôle du centre de configuration distribué

Le centre de configuration distribué peut gérer de manière centralisée la configuration du programme et réaliser la modification dynamique du contenu de la configuration du programme sans redémarrer le conteneur de services.Les centres de configuration distribués sur le marché incluent le centre de configuration Apollo, SpringCloud Config et Nacos Config de Ctrip.

Qu'est-ce que le centre de configuration Nacos

  • Nacos Config fournit un magasin clé/valeur pour stocker la configuration et d'autres métadonnées, offrant une prise en charge côté serveur et côté client pour la configuration externalisée dans les systèmes distribués
  • À l'aide de Nacos Config, vous pouvez gérer de manière centralisée la configuration des propriétés externes des applications Spring Cloud dans l'interface de configuration de Nacos Server.
  • Au fur et à mesure que l'application passe du développement au test en passant par la production via un pipeline de déploiement (ex: Jenkins), il est possible de gérer la configuration entre ces environnements et de s'assurer que l'application a tout ce dont elle a besoin pour fonctionner lors de la migration

Nacos Config.png

Concepts de base du centre de configuration Nacos

  • Configuration

Dans le processus de développement logiciel, certains paramètres et variables qui doivent être modifiés sont séparés du code et gérés indépendamment, et existent sous la forme de fichiers de configuration indépendants. Différentes configurations peuvent être commutées en fonction des différents environnements de déploiement. Les changements de configuration sont l'un des moyens les plus efficaces de régler les temps d'exécution du système.

  • 配置管理 (Configuration Management)

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理

Nacos 配置中心的配置一致性模型

Nacos 配置管理一致性分为两部分,第一部分是Server间一致性协议(Nacos Server集群环境),一个是SDK(Nacos Config Client)与Server的一致性协议,配置作为分布式系统中飞强一致性数据,在出现脑裂的时候高可用性高于一致性,因此配置中心采用的是AP一致性协议

Nacos Config 实战

需实现效果:通过Nacos实现配置的动态变更

1、启动Nacos Server 2、nacos server中新建serviceA-dev.yaml

Interface de configuration Nacos Config.png

3、搭建Nacos Config 服务 3.1) 引入Nacos Client依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
复制代码

3.2) 添加bootstrap.yaml

spring:
  profiles:
    active: dev #指定环境
  application:
    name: serviceA # 服务名称
  cloud:
    nacos:
      config:
        server-addr: nacos:8848
        file-extension: yaml
        username: nacos
        password: nacos
复制代码

3.3) 添加启动类,测试功能

@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("my name is :"+userName+"; age: "+userAge);
    }
}
复制代码

启动服务之后,控制台输出

Interface de sortie Nacos Config.png

Nacos Config功能

支持profile粒度的配置

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置, 可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置,实现读取不同的环境

spring:
  profiles:
    active: dev #指定环境
复制代码

支持自定义namespace配置

Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等 在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 上 public 这个namespae。如果需要使用自定义的命名空间,可以通过以下配置来实现: namespace 对应的是命名空间的id

spring:
  cloud:
    nacos:
      config:
        namespace: xxx # 命名空间ID
复制代码

L'ID d'espace de noms est généré par défaut et peut être spécifié

Nacos Namespace ID.png

Prend en charge la configuration de groupe personnalisée

En l'absence de ${spring.cloud.nacos.config.group}configuration , il est utilisé par défaut DEFAULT_GROUP. Si vous avez besoin de personnaliser votre propre groupe, vous pouvez le faire via la configuration suivante :

spring:
  cloud:
    nacos:
      config:
        group: DEV_GROUP
复制代码

Prise en charge de la configuration partagée

La configuration partagée résout le problème du partage de configuration entre plusieurs applications

spring:
  cloud:
    nacos:
      config:
        shared-configs:
          - data-id: shared-configs.yml
            refresh: true
复制代码
  • Plusieurs configurations d'ID de données partagées sont prises en charge via spring.cloud.nacos.config.shared-configs[n].data-id.
  • Utilisez spring.cloud.nacos.config.shared-configs[n].group pour configurer le groupe dans lequel se trouve l'ID de données personnalisé. S'il n'est pas explicitement configuré, la valeur par défaut est DEFAULT_GROUP.
  • Utilisez spring.cloud.nacos.config.shared-configs[n].refresh pour contrôler si l'ID de données prend en charge l'actualisation dynamique dans l'application lorsque la configuration est modifiée, la valeur par défaut est false

Prise en charge de la configuration DataId étendue personnalisée

Prise en charge de la configuration de l'identifiant de données personnalisé

spring:
  cloud:
    nacos:
      config:
        extension-configs:
          - data-id: shared-configs.yml
            refresh: true
复制代码
  • La configuration de plusieurs ID de données est prise en charge via la méthode de configuration spring.cloud.nacos.config.extension-configs[n].data-id.
  • Personnalisez le groupe dans lequel se trouve l'ID de données via la méthode de configuration spring.cloud.nacos.config.extension-configs[n].group. Si la configuration n'est pas claire, la valeur par défaut est DEFAULT_GROUP.
  • La méthode de configuration de spring.cloud.nacos.config.extension-configs[n].refresh est utilisée pour contrôler si l'ID de données prend en charge l'actualisation dynamique dans l'application lorsque la configuration change et perçoit la dernière valeur de configuration. La valeur par défaut n'est pas prise en charge

Résumer

Les bases de Nacos sont presque terminées, et je vous apporterai la partie analyse du code source Nacos plus tard, merci pour votre soutien

Je suppose que tu aimes

Origine juejin.im/post/7085926274484404232
conseillé
Classement