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

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

    • 一、Nacos-config配置中心
      • 1、官方文档
    • 二、快速配置
      • 1、Nacos-config基本操作
      • 2、Nacos配置中心使用
      • 3、Nacos客户端 每10ms去 注册中心 进行判断 根据MD5
      • 4、基于dataid 为yaml的文件扩展名方式
      • 5、支持自定义Group的配置
      • 6、支持自定义扩展的Data id配置
      • 7、@RefreshScope【设置动态感知对应配置变化】

一、Nacos-config配置中心

1、官方文档

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

  • springcloud config大部分应用场景结合git使用,动态变更还需要依赖Spring Cloud Bus消息总线来通过所有的客户端变化
  • springcloud config 大部分场景结果GIT使用,动态变更还需要SpringCloud Bus消息总线来通过所有客户端变化
  • nacos config 使用长轮询更新配置,一但配置变动后,通知Provider 的过程非常迅速,从速度上秒杀springcloud原来的config几条街
    Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第2张图片

二、快速配置

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

1、Nacos-config基本操作

新增配置

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第3张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第4张图片
点击发布
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第5张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第6张图片

编辑配置
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第7张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第8张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第9张图片

查看修改的历史信息

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第10张图片
查看详情

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第11张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第12张图片
详情和回滚等操作

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第13张图片

监听查询

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第14张图片

创建新的命名空间

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第15张图片

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第16张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第17张图片

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第18张图片

将配置文件克隆到其他命名空间当中
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第19张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第20张图片
用户管理&角色管理
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第21张图片
添加用户
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第22张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第23张图片
添加角色
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第24张图片
在这里插入图片描述
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第25张图片
权限管理
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第26张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第27张图片
我们设置登出系统
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第28张图片

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第29张图片

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
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第30张图片
Note 注意dataid是以properties(默认的文件扩展名方式)为扩展名

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

<dependency>
	<groupId>com.alibaba.cloudgroupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

现在就可以创建一个标准的SpringBoot应用
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第31张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第32张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第33张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第34张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第35张图片


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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第36张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第37张图片

server:
  port: 8050
	<dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>
    dependencies>

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第38张图片

@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地址,例如
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第39张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第40张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第41张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第42张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第43张图片

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第44张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第45张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第46张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第47张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第48张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第49张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第50张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第51张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第52张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第53张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第54张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第55张图片

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

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

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

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第56张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第57张图片

user:
    name: 徐庶-yaml
    age: 11

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第58张图片
我们发现拿不到配置信息了
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第59张图片
需要修改对应的配置信息,设置对应读取文件扩展名
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第60张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第61张图片

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

重新运行项目
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第62张图片
设置多个环境的application.yml的配置文件
application-dev.yml
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第63张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第64张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第65张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第66张图片
上述输出的配置信息当中用户名是刚刚的配置信息,但是年龄是读取的依旧是旧的配置信息
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第67张图片
设置namespace为dev
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第68张图片

        namespace: dev

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第69张图片
我们可以看到读取不到任何配置信息,因为我们没有设置dev环境下的配置信息
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第70张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第71张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第72张图片
克隆成功
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第73张图片

5、支持自定义Group的配置

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

spring.cloud.nacos.config.group=DEVELOP_GROUP

在这里插入图片描述
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第74张图片

        group: itbluebox

读取不到对应的信息
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第75张图片
克隆并设置Group
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第76张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第77张图片
又可以继续读取到对应的配置信息
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第78张图片

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

Spring Cloud Alibaba Nacos Config从 0.2.1版本后,可支持自定义Data ld的配置。关于这部分详细的设计可参考这里。一个完整的配置案例如下所示:
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第79张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第80张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第81张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第82张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第83张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第84张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第85张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第86张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第87张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第88张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第89张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第90张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第91张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第92张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第93张图片

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第94张图片

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

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第95张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第96张图片

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

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

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

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第97张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第98张图片

http://localhost:8050/config/show
在这里插入图片描述
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第99张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第100张图片
控制台输出的内容变了
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第101张图片
再次访问对应的接口没有变化
http://localhost:8050/config/show
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第102张图片
设置动态感知对应配置变化
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第103张图片

@RefreshScope

重新启动运行项目
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第104张图片
修改配置信息
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第105张图片
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第106张图片
控制台输出内容变了
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第107张图片
访问:http://localhost:8050/config/show
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】_第108张图片

你可能感兴趣的:(Java,SpringCloud,java,spring,cloud,微服务)