十分钟教会你如何使用Nacos配置中心

627 阅读1分钟

1:Nacos配置入门

1.1: 新建一个SPringBoot项目,完整的pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>
    <groupId>com.coco</groupId>
    <artifactId>naocs-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>naocs-config</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

1.2: 新建IndexController.class

@RestController
public class IndexController {

    @Value("${cocoStr}")
    private String cocoStr;

    @GetMapping("/index")
    public String index() {
        return cocoStr;
    }
}

1.3: 新建bootstrap.yml,配置Nacos配置中心地址

spring:
  application:
    name: nacosconfig  # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml

1.4: 在Nacos创建配置 截屏2022-05-05 上午9.43.18.png

1.5:启动项目,访问 http://localhost:8080/index, 就可以获取到配置了

2:多环境下的配置切换

在工作中,一般的公司都有开发环境,测试环境,线上环境,那么如何使用Nacos做到环境配置的切换呢

2.1:修改配置文件

spring:
  application:
    name: nacosconfig  # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
  # 切换环境配置 test dev prod
  profiles:
    active: prod

2.2:在Nacos上创建配置文件

截屏2022-05-05 上午9.51.42.png

2.3:参数说明

  • 我们在Nacos创建的配置Data Id 为 nacosconfig-prod.yaml
  • nacosconfig:表示的是我们的项目名,也就是spring.application.name的值
  • prod:表示的是spring.profiles.active的值
  • .yaml:表示的是file-extension 的值

2.4:启动项目,访问 http://localhost:8080/index, 就可以获取到配置了

2.5:现在是prod环境,那如何切换到开发或者测试环境呢??

2.6:如果要切换到测试环境,只需要修改配置文件

spring:
  application:
    name: nacosconfig  # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
  # 切换环境配置 test dev prod
  profiles:
    active: test  # 切换到测试环境

2.7: 在Nacos上创建测试配置

截屏2022-05-05 上午10.01.43.png

2.8:要切换到dev环境一样,只需要在创建一个nacosconfig-dev.yaml的配置文件,然后修改本地的 spring.profiles.active=dev 即可

3:通用配置

我们现在有多个微服务,每个微服务都会有自己的一套配置,但是往往有很多配置都是一样的,比如消息中间件,redis之类的,如果每个微服务的配置文件里面都配置一份,那就显的有点多余了。这时候可以把这类通用的配置抽离出来,让所有微服务共享

3.1: 比如现在的redis的配置和rabbitmq的配置,在Nacos上创建redis.yamlrq.yaml

截屏2022-05-05 上午10.06.22.png

截屏2022-05-05 上午10.06.51.png

3.2:修改本地配置文件

spring:
  application:
    name: nacosconfig  # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
  profiles:
    active: prod
  # shared-configs 与 extension-configs作用与用法一致,这里也可以使用extension-configs代替shared-configs
        shared-configs[0]:
          data_id: redis.yaml
          refresh: true #默认是false,是否支持动态刷新
          group: DEFAULT_GROUP #可以不写,默认就是group: DEFAULT_GROUP
        shared-configs[1]:
          data_id: rq.yaml
          refresh: true #默认是false,是否支持动态刷新
          group: DEFAULT_GROUP #可以不写,默认就是group: DEFAULT_GROUP

3.3: 访问配置

@RestController
public class IndexController {


    @Value("${cocoStr}")
    private String cocoStr;

    @Value("${redisIp}")
    private String redisIp;

    @Value("${rqIp}")
    private String rqIp;

    @GetMapping("/index")
    public String index() {
        return cocoStr + redisIp + rqIp;
    }
}

3.4:访问 http://localhost:8080/index 就可以获取到配置了

4:结尾

以上就是Nacos作为配置中心的简单Demo,多环境配置切换,以及公用配置的定义的