产品经理如何做p2p网站改版cm域名网站
【Spring Cloud Alibaba】007-Nacos 配置*
文章目录
- 【Spring Cloud Alibaba】007-Nacos 配置*
 - 一、概述
 - 1、概述
 - 2、对比 spring cloud config
 
- 二、基本使用
 - 1、在管理界面新建配置
 - 2、启动权限
 - 3、 搭建 nacos-config 服务
 - 第一步:引入依赖
 - 第二步:修改 yaml 配置文件
 - 第三步:修改启动类
 - 第四步:运行测试
 - image-20230223162512852
 
- 三、动态获取最新配置
 - 四、配置中心原理
 
一、概述
1、概述
参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使
用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

2、对比 spring cloud config
- spring cloud config 大部分场景结合 git 使用,动态变更还需要依赖 Spring Cloud Bus 消息总线来通过所有的客户端变化;
 - spring cloud config不提供可视化界面;
 - nacos config 使用长轮询更新配置,一旦配置有变动后,通知 Provider 的过程非常的迅速, 从速度上秒杀 spring cloud 原来的 config 几条街。
 

二、基本使用
1、在管理界面新建配置
参考:https://nacos.io/zh-cn/docs/concepts.html
Namespace:代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件

2、启动权限

3、 搭建 nacos-config 服务
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的自动变更
第一步:引入依赖
<!-- spring‐cloud‐starter‐alibaba‐nacos‐config -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
 
第二步:修改 yaml 配置文件
参考文章:https://www.modb.pro/db/390266
spring:application:name: order-servicecloud:nacos:server-addr: localhost:8848discovery:username: nacospassword: nacosnamespace: publicconfig:group: DEFAULT_GROUPserver-addr: localhost:8848username: nacospassword: nacos、# 新版命名空间不能使用 publicnamespace: 74065c76-2e4e-44ba-935e-a6f88f44f83cconfig:import:- optional:nacos:test.yaml
 
第三步:修改启动类
public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(OrderApplication.class, args);String name = context.getEnvironment().getProperty("user.name");String age = context.getEnvironment().getProperty("user.age");System.out.println("name is " + name + ", age is " + age);
}
 
第四步:运行测试
三、动态获取最新配置
@Value 注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用 @RefreshScope 注解!
@RestController
@RefreshScope
public class TestController {@Value("${user.nickname}")private String nickname;@GetMapping("/user")public String hello() {return nickname;}
}
 
四、配置中心原理


