nacos配置中心

1.介绍

随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:

  • 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。
  • 时效性:修改配置,需要重启服务才能生效。
  • 局限性:无法支持动态调整:例如日志开关、功能开关。
    因此,分布式配置中心应运而生!
    使用Nacos之前首先了解一下SpringBoot配置文件bootstrap与application的加载顺序:
  • bootstrap.yml(bootstrap.properties)先加载
  • application.yml(application.properties)后加载
  • bootstrap.yml 用于应用程序上下文的引导阶段
  • bootstrap.yml 由父Spring ApplicationContext加载
    Nacos的Config默认读取的是bootstrap.yml配置文件,如果将Nacos Config的配置写到application.yml里面,工程启动时就会一直报错。

2.添加相关依赖

<!-- Nacos 分布式配置-->
    <dependency>
        <groupid>com.alibaba.cloud</groupid>
        <artifactid>spring-cloud-starter-alibaba-nacos-config</artifactid>
    </dependency>

3.添加相关配置

因为Nacos默认读取服务配置要写在 bootstrap.yml 中,所以在项目中新建bootstrap.yml,同时在 bootstrap.yml 做好Nacos Config的配置

server:
  port: 8001
spring:
  application:
    name: gitegg-service-system
  cloud:
    nacos:  //服务注册的配置
      discovery:
        server-addr: 127.0.0.1:8848
      config:  //配置中心的配置
        server-addr: 127.0.0.1:8848
        file-extension: yml  
        group: DEFAULT_GROUP
        enabled: true

在Nacos服务器上新建gitegg-service-system.yaml配置,将application.yml里面的配置信息复制到Nacos服务器上的配置信息里,然后删除application.yml,在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

4.测试

新建测试的Controller,并在里面添加读取配置的测试代码,读取配置的某一个属性,如果需要读取实时刷新数据,可以添加@RefreshScope注解

@RestController
@RequestMapping(value = "system")
@Api(tags = "gitegg-system")
@RefreshScope
public class SystemController {

@Value("${spring.datasource.maxActive}")
    private String nacosMaxActiveType;
    
    
@PostMapping(value = "nacos")
    @ApiOperation(value = "Nacos读取配置文件测试接口")
    public Result<string> nacos() {
        return Result.data(nacosMaxActiveType);
    }
}

在网页中输入http:localhost:8001/system/nacos,查看结果

posted @ 2023-02-20 15:24  猫的烦恼  阅读(49)  评论(0编辑  收藏  举报