小言_互联网的博客

【Spring Cloud Alibaba】007-Nacos 配置*

487人阅读  评论(0)

【Spring Cloud Alibaba】007-Nacos 配置*

一、概述

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-service
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        username: nacos
        password: nacos
        namespace: public
      config:
        group: DEFAULT_GROUP
        server-addr: localhost:8848
        username: nacos
        password: nacos、
        # 新版命名空间不能使用 public
        namespace: 74065c76-2e4e-44ba-935e-a6f88f44f83c
  config:
    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;
    }
}

四、配置中心原理


转载:https://blog.csdn.net/qq_29689343/article/details/129185012
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场