• SpringCloud之Nacos作为配置中心


    Nacos作为配置中心

    1、引入依赖

    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    YML的类别

    • Nacosspringcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。 `
    • springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

    注意点 在Cloud高版本中(例如:2021.0.3),你可能还需要引入以下依赖

    
    
      org.springframework.cloud
      spring-cloud-starter-bootstrap
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、配置Bootstrap.yml

    # nacos配置
    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos服务注册中心地址
          config:
            server-addr: localhost:8848 #Nacos作为配置中心地址
            file-extension: yaml #指定yaml格式的配置
            group: TEST_GROUP
            namespace: ea7be215-37d0-4175-958c-a8af3545f115
    # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    共享配置 & 多配置文件💨

    spring:
      application:
        name: nacos-config-multi
      main:
        allow-bean-definition-overriding: true
      cloud:
        nacos:
          username: ${nacos.username}
          password: ${nacos.password}
          config:
            server-addr: ${nacos.server-addr}
            namespace: ${nacos.namespace}
            # 用于共享的配置文件
            shared-configs:
              - data-id: common-mysql.yaml
                group: SPRING_CLOUD_EXAMPLE_GROUP
    
              - data-id: common-redis.yaml
                group: SPRING_CLOUD_EXAMPLE_GROUP
    
              - data-id: common-base.yaml
                group: SPRING_CLOUD_EXAMPLE_GROUP
    
            # 常规配置文件
            # 优先级大于 shared-configs,在 shared-configs 之后加载
            extension-configs:
              - data-id: nacos-config-advanced.yaml
                group: SPRING_CLOUD_EXAMPLE_GROUP
                refresh: true
    
              - data-id: nacos-config-base.yaml
                group: SPRING_CLOUD_EXAMPLE_GROUP
                refresh: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    3、配置application.yml

    spring:
      profiles:
        active: dev # 表示开发环境
    
    • 1
    • 2
    • 3

    4、Controller测试接口

    /**
     * 配置客户端控制器
     *
     * @author LiJunYi
     * @RefreshScope 支持Nacos的动态刷新功能
     */
    @RestController
    @RefreshScope
    public class ConfigClientController
    {
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/config/info")
        public String getConfigInfo() {
            return configInfo;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在Nacos中添加配置信息

    匹配规则-理论

    • 之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId 字段的一部分。

    dataId的完整格式

    ${prefix}-${spring.profile.active}.${file-extension}

    • 1、prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。

    • 2、spring.profile.active即为当前环境对应的 profile。注意:当spring.profile.active为空时,对应的连接符 也将不存在datald的拼接格式变成${prefix}.${file-extension}

    • 3、file-exetension 为配置内容的数据格式, 可以通过配置项spring.cloud .nacos.config.file-extension来配置。 目前只支持propertiesyaml类型。

    最后公式:

    配置新增💦

    ![(undefined?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    • 图解

    Namespace+Group+DatalD讲解

    三者关系

    类似Java里面的 package名和类名, 最外层的 namespace 是可以用于区分部署环境的,GroupDataID 逻辑上区分两个目标对象。

    三者情况

    • 默认情况:

    Namespace = publicGroup = DEFAULT_GROUP,默认ClusterDEFAULT

    • Nacos 默认的命名空间是 publicNamespace 主要用来实现隔离。

    比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace ,不同的Namespace之间是隔离的。

    • Group 默认是 DEFAULT_GROUPGroup 可以把不同的微服务划分到同一个分组里面去

    • Sevice 就是微服务;一个Service可以包含多个Cluster(集群)Nacos默认ClusterDEFAULTCluster是对指定微服务的一个虚拟划分。

    比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的 Service微服务起一个集群名称(Hz),给广州机房的Service微服务起一个集群名称(GZ), 还可以尽量让同一个机房的微服务互相调用,以提升性能。

    • 最后是Instance,就是微服务的实例。

    实例-三种方案加载配置

    1、dataId方案

    • 指定spring.profile.active和配置文件的DatalD来使不同环境下读取不同的配置

    • 默认空间+默认分组+新建devtest两个Datald

    • 通过spring.profile.active属性就能进行多环境下配置文件的读取

    新建两个不同的配置💨

    • YML💨

    2、Group方案

    • Nacos配置详情💨

    • YML💨

    3、Namespace方案

    • Nacos新增命名空间💨

    • bootstrao.yml💨
    # nacos配置
    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos服务注册中心地址
          config:
            server-addr: localhost:8848 #Nacos作为配置中心地址
            file-extension: yaml #指定yaml格式的配置
            group: TEST_GROUP
            namespace: ea7be215-37d0-4175-958c-a8af3545f115
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Nacos作为配置中心的内容主要就是这些,更多详细知识点可以查阅官方文档哦。

  • 相关阅读:
    高并发抢红包系统红包随机金额生成算法
    AntDesignVue之a-table中key不唯一问题处理的多种方式
    B001-springcloud alibaba 微服务介绍
    从零学习python:数据分析与Excel
    特别关注什么是CPC认证,美国CPSC测试有哪些常见问题解析
    【lvgl】01-lvgl移植之在linux上跑
    JavaScript apply、call、bind 函数详解
    Loongnix单机部署Ceph(LoongArch架构、Ceph N版、手动部署MON、OSD、MGR、Dashboard服务)
    mongo-导出数据到mysql
    FDTD script command(结构)
  • 原文地址:https://blog.csdn.net/m0_70748381/article/details/127245696