Nacos配置中心

news/2025/2/23 4:00:56/

Nacos配置中心

使用 Spring Cloud Alibaba Nacos Config,可基于 Spring Cloud 的编程模型快速接入 Nacos 配置管理功能。

1.配置中心的基本使用

1.1 创建项目config-client-a

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.powernode</groupId><artifactId>naocs-client-config</artifactId><version>0.0.1-SNAPSHOT</version><name>03-naocs-client-config</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.8</spring-boot.version><spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 新版中需要添加 bootstrap依赖才会取读bootstrap.yml文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

1.2在NacosServer里面添加一个配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNlX4Vo9-1672021900634)(images/9.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcNeHvo9-1672021900635)(images/8.jpg)]

1.3查看数据库mysql

打开数据库nacos我们添加的配置文件就是插入到数据库里面的一条数据

1.4添加配置文件bootstrap.yml

bootstrap.yml 比application有更高的优先级。

server:port: 8080
spring:application:name: config-client-acloud:nacos:config:  #指定配置中心的地址和配置中心使用的数据格式server-addr: localhost:8848file-extension: properties

1.5读取配置文件的内容

在项目中添加一个实体类Hero,映射配置文件属性

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component  // 添加到IOC中,一会在controller注入
@RefreshScope  // 刷新的域,当远程配置文件修改后可以动态刷新
public class Hero {@Value("${hero.name}")private String name;@Value("${hero.age}")private Integer age;@Value("${hero.address}")private String address;}

添加控制器,读取对象hero的属性

@RestController
public class HeroController {@Autowiredprivate Hero hero;@GetMapping("heroInfo")public String heroInfo() {return hero.getName() + ":" + hero.getAge() + ":" + hero.getAddress();}
}

1.6测试配置文件动态修改

(1)测试发现,确实能读取到远程配置文件的内容

(2)修改远程配置文件的内容,无需重启,刷新浏览器,读取到修改之后的配置内容,

(3) 动态刷新,依赖于@RefreshScope 注解

注意:远程 config配置文件可以查看历史版本,可以回滚,功能比较强大。

2.配置文件的读取方式

nacos配置中心通过namespace、dataId和group来唯一确定一条配置。

Namespace:即命名空间。默认的命名空间为public,我们可以在Nacos控制台中新建命名空间;
dataId:即配置文件名称
group:即配置分组,默认为DEFAULT_GROUP,可以通过spring.cloud.nacos.config.group配置。其中:dataId 是最关键的配置字段:格式如下:${prefix} - {spring.profiles.active}  . {file-extension}  说明:
prefix默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置;spring.profiles.active即为当前环境对应的profile。注意,当spring.profiles.active为空时,对应的连接符-也将不存在,dataId的拼接格式变成{prefix}.{file-extension};file-extension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。

这就是上面我们为什么能获得到配置的原因了。

3.配置文件划分

Nacos配置中心的namespace、dataId和group可以方便灵活地划分配置。比如,我们现在有一个项目需要开发,项目名称为powernode,项目开发人员分为两个组:GROUP_A和GROUP_B,项目分为三个环境:开发环境dev、测试环境test和生产环境prod

powernode->GRUOR_A->dev

3.1添加命名空间

在nacos配置中心新建一个powernode的命名空间,生成了一个id,要记住这个id:5510ef39-ca9a-4f5d-87ba-7fb2afbf7035。

添加配置config-client-dev.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9t8nqW16-1672021900636)(images/10.jpg)]

3.2修改配置文件bootstrap.yml

server:port: 8080
spring:application:name: config-client-acloud:nacos:config:server-addr: localhost:8848namespace: 5510ef39-ca9a-4f5d-87ba-7fb2afbf7035  # 命名空间 注意使用 idgroup: GROUP_A    # 组别prefix: config-client   # 配置文件前缀,如果不写 默认使用${spring.application.name}的值file-extension: yml  # 后缀 文件格式profiles:active: dev  # spring的环境配置

3.3重启测试

读取到新的配置信息。

4.获取多配置文件

除了通过上面的方式指定一个唯一配置外,我们还可以同时获取多个配置文件的内容。

提供这个功能 可以再次封装和抽象配置文件管理

4.1 在Nacos中新建两个配置文件

在powernode命名空间,继续点击添加两个配置文件

(一)添加配置文件config-a.yml

组名:GROUP_A

hero:name: AAAage: 20

(二)添加配置文件config-b.yml

组名: GROUP_B

hero:address: 广州高塘石

(三)修改bootstrap.yml

server:port: 8080
spring:application:name: config-client-acloud:nacos:config:server-addr: localhost:8848namespace: 5510ef39-ca9a-4f5d-87ba-7fb2afbf7035  # 命名空间 注意使用 idextension-configs:  # 配置多个配置文件 数组形式-   data-id: config-a.yml  # 配置id,必须要加文件后缀group: GROUP_A  # 组别refresh: true  # 是否支持刷新-   data-id: config-b.ymlgroup: GROUP_Brefresh: false

说明:

spring.cloud.nacos.config.extension-configs[n].dataId,指定多个配置的dataId,必须包含文件格式,支持properties、yaml或yml;spring.cloud.nacos.config.extension-configs[n].group,指定分组;spring.cloud.nacos.config.extension-configs[n].refresh,是否支持刷新。上面的配置中,我们分别从DEFAULT_GROUP中获取了config-a.yml和config-b.yml配置内容,并且config-a.yml支持刷新,config-b.yml不支持刷新。注意:没有namespace的配置,言外之意就是Nacos目前还不支持多个配置指定不同的命名空间,只能在同一个命名空间使用。

5.共享配置

日常开发中,多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config支持。但是共享配置优先级低,所以如果是共享配置只需要写在shared-configs中指定的配置,相同的配置节如果在具体的配置文件中有了,则共享配置不生效.

server:port: 8081
spring:application:name: nacos-config-clientcloud:nacos:server-addr: 127.0.0.1:8848username: nacospassword: nacosconfig:namespace: f017d27f-ae36-47bd-8da4-213f5cce1d1a  # 命名空间file-extension: ymlgroup: A_GROUPprefix: nacos-config-clientshared-configs:  # 共享配置文件 ---优先级低- data-id: application-dev.ymlgroup: GROUP_Aprofiles:active: dev

6.配置内容规划

6.1本地的bootstrap.yml

应用名称,配置文件中心,注册中心地址,读取的配置文件名称信息等

6.2远端的配置文件

应用端口,数据源配置,redis配置,MQ配置,mybatis,Swagger的配置,这些配置可能会随着项目部署发生变化,在远端存储在git上便于动态刷新

7.nacos集群

为了提高可用性,将注册中心/配置中心配置为集群,提高系统可用性

配置三个nacos,分别将端口改为8847,8848,8849,并将运行模式由standalone改为cluster,添加cluster.conf配置,分别添加三台服务器地址

#修改start.cmd文件中的启动模式
set MODE="cluster"    
#修改cluster.conf中的集群配置
192.168.179.1:8847  192.168.179.1:8848  192.168.179.1:8849   
#应用中,服务器地址改为
server-addr: localhost:8848, localhost:8847, localhost:8849

服务器配置自动同步,任何一台宕机都不影响应用的正常使用

将端口改为8847,8848,8849,并将运行模式由standalone改为cluster,添加cluster.conf配置,分别添加三台服务器地址

#修改start.cmd文件中的启动模式
set MODE="cluster"    
#修改cluster.conf中的集群配置
192.168.179.1:8847  192.168.179.1:8848  192.168.179.1:8849   
#应用中,服务器地址改为
server-addr: localhost:8848, localhost:8847, localhost:8849

服务器配置自动同步,任何一台宕机都不影响应用的正常使用


http://www.ppmy.cn/news/6779.html

相关文章

【高级篇04】MySQL逻辑架构

文章目录第四章&#xff1a;逻辑架构逻辑架构SQL执行流程数据库缓冲池第四章&#xff1a;逻辑架构 逻辑架构 第一层&#xff1a;连接层。客户端访问MySQL服务器&#xff0c;首先建立TCP连接&#xff0c;经过三次握手建立连接成功后&#xff0c;MySQL服务器对TCP传输过来的账号…

华为OD机试真题 Python 实现【水库蓄水问题】【2022.11 Q4 新题】

目录 题目 思路 考点 Code 题目 题目描述: 给定一个长度为 n 的整数数组 height 。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。 输入描述: 输入一行数字,空格分隔。 输出描述:…

黄海冷水区微生物群落的季节演替及温度响应模式

期刊&#xff1a;Applied and Environmental Microbiology 影响因子&#xff1a;5.005 发表时间&#xff1a;2022 样本类型&#xff1a;水体 客户单位&#xff1a;中国海洋大学 凌恩客户中国海洋大学发表在《Applied and Environmental Microbiology》上的文章…

Matlab 实现磁测数据日变改正

1 算法 算法来自于GEMLink 5.2的帮助文档&#xff0c;这个文档基本解决了算法问题。 GemLink日变改正模块界面 1.1 概述 日变改正模块旨在执行磁力日变数据计算&#xff0c;而不用在仪器上进行日变&#xff08;仪器是未经过校正的原始数据&#xff09;。这个模块要求已经保…

车用DC-DC模块 1224V转5V2A过认证大塑料外壳

名称&#xff1a;车用12V转5V2A电源转换器 型号&#xff1a;LM40J5V2A3S 性质&#xff1a;非隔离型的BUCK电源转换器&#xff0c; 特点&#xff1a;采用集成IC设计&#xff0c;具有转换效率高&#xff0c;体积小&#xff0c;稳定可靠的特点&#xff0c;采用灌胶工艺&#xf…

SuperMap GIS 三维硬件设置优化

目录一、简介二、查看硬件显卡三、显卡设置1、NVIDA显卡设置2、AMD显卡设置一、简介 我们都知道为了体验更好的大型3D游戏&#xff0c;那么好的显卡是必不可少的。但是有了好的显卡当配置不对时&#xff0c;此时体验感也会大打折扣。同样的道理&#xff0c;在SuperMap中也需要…

SpringMVC使用Jackson、双向关联的解决策略@JsonIgnore

目录:一、SpringMVC和Jackson的关系&#xff1a;二、Jackson解决双向关联导致的栈溢出问题的解决方法&#xff1a;三、如何使用JsonIgnore&#xff1a;一、SpringMVC和Jackson的关系&#xff1a; SpringMVC返回return Object类型数据给前端时会自动调用jackson将Object类型的数…

电竞游戏蓝牙耳机哪个牌子好?电竞游戏蓝牙耳机排行榜

喜欢玩游戏或是追剧的话&#xff0c;佩戴蓝牙耳机更加不易受到外界的干扰&#xff0c;传输效果好的蓝牙耳机能够带来更好的画面感和立体感&#xff0c;那么电竞游戏蓝牙耳机哪个牌子好呢&#xff1f;以下是小编整理的几款当前值得入手的游戏蓝牙耳机。 第一款&#xff1a;南卡…