• Nacos 配置中心 入门及使用


    5.配置中心

    5.1.应用场景

    ​ 在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。

    如果微服务架构中没有使用统一配置中心时,所存在的问题:

    • 配置文件分散在各个项目里,不方便维护

    • 配置内容安全与权限

    • 更新配置后,项目需要重启

    1. 使用同一配置: 比如,多台服务器组成的集群,假如后端使用同一数据库,那么每台服务器都是用相同的配置。

    2. 使用不同的配置: 比如典型的场景是,开发,测试,生产使用相同的系统,但使用不同的数据库。

    5.2.快速创建

    创建模块

    在这里插入图片描述

    填写信息
    在这里插入图片描述

    选择配置中心组件

    在这里插入图片描述

    5.3.pom.xml 导入依赖

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>
    dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>${spring-cloud-alibaba.version}version>
                <type>pomtype>
                <scope>importscope>
             dependency>
        dependencies>
    dependencyManagement>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    5.4.配置文件

    建立 bootstrap.properties 配置文件, 这个文件在application.properties配置文件之前加载

    配置文件中spring.application.name的值必须与Nacos创建的配置中Data Id匹配( Nacos配置文件的扩展名可以是.properties或者.yml)

    # 应用名称
    spring.application.name=sca-nacos-config
    # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
    # Nacos认证信息
    spring.cloud.nacos.config.username=nacos
    spring.cloud.nacos.config.password=nacos
    spring.cloud.nacos.config.contextPath=/nacos
    # 设置配置中心服务端地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
    # spring.cloud.nacos.config.namespace=
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    5.5.建立测试类

    package com.yuan.scanacosconfig.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    
    /**
     * @RefreshScope
     * 当 配置中心的信息发生改变时, 取得信息自动变化
     */
    @RefreshScope
    @RestController
    @RequestMapping("/testConfig")
    public class ConfigController {
    
        @Value("${test.msg}")
        private String testProp;
    
        @RequestMapping("/showProperties")
        public String showProperties(){
            return "配置信息是:" + this.testProp;
        }
    }
    
    • 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

    在 application.properties 配置文件中 加入

    test.msg=local_msg
    
    • 1

    通过浏览器访问

    在这里插入图片描述

    5.6.在Nacos中增加配置

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    直接 通过 浏览器 访问, 显示信息变成 配置中的内容

    在这里插入图片描述

    5.7.命名空间

    在使用配置中心时,我们会经常关注一个问题:如何实现多环境的配置管理,即在不同的场景下加载不同的配置文件。
    Nacos为我们提供了三个管理级别的概念Data ID, Group, Namespace。

    5.7.1.增加新的命名空间

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    可以新建 配置

    5.7.2.克隆配置

    在这里插入图片描述

    在这里插入图片描述

    5.7.3.修改配置

    在这里插入图片描述

    在这里插入图片描述

    5.7.4.修改项目配置

    # 应用名称
    spring.application.name=sca-nacos-config
    # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
    # Nacos认证信息
    spring.cloud.nacos.config.username=nacos
    spring.cloud.nacos.config.password=nacos
    spring.cloud.nacos.config.contextPath=/nacos
    # 设置配置中心服务端地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    # Nacos 配置中心的namespace。这里可以 写命名空间的ID, 这里写的是test空间的ID
     spring.cloud.nacos.config.namespace=de502140-986d-4605-90f3-f381254f4909
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    重启项目后, 再通过浏览器访问

    在这里插入图片描述

    5.8.分组

    5.8.1.克隆配置

    可以通过 克隆的形式 在同一命名空间中 复制新的配置, 但 组名不同

    在这里插入图片描述

    在这里插入图片描述

    5.8.2.修改配置

    在这里插入图片描述

    在这里插入图片描述

    5.8.3.修改项目配置

    # 应用名称
    spring.application.name=sca-nacos-config
    # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
    # Nacos认证信息
    spring.cloud.nacos.config.username=nacos
    spring.cloud.nacos.config.password=nacos
    spring.cloud.nacos.config.contextPath=/nacos
    # 设置配置中心服务端地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    # Nacos 配置中心的namespace。这里可以 写命名空间的ID, 这里写的是test空间的ID
    spring.cloud.nacos.config.namespace=de502140-986d-4605-90f3-f381254f4909
    # 增加分组信息 分组 与 配置中心的 组名对应上
    spring.cloud.nacos.config.group=NEW_GROUP
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    重启项目后, 再通过浏览器访问

    在这里插入图片描述

    5.9.加载多个配置文件

    5.9.1.在配置中心增加多个配置文件

    在这里插入图片描述

    分别对应:

    datasource.yml

    # 数据库驱动:
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
    # 数据源名称  
        name: defaultDataSource
    # 数据库连接地址
        url: jdbc:mysql://localhost:3306/manymanygood?serverTimezone=UTC
    # 数据库用户名&密码:
        username: root
        password: root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    nacosdiscovery.yml

    # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
    # Nacos认证信息
    spring:
      cloud:
        nacos:
          discovery:
            username: nacos
            password: nacos
    # Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
            server-addr: 127.0.0.1:8848
    # 注册到 nacos 的指定 namespace,默认为 public
            namespace: public
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    other.yml

    # 应用名称
    spring:
      application:
        name: sca-nacos-config
    # 应用服务 WEB 访问端口
    server:
      port: 8080
      
    #自定义信息  
    test:
      msg: new_new_msg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    并删除 原来 的application.properties 对应的内容

    5.9.2.修改项目的bootstrap.properties 配置文件

    增加

    spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
    spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
    spring.cloud.nacos.config.extension-configs[0].refresh=true
    
    spring.cloud.nacos.config.extension-configs[1].data-id=nacosdiscovery.yml
    spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP
    spring.cloud.nacos.config.extension-configs[1].refresh=true
    
    spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
    spring.cloud.nacos.config.extension-configs[2].group=DEFAULT_GROUP
    spring.cloud.nacos.config.extension-configs[2].refresh=true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    重启项目后, 再通过浏览器访问

    在这里插入图片描述

    5.10.设置日志输出级别

    logging.level.com.alibaba.nacos.client.naming=error
    
    • 1

    5.11.yml 配置格式

    spring:
      application:
        name: renren-fast
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848
            file-extension: yaml
            namespace: 10000
    
            extension-configs[0]:
              data-id: common-redis.properties
              group: DEFAULT_GROUP
              refresh: true
    
    
    logging:
      level:
        com:
          alibaba:
            nacos:
              client:
                naming: error
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    el-table纵向垂直表头
    第1章 并发编程的挑战
    在报表开发工具Stimulsoft Report数据透视表的新功能介绍
    家政管理系统设计与实现
    @PostConstruct详解
    Java面向对象之——封装
    Shell 之 免交互编程(expect用法)
    Vue Ajax请求
    笔试面试相关记录(11)
    使用python中pypower进行电力潮流计算
  • 原文地址:https://blog.csdn.net/yuanchun05/article/details/127129147