NacosConfig

NacosConfig是一个重要的服务配置中心,它在微服务架构中起到了关键的作用。以下是NacosConfig的主要作用:

  • 集中管理配置:NacosConfig提供了用于存储配置和其他元数据的key/value存储功能,使得开发者可以在Nacos Server上集中管理Spring Cloud应用的外部属性配置。这样,服务之间的配置信息可以得到统一管理和维护,简化了配置管理流程。
  • 支持动态配置:NacosConfig支持动态配置,这意味着在配置发生更改时,服务可以实时获取最新的配置信息,而无需重启服务。这种动态配置的能力使得微服务架构更加灵活和可维护。
  • 环境隔离:NacosConfig通过命名空间(Namespace)的概念实现了不同环境的配置隔离。不同的命名空间下可以存在相同的Group或Data ID的配置,这使得开发者可以方便地管理不同环境(如开发、测试、生产等)的配置资源,确保环境的独立性和安全性。
  • 配置维护便捷:在微服务架构中,集群中每一台主机的配置文件可能都是相同的,对配置文件的更新维护可能会成为一个棘手问题。而NacosConfig可以作为配置中心,对Spring Cloud中各个微服务文件进行统一维护管理,简化了配置文件的更新和维护过程

Nacos配置

     <!--nacos-服务注册发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--nacos-配置文件   需要添加当jar包 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

NacosConfig主要是用来做配置文件使用,需要使用 bootstrap.yml文件作为引导文件

在这里插入图片描述

nacos配置名称如果和服务名称一致,则会自动将服务名称作为配置名称
nacos的配置文件默认是propertys格式,在application.yml中配置nacos的配置文件格式为properties,因为是默认格式,所以也可以不配

spring:cloud:nacos:config:file-extension: properties

在这里插入图片描述

只有默认的配置文件才可以支持profile粒度的配置,跟服务名相同的配置文件,如果想支持profile粒度的配置,则需要在配置文件中添加profile前缀,如: stock-server-dev.properties
除了默认的配置文件,其他的配置文件必须写上文件后缀,如: stock-server-dev.properties,后缀必须和默认的配置文件后缀一致,
在日常开发中如果遇到多套环境下的不同配置,可以通过 Spring 提供的 ${spring.profiles.active} 这个配置项选择不同情况下的配置。

spring.profiles.active=dev

如果需要切换到生产环境,只需要更改 ${spring.profiles.active} 参数配置即可。如下所示

spring.profiles.active=product

nacos配置文件优先级, profile > 默认配置文件 > extension-configs > share-configs ,优先级大的会覆盖优先级小的,并且会形成互补
namespace的配置:代表不同环境

spring:application:name: order-servercloud:nacos:discovery:password: nacosusername: nacosnamespace: publicconfig:filere-extension: yamlgroup: devnamespace: devdata-id: order-servershare-configs:  # 在同一个share-configs中,后面的配置文件会覆盖之前的- group: dev   # 默认命名攻坚 default-groupdata-id: stock-0 # 配置文件名refresh: true   # 不会默认感知文件变化,如果需要默认感知只需要设置为false即可- group: devdata-id: stock-1extension-configs[0]:   # 第二个配置文件方式,使用下标方式 优先级extension-configs 大于 share-configsdata-id: stock-0refresh: trueserver-addr: 127.0.0.1:8848#这段YAML代码是用于配置Spring Cloud Nacos Discovery的,它定义了服务发现和配置管理的一些参数。
#spring.application.name:设置应用的名称为order-server。
#spring.cloud.nacos.discovery:配置Nacos服务发现的相关参数。
#password:设置Nacos服务器的登录密码为nacos。
#username:设置Nacos服务器的登录用户名为nacos。
#namespace:设置Nacos的命名空间为public。
#config:配置Nacos配置管理的相关参数。
#file-extension:设置配置文件的扩展名为yaml。
#group:设置配置文件所属的分组为dev。
#namespace:设置配置管理的命名空间为dev。
#data-id:设置配置文件的ID为order-server。

配置文件内容
在这里插入图片描述
测试能否读取到当前配置信息

@SpringBootApplication
public class ProviderApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);while(true) {String userName = applicationContext.getEnvironment().getProperty("user.name");String userAge = applicationContext.getEnvironment().getProperty("user.age");//获取当前部署的环境String currentEnv = applicationContext.getEnvironment().getProperty("current.env");System.err.println("in "+currentEnv+" enviroment; "+"user name :" + userName + "; age: " + userAge);TimeUnit.SECONDS.sleep(1);}}
}

自定义 Namespace 的配置
Nacos 内部有 Namespace 的概念:

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离, 例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 中 public 命名空间即默认的命名空间。如果需要使用自定义的命名空间,可以通过以下配置来实现:
该配置必须放在 bootstrap.properties 文件中。此外 spring.cloud.nacos.config.namespace 的值是 namespace 对应的 id,id 值可以在 Nacos 的控制台获取。并且在添加配置时注意不要选择其他的 namespace,否则将会导致读取不到正确的配置。


spring.cloud.nacos.config.namespace=YOUR_NAMESPACE_ID

自定义 Group 的配置
在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是组 DEFAULT_GROUP 。如果需要自定义 Group,可以通过以下配置来实现:

spring.cloud.nacos.config.group=YOUR_GROUP_NAME

配置的优先级
Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置:

  • A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置

  • B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置

  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是: A < B < C

springc.config.import 引入
这里假设有一个配置文件 bootstrap.yml,升级到 2021.0.1.0 以上的版本应该怎么配置呢?

# bootstrap.yml
spring:cloud:nacos:config:name: test.ymlgroup: DEFAULT_GROUPserver-addr: 127.0.0.1:8848extension-configs:- dataId: test01.ymlgroup: group_01- dataId: test02.ymlgroup: group_02refresh: false

注意:上面的配置和下面的配置是等价的!

# application.yml
spring:cloud:nacos:config:group: DEFAULT_GROUPserver-addr: 127.0.0.1:8848config:import:- optional:nacos:test.yml # 监听 DEFAULT_GROUP:test.yml- optional:nacos:test01.yml?group=group_01 # 覆盖默认 group,监听 group_01:test01.yml- optional:nacos:test02.yml?group=group_02&refreshEnabled=false # 不开启动态刷新- nacos:test03.yml # 在拉取nacos配置异常时会快速失败,会导致 spring 容器启动失败

使用 spring.config.import 引入配置时的注意事项如下:

  1. 如果使用 spring.config.import 就不能使用 bootstrap.yml/properties 引入配置的方式了;
  2. 如果引入了 spring-cloud-starter-alibaba-nacos-config,并且使用 import 方式导入配置, 项目启动时会自动检测是否引入了 nacos 条目,如果没有 import nacos 条目,会出现如下错误:
The spring.config.import property is missing a nacos: entryAction:Add a spring.config.import=nacos: property to your configuration.
If configuration is not required add spring.config.import=optional:nacos: instead.
To disable this check, set spring.cloud.nacos.config.import-check.enabled=false.

配置项参考

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538554.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习训练GPU显卡选型攻略

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f4d1;上期文章&#xff1a;『仪酷LabVIEW OD实战(5)——Object DetectionTensorRT工具包快速实现yolo目标检测』 &#x1f37b;本文由virobotics(仪酷智能)原创…

3.环境对象this、this指向总结(待完成还有节流防抖待完成)、回调函数、事件

环境对象this 环境对象本质上是一个关键字 this this所在的代码区域不同&#xff0c;代表的含义不同 全局作用域中的this 全局作用域中this代表window对象 局部作用域中的this 在局部作用域中(函数中)this代表window对象 函数直接调用的时候简写了&#xff0c;函数完整写法…

打卡学习kubernetes——了解k8s基本概念

目录 1 Container 2 Pod 3 Node 4 Namespace 5 Service 6 Label 7 Annotations 8 Volume 1 Container Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境&#xff0c;并通过镜像自包含软件的运行环境&#xff0c;从而…

LLM预备知识、工具篇——LLM+LangChain+web UI的架构解析

目录 【常见名词】一、LLM的低资源模型微调二、向量数据库1、Milvus(v2.1.4)&#xff1a;云原生自托管向量数据库&#xff08;Ubuntu下&#xff09;1&#xff09;安装&#xff08;Docker Compose方式&#xff09;&#xff1a;2&#xff09;管理工具&#xff08;仅支持Milvus 2.…

Cloudflare的Automaitc HTTPS Rewrites是什么意思?

相关配置如下图所示&#xff1a; Automaitc HTTPS Rewrites的意思如下&#xff1a; Cloudflare的Automatic HTTPS Rewrites是一项功能&#xff0c;旨在帮助网站在使用HTTPS&#xff08;安全套接字层&#xff09;加密连接时更好地处理页面上的混合内容。HTTPS Rewrites自动修…

深入理解JAVA异常(自定义异常)

目录 异常的概念与体系结构 异常的概念&#xff1a; 异常的体系结构&#xff1a; 异常的分类&#xff1a; 异常的处理 防御式编程 LBYL: EAFP: 异常的抛出 异常的捕获 异常声明throws try-catch捕获并处理 finally 面试题&#xff1a; 异常的处理流程 异常处…

c++ 常用函数 集锦 整理中

c 常用函数集锦 目录 1、string和wstring之间转换 1、string和wstring之间转换 std::string convertWStringToString(std::wstring wstr) {std::string str;if (!wstr.empty()){std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;str converter.to_b…

python之格式化输出format()函数使用总结

在 Python 中&#xff0c;format 方法是一种用于字符串格式化的强大工具。它允许你将变量或表达式插入到字符串中&#xff0c;并根据需要进行格式化。下面是对 format 方法的详细介绍&#xff1a; format 方法的基本语法如下&#xff1a; formatted_string "string {0} …

算法刷题Day9 | 28. 实现 strStr()、459.重复的子字符串、字符串总结

目录 0 引言1 实现 strStr()1.1 我的解题1.2 KMP算法解题 2 重复的子字符串2.1 暴力求解2.2 KMP求解法 3 字符串总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;算法刷题Day8 | 28. 实现 strStr()、45…

pycharm安装配置运行py代码与命令行运行

命令行(winr cmd python) 三个小箭头表示可以运行py代码 什么是解释器 文字翻译二进制 你对电脑说 我爱你 电脑不知道什么意思 你对电脑说 111001101000100010010001 111001111000100010110001 111001001011110110100000 电脑便知道了你爱它 那么如何给计算机说这些二进制串…

爬虫的去重

去重基本原理 爬虫中什么业务需要使用去重 防止发出重复的请求防止存储重复的数据 在爬取网页数据时&#xff0c;避免对同一URL发起重复的请求&#xff0c;这样可以减少不必要的网络流量和服务器压力&#xff0c;提高爬虫的效率&#xff0c;在将爬取到的数据存储到数据库或其…

python基础——列表【创建,下标索引,常见操作方法】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python中常见的数据容器之一——列表 本文主要讲解列表的创建以及我们常用的列表操作方法 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基础以及python入门基础 &#x1f380…