nacos笔记(三)配置中心

全部nacos笔记地址

nacos笔记(一)单机版
nacos笔记(二)注册中心
nacos笔记(三)配置中心
nacos笔记(四)集群与持久化

概念

概念就不多介绍了,看官网就够用了
nacos概念
如何安装和启动单机版nacos
nacos笔记(一)单机版

创建项目

创建这个项目是为了演示nacos的远程配置管理功能
项目名(随便起):cloud-alibaba-config-nacos-client3377

maven依赖

 <dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <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>
</dependencies>

创建 bootstrap.yml,因为bootstrap.yml的优先级是高于application.yml的,配置中心的相关就配置在这里

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.116:8848 #nacos作为注册中心
      config:
        server-addr: 192.168.0.116:8848 #nacos作为配置中心
        file-extension: yml  #指定配置文件的格式

然后再创建application.yml

spring:
  profiles:
    active: dev

这里要先讲一下nacos的dataId,后面会用到
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}

  • prefix为项目名称
  • spring.profile.active可以为环境(开发,测试,预生产,生产),本示例写在了application.yml中
  • file-extension为文件格式

根据本项目的配置的配置文件在nacos上的的dataId如下
nacos-config-client-dev.yml

创建启动类

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientMain3377 {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

添加配置文件

打开nacos控制台,点击添加按钮
在这里插入图片描述
可以添加如下配置

  • DataId就按照我们上述规则填写(文件格式也要手写)
  • GROUP不修改的话默认是 DEFAULT_GROUP
  • 配置格式选择yaml(好像旧版本的话在这里选yaml,文件格式就必须为yaml,但是我这个1.3.0是可以兼容yml的)
  • 然后配置内容部分就写你的配置就可以了
    在这里插入图片描述
    到这里我们可以先简单的测试一下了
    写一个controller来测试,使用@RefreshScope来开启动态刷新配置的功能(PS:不需要使用BUS总线的感觉太爽了)
@RestController
@RequestMapping("/config")
@RefreshScope  //支持Nacos的动态刷新功能
public class ConfigClientController {

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

    @GetMapping("/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

这个api的意思就是从配置文件中读取config.info的内容
启动后访问:http://localhost:3377/config/info
在这里插入图片描述
成功读取
这个动态刷新是只针对当前类生效的,如果其他类也读取了这个配置但是没有添加添加@RefreshScope注解,那么没有添加@RefreshScope注解的类就不会刷新

命名空间和GROUP

在nacos中是有命名空间的概念的,官网介绍的领域模型如下
在这里插入图片描述
可以看出namespace > group > active
在上面的例子中,我没有修改命名空间和GROUP

  • 默认的命名空间是 public
  • 默认的 GROUP 为 DEFAULT_GROUP

添加命名空间

在这里插入图片描述
在控制台上点击 命名空间->新建命名空间就可以创建命名空间了,我们只需要对名称和描述进行填写就行,id会自动生成,我这里创建了dev和test两个命名空间,又在dev中创建了几个配置文件,下面来看一下
在配置列表的头部就是创建过的命名空间,点击即可切换
在这里插入图片描述

创建配置文件

切换到dev后,创建配置文件nacos-config-client-dev.yml,分组设置为DEV_GROUP
文件内容如图,下面就使用该文件文件来进行演示
在这里插入图片描述
首先复制一下dev这个命名空间的id,就在这个地方,或者到命名空间管理的列表也有
在这里插入图片描述
然后修改bootstrap.yml的配置,新添加了group和namespace的配置,其中namespace要用上面复制过来的id
变成如下

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.116:8848 #nacos作为注册中心
      config:
        server-addr: 192.168.0.116:8848 #nacos作为配置中心
        file-extension: yml  #指定配置文件的格式
        group: DEV_GROUP #使用group分组时需要的配置
        namespace: e82192a0-4706-4f6c-9c24-c86e4e8b3060 #使用指定命名空间的文件

然后启动项目测试一下
在这里插入图片描述
返回结果符合预期

总结

根据nacos的领域模型,我们对于分环境的配置可以有以下三种方案

  • 基于spring.profiles.active区分环境
  • 基于GROUP来区分环境
  • 基于namespace来区分环境

具体要使用哪种方式,亦或者采用混合的方式,都要看公司的规定和在实际工作中的具体需要
我认为是只采用其中的某一种方式是最好的,混合的话每次调试的时候切换环境都需要修改多个地方,比较容易遗漏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值