美文网首页
五、Nacos配置中心

五、Nacos配置中心

作者: 神奇作手 | 来源:发表于2020-07-17 10:05 被阅读0次

    1.Nacos作为配置中心-基础配置

    1.1.创建工程 cloudalibaba-config-nacos-client3377

    (1)pom.xml

    <dependencies>
            <!--nacos-config-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
            <!--nacos-discovery-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <!--web + actuator-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--一般基础配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    

    (2)配置文件 bootstrap.yml

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

    server:
      port: 3377
    
    spring:
      application:
        name: nacos-config-client
      profiles:
        active: dev
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.10.33:8848 #服务注册中心地址
          config:
            server-addr: 192.168.10.33:8848 #配置中心地址
            file-extension: yaml  #指定yaml格式的配置
    

    (3)主启动类 NacosConfigClientMain3377.java

    package com.xiaoliu;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    /**
     * @Author LL
     * @Date 2020-07-07 15:05
     */
    @EnableDiscoveryClient
    @SpringBootApplication
    public class NacosConfigClientMain3377 {
        public static void main(String[] args) {
            SpringApplication.run(NacosConfigClientMain3377.class, args);
        }
    }
    

    (4)业务类 ConfigClientController.java

    package com.xiaoliu.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Author LL
     * @Date 2020-07-07 15:10
     */
    @RestController
    @RefreshScope //实现配置自动更新
    public class ConfigClientController {
    
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/config/info")
        public String getConfigInfo() {
            return configInfo;
        }
    }
    

    (5)在Nacos中添加配置信息

    (1)Nacos中的匹配规则

    Nacos中的dataid的组成格式与SpringBoot配置文件中的匹配规则

    最后公式:
    ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

    (2)Nacos中的配置

    nacos-config-client-dev

    公式

    ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
    
    • prefix默认为spring.application.name的值
    • spring.profile.active既为当前环境对应的profile,可以通过配置项spring.profile.active 来配置
    • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension配置

    小总节说明

    (3)测试

    • 启动前需要在nacos客户端-配置管理-配置管理栏目下有没有对应的yaml配置文件
    • 运行cloud-config-nacos-client3377的主启动类
    • 调用接口查看配置信息 http://localhost:3377/config/info

    自带动态刷新
    修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新


    2.Nacos作为配置中心-分类配置

    问题:多环境多项目管理
    (1)问题1
      实际开发中,通常一个系统会准备 dev开发环境、test测试环境、prod生产环境,如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
    (2)问题2
      一个大型分布式服务系统会有多个微服务子项目,
    每个微服务项目又会有相应的开发环境、测试环境、预发布环境、正式环境...... 那怎么对这些微服务配置进行管理呢?

    2.1.Nacos的图形化管理界面

    2.1.1.配置管理

    2.1.2.命名空间

    2.2.Namespace+Group+Data ID三者关系?为什么这么设计?

    2.3.实例

    2.3.1.DataID方案

    (1)指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置
    (2)默认空间+默认分组+新建dev和test两个DataID
    • 新建dev配置DataID
    • 新建test配置DataID
    (3)通过spring.profile.active属性就能进行多环境下配置文件的读取
    (4)测试

    http://localhost:3377/config/info
    配置是什么就加载什么 test

    2.3.2.Group方案

    (1)通过Group实现环境区分
    (2)在nacos图形界面控制台上面新建配置文件DataID
    (3)bootstrap.yml

    2.3.3.Namespace方案

    (1)新建dev/test的Namespace
    (2)回到服务管理-服务列表查看
    (3)按照域名配置填写

    3.Nacos集群和持久化配置(重要)

    相关文章

      网友评论

          本文标题:五、Nacos配置中心

          本文链接:https://www.haomeiwen.com/subject/gpwphktx.html