暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nacos配置中心集成实战,从此生产环境更新动态配置不愁

帅哥趣谈 2021-09-08
840

上篇介绍了Nacos的服务注册中心的集成实战,通过实战来看,框架集成和服务调用都很简单。在开发的过程中,主要重心还是在业务代码。微服务之前像实现动态配置还是很难的,几乎都是修改配置文件,然后重启服务,这会对线上业务造成不一定程度的影响,动态配置管理就是来解决这个痛点的,那就让我们一起来学习Nocas配置管理集成实战。

实战步骤

Nacos的实战学习,都是依赖官方的文档

官网地址:https://nacos.io/zh-cn/docs/what-is-nacos.html

集成实战部分主要参考cloud部分:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.htm

  • 新建一个module,命名cloud-nacos-config3377

  • 修改POM文件,添加nacos-config配置管理jar包依赖

    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    • 修改YML文件,添加配置中心server端配置参数,nacos要求有两个配置文件,application.yml和bootstrap.yml。application.yml配置环境信息,bootstrap配置具体信息。两者的关系是bootstrap>application,互相补充。一般在application.yml中配置环境信息,比如dev、test、prod,分别对应开发、测试、生产。

    • application配置文件,配置开发环境

      spring:
      profiles:
      active: dev #标识开发环境
      • bootstrap配置文件,nacos官网明确指出,在boot中配置spring-application-name和nacos-server地址

        server:
        port: 3377
        spring:
        application:
        name: cloud-nacos-config
        cloud:
        nacos:
        discovery:
        server-addr: 127.0.0.1:8848 #注册中心地址
        config:
        server-addr: 127.0.0.1:8848 #配置中心地址
        file-extension: yaml #配置文件类型
        group: DEV_GROUP #分组
        namespace: 78f8aa71-5ff3-4f67-b11c-a009ef0d879c #namespace的Id
        • 编写启动类,没有什么区别

          @SpringBootApplication
          @EnableDiscoveryClient
          public class Application3377 {
          public static void main(String[] args) {
          SpringApplication.run(Application3377.class,args);
          }
          }
          • 编写业务类,进行动态配置测试。划重点:@RefreshScope实现自动更新

            @RestController
            @RequestMapping("/config")
            @RefreshScope
            public class ConfigController {
            @Value("${config.useLocalCache:false}")
            private boolean useLocalCache;
            @Value("${config.info}")
            private String info;

            @GetMapping("/get")
            public String get() {
            String result = "useLocalCache: "+useLocalCache+"\tconfig.info: "+ info;
            System.out.println(result);
            return result;
            }
            }
            • Nacos控制台,配置如下

            • 测试结果,到此集成实战结束

            Nacos控制台详解

            • 控制台官方手册地址:https://nacos.io/zh-cn/docs/console-guide.html


            • 配置管理立体结构图,nacos的概念做了转化,方便理解和记忆

            • 配置管理详解,Nacos支持Namespace和Group配置,nacos对应应用环境、group对应集群环境、data_id是配置文件名,支持的yaml、text、json、xml、html、properties


            • namespace命名空间介绍:默认是public,保留空间。在实际服务中如果没有指定namespace,默认都是public。实际中用作环境的隔离

            • group分组介绍:默认是DEFAULT_GROUP,实际用作集群(服务分组)的隔离

            • DataID详细说明,划重点:实际开发中spring-profiles-active不能为空;文件格式要严格按照nacos支持的六大类型,比如yaml,不要写成yml,nacos系统不认

              Data ID:数据格式是${prefix}-${spring-profiles.active}.${file-extension} 
              ${prefix}:对应服务名称,即:spring.application.name属性的值 
              ${spring-profiles.active}:对应开发环境,即:spring.profiles.active属性的值 
              ${file-extension}:对应配置文件的格式类型,即:nacos支持的六大类型



              --END--
              ↑ ↑ ↑点击上方 名片,关注 帅哥趣谈

              回复 cloud获取源码

              shishuai860505),拉大家进群,一起交流学习

              认真传播技术,真诚结交朋友


              文章转载自帅哥趣谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论