Nacos实现环境隔离

一、项目基础配置搭建

1.创建配置中心客户端工程

引入nacos依赖


     com.alibaba.cloud
     spring-cloud-starter-alibaba-nacos-com.nacos.config

2.创建两个配置文件

bootstrap.yml 和 application.yml

SpringBoot工程中 bootstrap.yml 文件加载优先级高于 application.yml 。nacos也是先通过bootstrap.yml 从配置中心获取配置后,再结合application.yml中的配置项目进行启动项目。

1)bootstrap.yml

server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #nacos 服务注册中心地址
      config:
        server-addr: 127.0.0.1:8848 #nacos 服务配置中心地址
        file-extension: yaml #指定读取的为yaml格式配置
  1. application.yml
spring:
      profiles:
        active: dev # 表示开发环境

服务端配置 Data Id :
{spring.application.name}-{spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

即 nacos 服务端配置的Data Id 的值为:nacos-config-client-dev.yaml

3.编写主启动类

添加注解 @EnableDiscoveryClient启动服务注册发现功能。

package com.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain.class, args);
    }
}

4.编写业务类获取配置

创建controller类,获取配置列表中的信息,添加注解@RefreshScope实现动态刷新配置功能。

package com.nacos.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;

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController {

    @Value("${config.info}")
    public String info;

    @GetMapping("/get/configinfo")
    public String getPayment() {
        return "name:" + info;
    }
}

5.nacos服务端配置

在nacos配置列表菜单下的 public 命名空间下新增配置
Nacos实现环境隔离_第1张图片
新建配置(+)
Nacos实现环境隔离_第2张图片

6.启动客户端,测试一下

访问 ,效果如下,成功读取到了我们的配置
Nacos实现环境隔离_第3张图片
7.修改配置信息,实现动态刷新
Nacos实现环境隔离_第4张图片
再次访问 http://localhost:3377/get/configinfo ,可以看到已经读取得到最新的配置信息!
Nacos实现环境隔离_第5张图片

二、根据后缀名读取不同环境的配置

1.修改配置文件

修改application.yml文件 spring.profiles.active 值为 test
Nacos实现环境隔离_第6张图片

2.新建配置信息

在nacos新建测试环境的配置信息
Nacos实现环境隔离_第7张图片

3.重启客户端

配置好后,重启客户端,然后访问 http://localhost:3377/get/configinfo
Nacos实现环境隔离_第8张图片
说明:例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为
local-order-service,这样对外暴露的服务名为 order-service,而本地可以调用测试环境的服务,测
试却不能调本地的服务,因为服务名称不同

三、根据分组读取不同环境的配置

1.修改bootstrap.yml,指定分组

添加spring.cloud.nacos.config.group 配置项,指定其分组为PROD_GROUP
Nacos实现环境隔离_第9张图片

2.新增nacos服务端配置

Nacos实现环境隔离_第10张图片

3.重启客户端

访问 http://localhost:3377/get/configinfo
Nacos实现环境隔离_第11张图片

四、根据命名空间读取不同环境的配置

1.nacos服务端新建命名空间

Nacos实现环境隔离_第12张图片
Nacos实现环境隔离_第13张图片

配置管理里面可以看到刚才创建的命名空间。
Nacos实现环境隔离_第14张图片

2.在测试环境下新建配置,分组为 TEST_GROUP

Nacos实现环境隔离_第15张图片

Nacos实现环境隔离_第16张图片

3.修改bootstrap.yml,添加namespace

在bootstrap.yml文件中添加 spring.cloud.nacos.config.namespace 键,值为新建配置时自动生成的命名空间id.
Nacos实现环境隔离_第17张图片

4.重启客户端

Nacos实现环境隔离_第18张图片

五、说明

例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为 local-order-service,本地可以调用测试环境的服务,测试却不能调本地的服务,因为服务名称不同。这样就实现了不同环境服务之间的隔离。

你可能感兴趣的:(Spring,Cloud,spring,cloud,java,spring,boot)