Nacos手摸手教学【一】

简介: nacos动态配置

1、前言

我们使用一门技术时首先要弄懂为啥要用它,它可以帮我们解决哪些问题。

nacos配置中心,可以使得配置标准化、格式统一化,当配置信息发生变动时,修改实时生效,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。

本文基于Cloud Alibaba 2021.0.1.0 + Springboot 2.6.3

2、实操

nacos的下载与安装这里就不说了。nacos-server默认是集群模式启动,这里我们使用单机模式。

startup.cmd-mstandalone

新建项目后 先添加依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2021.0.1.0</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.2</version></dependency>

这里需要注意,该版本不再默认加载bootstrap 文件,如果需要加载bootstrap 文件需要手动添加依赖。

之后我们去nacos的控制台新建一个命名空间

如此得到一个命名空间的id,紧接着去项目中的配置文件填写。

spring:
cloud:
nacos:
config:
server-addr: 服务ip:8848file-extension: yamlnamespace: 434e7801-0b5d-4fd2-b96a-acbac849fd84application:
name: nacos-demoprofiles:
active: dev

再去nacos控制台,在配置列表选中我们刚刚新建的命名空间,点最右侧+号

写个测试接口,启动项目,我们来测试一下

@RefreshScope@RestControllerpublicclassConfigController {
@Value("${user.name}")
privateStringname;
@GetMapping("/test")
publicStringtest(){
returnname;
    }
}

首先我们发现项目是以8082端口启动

调用接口后

我们注意到在控制类上有个@RefreshScope  该注解可以帮助实现配置热加载。

我们修改配置文件后,不重启项目,重新调用接口

3、解析

实操后肯定有很多疑问,此时我们再来解析一下:

Data Id: 它的取值为前缀-环境-扩展名

${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

  • prefix:前缀,默认是 spring.application.name 的值。取值优先级为先取 spring.cloud.nacos.config.prefix,再取 spring.cloud.nacos.config.name,最后取spring.application.name,拿到一个值就行了。
  • active:配置运行环境,即为当前环境对应的 profile。当 spring.profiles.active 为空时,对应的连接符 ”-“ 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension:配置文件的类型,默认是 properties,也可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前支持的类型有 TEXT、JSON、XML、YAML、HTML、Properties

NameSpace: 其实从实例中我们也能看出来, Nacos 引入命名空间 Namespace 的概念来进行多环境配置和服务的管理及隔离。例如,你可能存在本地开发环境dev、测试环境test、生产环境prod 三个不同的环境,那么可以创建三个不同的 Namespace 区分不同的环境。

Group:比较细粒度的隔离,比如用户微服务单独分组USER_GROUP

相关文章
|
canal SQL JSON
Elastic: canal数据同步到ES配置常见报错
所有报错均为博主在实操过程中遇到的错误和解决办法,如果有其他报错或者不同的解决办法,请留言告诉我 安装canal过程中遇到问题,先在本文中查询是否有相同报错,将会为你节约大量排错时间
1186 0
Elastic: canal数据同步到ES配置常见报错
|
数据采集 缓存 监控
优化 Grafana 性能:技巧与窍门
【8月更文第29天】Grafana 是一个非常受欢迎的开源数据可视化平台,它能够连接到各种数据源并提供高度定制化的仪表板。然而,随着数据量的增长和复杂查询的增多,Grafana 的性能可能会受到影响。本文将探讨如何优化 Grafana 的性能,以提高其响应速度和稳定性,并通过具体的代码示例来展示这些技巧。
1417 1
|
计算机视觉 Python
ERROR: Could not build wheels for opencv-python which use PEP 517 and cannot be installed directly
ERROR: Could not build wheels for opencv-python which use PEP 517 and cannot be installed directly
419 2
|
应用服务中间件 Linux
IDEA2019.3配置tomcat报错Warning the selected directory is not a valid tomcat home解决方法
IDEA2019.3配置tomcat报错Warning the selected directory is not a valid tomcat home解决方法
513 0
|
网络协议 SDN 网络架构
用TCP穿透NAT(TCP打洞)的实现
1. TCP穿透原理:     我们假设在两个不同的局域网后面分别有2台客户机A和 B,AB所在的局域网都分别通过一个路由器接入互联网。互联网上有一台服务器S。     现在AB是无法直接和对方发送信息的,AB都不知道对方在互联网上真正的IP和端口, AB所在的局域网的路由器只允许内部向外主动发送的信息通过。
5494 0
|
前端开发 Java Scala
2022IDEA的下载、安装、配置与使用(一)
2022IDEA的下载、安装、配置与使用
931 1
|
运维 前端开发 jenkins
docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)
打算分两篇文章讲解,这篇文章讲解使用docker将我们的项目文件构建为镜像,然后部署到腾讯云的服务器上(相当于手动完成一次部署),然后进行外网访问测试。
693 0
docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)
|
SQL 监控 druid
事务未能正确提交导致Druid报错connection holder is null(2)
事务未能正确提交导致Druid报错connection holder is null(2)
1080 0
|
SQL 存储 网络协议
事务未能正确提交导致Druid报错connection holder is null(1)
事务未能正确提交导致Druid报错connection holder is null
1084 0
|
存储 流计算 运维
基于ELK+Flink日志全观测最佳实践
本文主要介绍ELK+Flink的日志全观测解决方案和实践分享
基于ELK+Flink日志全观测最佳实践