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

目录
  • Nacos配置中心配置文件的匹配
    • 1.配置微服务配置中心文件
    • 2.常用细节
    • 3.从一个配置中心加载多个配置集
  • Nacos配置中心配置不成功问题
    • 1.扫描包
    • 2.关于配置nacos
    • 3.为何没有热加载?
    • 4.配置好为何还是没有热加载?
    • 5.另一个坑
    • 6.如何打开项目中的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。

2.常用细节

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

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

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

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

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

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

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

Data ID:类似文件名

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配置:

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

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官方文档链接

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

(0)

相关推荐

  • Nacos配置中心搭建及动态刷新配置及踩坑记录

    目录 一.Nacos配置中心介绍 二.配置中心搭建 1.配置中心启用 2.创建配置文件 3.工程配置 三.试验结果 四.踩坑经历 五.总结 近期有用到阿里的开源配置中心及注册中心nacos,特此记录并分享一些学习笔记及配置踩坑点. 一.Nacos配置中心介绍 从架构图上可以知道,Nacos提供了两种服务,一种是用于服务注册.发现的Naming Service,一种是用于配置中心.动态配置的Config Service,而他们底层均由core模块来支持. 外层提供OpenAPI供客户端使用,并提供

  • nacos配置中心远程调用读取不到配置文件的解决

    目录 nacos配置中心远程调用读取不到配置文件 下面引用官方文档的一段内容 读取不到nacos配置中心内容的坑 这是出错的配置 这是正确的配置 nacos配置中心远程调用读取不到配置文件 1.由于公司要求,对nacos做了命名空间的配置.(这个开始我步入了迷途....) 为了更好的区分配置文件,我们创建了两个命名空间,dev和test,在学习的时候,我们并未创建这些命名空间,所以一直正常使用,创建命名空间后我们无法读取到配置文件. 那么添加命名空间后需要在配置文件中支持命名空间,类似你创建了g

  • SpringCloud安装Nacos完成配置中心

    目录 1. Nacos介绍 2. docker安装Nacos 2.1 docker-compose.yaml 2.2 启动后访问控制台 3.Springboot集成Nacos 3.1 pom依赖 3.2 yaml配置 3.3 测试配置动态化 3.4 测试日志 eureka注册中心 1. Nacos介绍 官网说明:Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 2. docker安装Nacos 基

  • 详解Nacos配置中心的实现

    目录 基础配置 pom文件 YML文件 配置配置中心文件 Nacos中的匹配规则 Nacos作为配置中心-分类配置 Nacos的图形化管理界面 三种方案加载配置 DataID方案 Group方案 Namespace方案 基础配置 新建module:cloudalibaba-config-nacos-client3377 pom文件 版本号已经由父工程控制 <?xml version="1.0" encoding="UTF-8"?> <project

  • 详解Nacos中注册中心和配置中心的实现

    目录 1.Nacos 简介 Nacos 特性介绍 2.注册中心实现 2.1 创建服务提供者 2.2 创建服务消费者 3.配置中心实现 3.1 新建项目并添加依赖 3.2 配置 Nacos Config 信息 3.3 编写代码读取配置文件 3.4 Nacos 控制台添加配置信息 3.5 动态刷新功能 4.项目源码 小结 Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录.而 Nacos 作为 Spring Cloud A

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

    目录 Nacos配置中心配置文件的匹配 1.配置微服务配置中心文件 2.常用细节 3.从一个配置中心加载多个配置集 Nacos配置中心配置不成功问题 1.扫描包 2.关于配置nacos 3.为何没有热加载? 4.配置好为何还是没有热加载? 5.另一个坑 6.如何打开项目中的nacos Nacos配置中心配置文件的匹配 详情见nacos的官方文档 1.配置微服务配置中心文件 在 Nacos Spring Cloud 中,数据集(Data Id) 的配置完整格式如下: ${prefix}-${spr

  • spring cloud如何集成nacos配置中心

    目录 spring cloud集成nacos配置中心 一.添加依赖 二.添加bootstrap.yml配置文件 三.添加远程配置 nacos作为SpringCloud配置中心 一.背景介绍 二.项目实战 三.总结 spring cloud集成nacos配置中心 一.添加依赖 <properties> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <nacos.version>0.9

  • SpringBoot使用Nacos配置中心的实现

    本文介绍SpringBoot如何使用阿里巴巴Nacos做配置中心. 1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos基本上支持现在所有类型的服务,例如,Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务. 尤其是使用Eureka注册中心的,并且担心Eureka闭源的开发者们,可以将注册中心修改为Nacos,本文主要介绍Naco

  • Spring的@Value如何从Nacos配置中心获取值并自动刷新

    目录 @Value从Nacos配置中心获取值并自动刷新 Nacos属性值自动刷新 1.@NacosValue获取最新值 2.@Value获取最新值 @Value从Nacos配置中心获取值并自动刷新 在使用Nacos作为配置中心时,除了@NacosValue可以做到自动刷新外,nacos-spring-context:0.3.4版本是支持@Value获取Nacos配置中心的值,并动态刷新的,该功能是Spri依靠ngValueAnnotationBeanPostProcessor类来实现: @Ove

  • 阿里面试Nacos配置中心交互模型是push还是pull原理解析

    目录 引言 配置中心 长轮询 Nacos初识 几个概念 客户端源码分析 结束语 引言 对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现.配置管理,非常好用的一个工具.然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏. 比如我们今天要讨论的话题,Nacos在做配置中心的时候,配置数据的交互模式是服务端推过来还是客户端主动拉的? 这里我先抛出答案:客户端主动拉的! 接下来咱们扒一扒Nacos的源码,来看看它具体是如何实现的? 配置中心 聊N

  • SpringCloud Nacos配置中心管理超详细讲解

    目录 一.Nacos配置管理 1.1 统一配置管理 1.1.1在nacos中添加配置文件 1.1.2 从微服务拉取配置 1.2 配置热更新 1.2.1 方式一 1.2.2 方式二 1.3 配置共享 一.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来用 1.1 统一配置管理 当微服务部署越来越多,达到数十,数百时,逐个修改微服务配置就会很麻烦,且容易出错.我们需要一种统一配置管理方案,可以集中管理所有实例的配置. Nacos一方面更可以将配置集中管理另一方面在配置变更时,及

  • Nacos配置中心集群原理及源码分析

    目录 Nacos集群工作原理 配置变更同步入口 AsyncNotifyService AsyncTask 目标节点接收请求 NacosDelayTaskExecuteEngine ProcessRunnable processTasks DumpProcessor.process Nacos作为配置中心,必然需要保证服务节点的高可用性,那么Nacos是如何实现集群的呢? 下面这个图,表示Nacos集群的部署图. Nacos集群工作原理 Nacos作为配置中心的集群结构中,是一种无中心化节点的设计

随机推荐