Nacos配置中心的配置文件的匹配规则及说明

 更新时间:2022年11月23日 15:17:57   作者:qiangqiang12138  
这篇文章主要介绍了Nacos配置中心的配置文件的匹配规则及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Nacos配置中心配置文件的匹配

详情见nacos的官方文档

1.配置微服务配置中心文件

在 Nacos Spring Cloud 中,数据集(Data Id) 的配置完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix:就是配置的服务名,默认是你配置的,通俗的说就是服务注册时注册到服务中心的服务名的值:
spring:
  application:
    name: shop-coupon #服务名
  • spring.profile.active:是配置开发环境的值,一个程序不可能总是在开发环境,可能需要切换到测试环境,上线环境,他们的配置文件都是不同的,所以为了方便环境切换,我们配置不同的开发环境文档。

比如在application.yml中有配置dev,就是开发环境:

spring:
  profiles:
    active: dev #表示开发环境

最后我们需要指定配置文件类型,默认是properties。

我们可以自己指定文件类型,比如配置:

spring:
  cloud:
    nacos:
      config:
        file-extension: yaml #指定配置文件类型为yaml文件

指定好配置文件类型,我们最终在配置中心新增配置文件就是:shop-coupon-dev.yaml。

nacos配置文件格式.png

2.常用细节

1)、命名空间:配置隔离:

默认: public(保 留空间);默认新增的所有配置都在public空间。隔离开发,测试,生产环境。

nacos命名空间.png

可以添加命名空间,然后在bootstrap.yml配置文件添加命名空间的id即可切换到对应的命名空间,使用对应空间下的配置文件:

cloud:
    nacos:
      config:
        namespace: a65a17de-e8f3-4d00-8d87-91549aaa0f02 #对应创建的命名空间的UUID

也可以基于微服务来创建命名空间,用每一个微服务名来命名,达到隔离每一个微服务的目的,哪一个微服务需要配置直接去对应的微服务空间下找配置即可,使得项目更加结构化。

2)、配置集:所有配置的集合。

3)、配置集ID:类似文件名。

Data ID:类似文件名

nacos配置Dataid.png

4)、配置分组:按时间等因素影响,可以去分组配置,比如双11组,双12组等等

  • 默认所有的配置集都属于: DEFAULT_ GROUP;我们也可以自己适配。
  • 一般的建议是使用命名空间来隔离服务,即每个微服务创建一个命名空间,使用配置分组来区分环境:dev、test、prod等。

3.从一个配置中心加载多个配置集

将一个配置文件按功能拆分成不同的文件,然后在程序组合加载到一起组成一个完整的配置文件。

比如拆分一下配置:

server:
  port: 5001

spring:
  profiles:
    active: dev #表示开发环境

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://139.224.67.81:3306/zunhui_sms?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
  application:
    name: shop-coupon
spring:
  application:
    name: shop-coupon
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml #指定配置文件类型为yaml文件
      discovery:
        server-addr: 127.0.0.1:8848
mybatis-plus:
  mapper-locations: classpath/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto #配置id自增

就可以拆分成三个文件,一个关务数据源的datasource.yml的,一个关于mybatis的,剩下的一个other配置:

拆分配置.png

只需要在配置文件中使用ext-config就可以加载多个配置文件:

加载多个配置文件.png

nacos作为配置中心的基本配置规则就是这些。

Nacos配置中心配置不成功问题

1.扫描包

首先在启动类中寻找扫描包,有可能没有把路径填充成功

2.关于配置nacos

在配置中

spring:
  profiles:
    active: 要激活的环境信息
  cloud:
    nacos:
      config:
        server-addr: 自己配置
        file-extension: yaml或者yml
        namespace: 这里的命名空间需要看nacos具体配置
        group: DEFAULT_GROUP一般都是默认组
  application:
    name: 项目名称

例如:

spring:
 profiles: test
 cloud:
 	nacos:
 		config:
 			server-addr: 10.100.66.222:8084
 			namespace: 3bd056b5-8696-44dd-a87f-635057sdaax2
 			username: asdas
 			password: sdadd
 			file-extension: yml

上面是我司的实际代码(以更改部分数据)

具体的nacos内部配置

内部配置

在这个过程中也遇到了一些问题

例如: 在添加配置后,选中的是yml配置,但是由于中间没有加空格导致不生效,找了30多分钟才发现这个问题

MAX_USE: 222

222前面是有空格的!!

3.为何没有热加载?

你可能会有疑惑,为什么nacos明明已经修改好了变量的值,但却在项目中发现原来的值并没有修改完成呢?

其实可能只是忘记了一个注解

@RefreshScope

4.配置好为何还是没有热加载?

可能你也和我犯了同一个问题,那就是没有将要修改的值交给spring统一进行管理,

也就是没有加上类似@Controller,@Service,@Component等注解

如果已经加上了的话,那么不要用new来创建对象,new出来的也不会实现热加载,

只有==@Autowired==自动装配的才可以保证同步nacos的配置

另外需要配置==@Component注解==而不是@Configuration注解,

@Componet 注解是原生的Bean

5.另一个坑

在nacos配置的过程中,想要对一个变量进行动态赋值,前面的步骤的坑都没踩,但是还是不行

5.1 static

就是在要修改的值前面有static修饰,被修饰的话,是独立与该类的,不与类的实例变量有依赖关系。

解决方法:

1. 将所有的static全部删去

2. 可以使用lombok的Data注解

3. 之后使用到这个变量的地方都使用get变量名的方法

5.2 String和Integer

当我们从Nacos中获取动态更新的值的时候,最好不用integer进行接收,不然可能会报错

如图的Integer就是无法接受nacos中的配置

感谢崔帅朋同学的提醒!让为父了解了另一种情况

6.如何打开项目中的nacos

找到配置文档的bootstrap.yml文件,在其中的nacos的addr后面加上/nacos放在浏览器中即可打开相应的nacos网站

nacos官方文档链接

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文秒懂java到底是值传递还是引用传递

    一文秒懂java到底是值传递还是引用传递

    这篇文章主要介绍了java到底是值传递还是引用传递的相关知识,本文通过几个例子给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot如何通过yml方式整合Mybatis

    SpringBoot如何通过yml方式整合Mybatis

    这篇文章主要介绍了SpringBoot如何通过yml方式整合Mybatis,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 关于@ApiModel和@ApiModelProperty的使用

    关于@ApiModel和@ApiModelProperty的使用

    这篇文章主要介绍了关于@ApiModel和@ApiModelProperty的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java2 JDK安装和配置教程

    Java2 JDK安装和配置教程

    这篇文章主要为大家详细介绍了Java2 JDK安装和配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Java模拟多线程实现抢票代码实例

    Java模拟多线程实现抢票代码实例

    这篇文章主要介绍了Java模拟多线程实现抢票,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Netty分布式源码分析监听读事件

    Netty分布式源码分析监听读事件

    这篇文章主要介绍了Netty分布式监听读事件方法的代码跟踪解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • SpringBoot开启异步调用方法

    SpringBoot开启异步调用方法

    这篇文章主要为大家详细介绍了SpringBoot开启异步调用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • java 替换docx文件中的字符串方法实现

    java 替换docx文件中的字符串方法实现

    这篇文章主要介绍了java 替换docx文件中的字符串方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Spring MVC深入学习之启动初始化过程

    Spring MVC深入学习之启动初始化过程

    最近因为工作的原因在学习Spring MVC,为了更深入的学习Spring MVC,下面这篇文章主要给大家介绍了关于Spring MVC深入学习之启动初始化过程的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 解决dubbo错误ip及ip乱入问题的方法

    解决dubbo错误ip及ip乱入问题的方法

    今天小编就为大家分享一篇关于解决dubbo错误ip及ip乱入问题的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论