Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

一、Nacos-config配置中心

1、官方文档

Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Confg,您可以在Nacos Server集中管理你
Spring Cloud应用的外部属性配置。
1.维护性 2.时效性 3.安全性
在这里插入图片描述
springcloud config对比
三大优势

  • springcloud config大部分应用场景结合git使用,动态变更还需要依赖Spring Cloud Bus消息总线来通过所有的客户端变化
  • springcloud config 大部分场景结果GIT使用,动态变更还需要SpringCloud Bus消息总线来通过所有客户端变化
  • nacos config 使用长轮询更新配置,一但配置变动后,通知Provider 的过程非常迅速,从速度上秒杀springcloud原来的config几条街
    在这里插入图片描述

二、快速配置

访问:http://192.168.180.128:8847/nacos/index.html#/login

1、Nacos-config基本操作

新增配置

在这里插入图片描述
在这里插入图片描述
点击发布
在这里插入图片描述
在这里插入图片描述

编辑配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看修改的历史信息

在这里插入图片描述
查看详情

在这里插入图片描述
在这里插入图片描述
详情和回滚等操作

在这里插入图片描述

监听查询

在这里插入图片描述

创建新的命名空间

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

将配置文件克隆到其他命名空间当中
在这里插入图片描述
在这里插入图片描述
用户管理&角色管理
在这里插入图片描述
添加用户
在这里插入图片描述
在这里插入图片描述
添加角色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
权限管理
在这里插入图片描述
在这里插入图片描述
我们设置登出系统
在这里插入图片描述

在这里插入图片描述

2、Nacos配置中心使用

Nacos服务端初始化
1、启动Nacos Server,启动方式可见Nacos官网
2、启动好Nacos之后,在Nacos添加如下配置

Data ID: nacos-config.properties
Group : DEFAULT_GROUP
配置格式:Properties
配置内容:
user.name = 徐庶2
user.age = 11
在这里插入图片描述
Note 注意dataid是以properties(默认的文件扩展名方式)为扩展名

客户端使用方式
如果要在您的项目当中使用Nacos来实现应用的外部化配置,使用group ID为com.alibaba.cloud 和 artfact ID为spring-cloud-starter-alibaba-nacos-config的starter

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

现在就可以创建一个标准的SpringBoot应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


@SpringBootApplication
public class ConfigApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(ConfigApplication.class,args);
    }
}

在这里插入图片描述
在这里插入图片描述

server:
  port: 8050
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Nacos config 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

在这里插入图片描述

@SpringBootApplication
public class ConfigApplication {
    
    
    public static void main(String[] args) {
    
    
        ConfigurableApplicationContext applicationContext = SpringApplication.run(ConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("user name :"+userName +"; age: "+userAge);
    }
}

在运行此Example之前,必须使用bootstarp.properties配置文件来配置Nacos Server地址,例如
在这里插入图片描述
在这里插入图片描述

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      server-addr: 192.168.180.128:8847

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Nacos客户端 每10ms去 注册中心 进行判断 根据MD5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、基于dataid 为yaml的文件扩展名方式

spring-cloud-starter-alibaba-nacos-config对于yaml格式也是完美支持的。这个时候只需要完成以下两步:

1、在应用的 bootstrap.properties配置文件中显示的声明dataid文件扩展名。如下所示
bootstrap.properties

spring.cloud.nacos.config.file-extension=yaml

在这里插入图片描述
在这里插入图片描述

user:
    name: 徐庶-yaml
    age: 11

在这里插入图片描述
我们发现拿不到配置信息了
在这里插入图片描述
需要修改对应的配置信息,设置对应读取文件扩展名
在这里插入图片描述

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml

在这里插入图片描述

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml
        #refresh-enabled: false nacos客户端将无法感知配置的变化

重新运行项目
在这里插入图片描述
设置多个环境的application.yml的配置文件
application-dev.yml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述输出的配置信息当中用户名是刚刚的配置信息,但是年龄是读取的依旧是旧的配置信息
在这里插入图片描述
设置namespace为dev
在这里插入图片描述

        namespace: dev

在这里插入图片描述
我们可以看到读取不到任何配置信息,因为我们没有设置dev环境下的配置信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
克隆成功
在这里插入图片描述

5、支持自定义Group的配置

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

spring.cloud.nacos.config.group=DEVELOP_GROUP

在这里插入图片描述
在这里插入图片描述

        group: itbluebox

读取不到对应的信息
在这里插入图片描述
克隆并设置Group
在这里插入图片描述
在这里插入图片描述
又可以继续读取到对应的配置信息
在这里插入图片描述

6、支持自定义扩展的Data id配置

Spring Cloud Alibaba Nacos Config从 0.2.1版本后,可支持自定义Data ld的配置。关于这部分详细的设计可参考这里。一个完整的配置案例如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

String userConfig = applicationContext.getEnvironment().getProperty("user.config");
            System.out.println("user name :"+userName +"; age: "+userAge + "; userConfig:"+userConfig);

在这里插入图片描述

group: itbluebox
        shared-configs:
          - data-id: com.itblueboxmall.common.properties
            refresh: true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

            #group:默认是Default-group
          - data-id: com.itblueboxmall.common2.properties
            refresh: true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

            #group:默认是Default-group
        extension-configs[0]:
          data-id: com.itblueboxmall.common03.properties
          refresh: true

在这里插入图片描述

7、@RefreshScope【设置动态感知对应配置变化】

@Value注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用@RefreshScope注解

在这里插入图片描述
在这里插入图片描述

@RestController
@RequestMapping("/config")
public class ConfigController {
    
    

    @Value("${user.name}")
    public String username;

    @RequestMapping("/show")
    public String show(){
    
    
        return this.username;
    }
}

在这里插入图片描述
在这里插入图片描述

http://localhost:8050/config/show
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控制台输出的内容变了
在这里插入图片描述
再次访问对应的接口没有变化
http://localhost:8050/config/show
在这里插入图片描述
设置动态感知对应配置变化
在这里插入图片描述

@RefreshScope

重新启动运行项目
在这里插入图片描述
修改配置信息
在这里插入图片描述
在这里插入图片描述
控制台输出内容变了
在这里插入图片描述
访问:http://localhost:8050/config/show
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/131527250