一、Nacos简介

1. 为什么叫Nacos

前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。

2. 是什么

  1. 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  2. Nacos: Dynamic Naming and Configuration Service
  3. Nacos就是注册中心 + 配置中心的组合(Nacos = Eureka+Config +Bus)

    3.能干嘛

  4. 替代Eureka做服务注册中心

  5. 替代Config做服务配置中心

    4. 去哪下

    https://github.com/alibaba/Nacos

4.1 官网文档

https://nacos.io/zh-cn/index.html

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

5.各种注册中心比较

image.png
据说 Nacos 在阿里巴巴内部有超过 10 万的实例运行,已经过了类似双十一等各种大型流量的考验

二、安装并运行Nacos

1. 先从官网下载Nacos

https://github.com/alibaba/nacos/releases
image.png

2. 解压安装包,直接运行bin目录下的startup.cmd

image.png

3. 命令运行成功后直接访问http://localhost:8848/nacos

默认账号密码都是nacos

4. 结果页面

image.png

三、Nacos作为服务注册中心演示

1. 官网文档

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_config

2.基于Nacos的服务提供者

2.1 新建Module(cloudalibaba-provider-payment9001)

2.2 POM

2.2.1 父POM

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.atguigu.springcloud</groupId>
  6. <artifactId>mscloud</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <modules>
  10. <module>cloud-eureka-server7001</module>
  11. <module>cloud-eureka-server7002</module>
  12. <module>cloud-eureka-server7003</module>
  13. <module>cloud-provider-payment8001</module>
  14. <module>cloud-provider-payment8002</module>
  15. <module>cloud-providerzk-server8004</module>
  16. <module>cloud-providerzk-server8005</module>
  17. <module>cloud-consumer-order80</module>
  18. <module>cloud-consumerzk-order81</module>
  19. <module>cloud-providerconsul-payment8006</module>
  20. <module>cloud-consumerconsul-order82</module>
  21. <module>cloud-providerconsul-payment8007</module>
  22. <module>cloud-provider-payment8003</module>
  23. <module>cloud-consumer-feign-order80</module>
  24. <module>cloud-provider-hystrix-payment8001</module>
  25. <module>cloud-consumer-hystrix-dashboard9001</module>
  26. <module>cloud-zuul-gateway9527</module>
  27. <module>cloud-provider-sms8008</module>
  28. <module>mytest</module>
  29. <module>cloud-config-center-3344</module>
  30. <module>cloud-config-client-3355</module>
  31. <module>cloud-conumser-feign-order2001</module>
  32. <module>cloud-provider-hystrix-payment2701</module>
  33. <module>cloud-provider-hystrix-payment2702</module>
  34. <module>cloud-config-client-3366</module>
  35. <module>cloud-stream-rabbitmq-provider8801</module>
  36. <module>cloud-stream-rabbitmq-consumer8802</module>
  37. <module>cloud-gateway-gateway9588</module>
  38. <module>cloudalibaba-provider-payment9001</module>
  39. <module>cloudalibaba-provider-payment9002</module>
  40. </modules>
  41. <properties>
  42. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  43. <maven.compiler.source>1.8</maven.compiler.source>
  44. <maven.compiler.target>1.8</maven.compiler.target>
  45. <junit.version>4.12</junit.version>
  46. <log4j.version>1.2.17</log4j.version>
  47. <lombok.version>1.16.18</lombok.version>
  48. </properties>
  49. <dependencyManagement>
  50. <dependencies>
  51. <dependency>
  52. <groupId>org.springframework.boot</groupId>
  53. <artifactId>spring-boot-dependencies</artifactId>
  54. <version>2.1.9.RELEASE</version>
  55. <type>pom</type>
  56. <scope>import</scope>
  57. </dependency>
  58. <dependency>
  59. <groupId>org.springframework.cloud</groupId>
  60. <artifactId>spring-cloud-dependencies</artifactId>
  61. <version>Greenwich.SR3</version>
  62. <type>pom</type>
  63. <scope>import</scope>
  64. </dependency>
  65. <dependency>
  66. <groupId>com.alibaba.cloud</groupId>
  67. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  68. <version>2.1.0.RELEASE</version>
  69. <type>pom</type>
  70. <scope>import</scope>
  71. </dependency>
  72. <dependency>
  73. <groupId>mysql</groupId>
  74. <artifactId>mysql-connector-java</artifactId>
  75. <version>5.1.47</version>
  76. </dependency>
  77. <dependency>
  78. <groupId>com.alibaba</groupId>
  79. <artifactId>druid</artifactId>
  80. <version>1.1.16</version>
  81. </dependency>
  82. <dependency>
  83. <groupId>org.mybatis.spring.boot</groupId>
  84. <artifactId>mybatis-spring-boot-starter</artifactId>
  85. <version>1.3.0</version>
  86. </dependency>
  87. <dependency>
  88. <groupId>junit</groupId>
  89. <artifactId>junit</artifactId>
  90. <version>${junit.version}</version>
  91. </dependency>
  92. <dependency>
  93. <groupId>log4j</groupId>
  94. <artifactId>log4j</artifactId>
  95. <version>${log4j.version}</version>
  96. </dependency>
  97. <dependency>
  98. <groupId>org.projectlombok</groupId>
  99. <artifactId>lombok</artifactId>
  100. <version>${lombok.version}</version>
  101. <optional>true</optional>
  102. </dependency>
  103. </dependencies>
  104. </dependencyManagement>
  105. <build>
  106. <plugins>
  107. <plugin>
  108. <groupId>org.springframework.boot</groupId>
  109. <artifactId>spring-boot-maven-plugin</artifactId>
  110. <configuration>
  111. <fork>true</fork>
  112. <addResources>true</addResources>
  113. </configuration>
  114. </plugin>
  115. </plugins>
  116. </build>
  117. </project>

2.2.2 本模块POM


<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <artifactId>mscloud</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-provider-payment9001</artifactId>

    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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>
        </dependency>
    </dependencies>
</project>

3.YML

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

4.主启动

package com.atgugu.cloudalibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


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

5.业务类


package com.atgugu.cloudalibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

6.测试

http://localhost:9001/payment/nacos/1

7.1 nacos控制台

image.png
nacos服务注册中心+服务提供者9001都OK了

7. 为了下一章节演示nacos的负载均衡,参照9001新建9002

7.1 新建cloudalibaba-provider-payment9002

7.2 9002其它步骤你懂的(同9001)

7.3 或者取巧不想新建重复体力劳动,直接拷贝虚拟端口映射

image.png
image.png
image.png

3. 基于Nacos的服务消费者

3.1 新建Module(cloudalibaba-consumer-nacos-order83)

3.2 POM

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mscloud03</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-consumer-nacos-order83</artifactId>



    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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>
        </dependency>
    </dependencies>
</project>

为什么nacos支持负载均衡?
image.png

3.3 YML

server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3.4 主启动

package com.atguigu.springcloud.alibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


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

3.5 业务类


package com.atgugu.cloudalibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

3.5.1 ApplicationContextBean

package com.atguigu.springcloud.alibaba.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextBean
{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

3.5.2 OrderNacosController

package com.atguigu.springcloud.alibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;


@RestController
public class OrderNacosController
{
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }

}

3.6.测试

3.6.1 nacos控制台

image.png
http://localhost:83/consumer/payment/nacos/13

83访问9001/9002,轮询负载OK

4、服务注册中心对比

4.1 Nacos全景图所示

image.png

4.2 Nacos和CAP

image.png
image.png

4.3 Nacos 支持AP和CP模式的切换


C是所有节点在同一时间看到的数据是一致的;而A的定义是所有的请求都会收到响应。


何时选择使用何种模式?
一般来说,
如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring cloud 和 Dubbo 服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。

如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须,K8S服务和DNS服务则适用于CP模式。
CP模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。


curl -X PUT ‘$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’

四、Nacos作为服务配置中心演示

1.Nacos作为配置中心-基础配置

1.1 cloudalibaba-config-nacos-client3377

1.2 POM

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mscloud03</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-config-nacos-client3377</artifactId>



    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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>
        </dependency>
    </dependencies>
</project>

1.3 YML

1.3.1 why配置两个

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,
拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

1.3.2 YML

bootstrap

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

application


spring:
  profiles:
    active: dev # 表示开发环境

1.4 主启动

package com.atguigu.springcloud.alibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


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

1.5 业务类

1.5.1 ConfigClientController

@RefreshScope
image.png

package com.atguigu.springcloud.alibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

1.6 在Nacos中添加配置信息

1.6.1 Nacos中的匹配规则

1.6.1.1 理论

(1) Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则
(2) 官网
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
image.png
最后公式:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

1.6.1.2 实操

(1) 配置新增
nacos-config-client-dev
image.png
(2) Nacos界面配置对应

  1. 设置DataId
    1. 公式:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
    2. prefix 默认为 spring.application.name 的值
    3. spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。
    4. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置
    5. 小总结说明

image.png
(3) 历史配置
Nacos会记录配置文件的历史版本默认保留30天,此外还有一键回滚功能,回滚操作将会触发配置更新
回滚
image.png

1.6.2 测试

  1. 启动前需要在nacos客户端-配置管理-配置管理栏目下有对应的yaml配置文件
  2. 运行cloud-config-nacos-client3377的主启动类
  3. 调用接口查看配置信息

    1. http://localhost:3377/config/info

      1.6.3 自带动态刷新

      修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新

      2.Nacos作为配置中心-分类配置

      2.1 问题

      多环境多项目管理

      问题1:
      实际开发中,通常一个系统会准备
      dev开发环境
      test测试环境
      prod生产环境。
      如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

      问题2:
      一个大型分布式微服务系统会有很多微服务子项目,
      每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境……
      那怎么对这些微服务配置进行管理呢?

      2.2 Nacos的图形化管理界面

      2.2.1 配置管理

      image.png

      2.2.2 命名空间

      image.png

      2.3 Namespace+Group+Data ID三者关系?为什么这么设计?

      1 是什么
      类似Java里面的package名和类名
      最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。
      2 三者情况
      image.png
      默认情况:
      Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT

      Nacos默认的命名空间是public,Namespace主要用来实现隔离。
      比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

      Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去

      Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。
      比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,
      这时就可以给杭州机房的Service微服务起一个集群名称(HZ),
      给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。

      最后是Instance,就是微服务的实例。

      2.4 三种方案加载配置

      2.4.1 DataID方案

  4. 指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

  5. 默认空间+默认分组+新建dev和test两个DataID
    1. 新建dev配置DataID

image.png

  1. 新建test配置DataID

image.png

  1. 通过spring.profile.active属性就能进行多环境下配置文件的读取

image.png

  1. 测试

http://localhost:3377/config/info
配置是什么就加载什么—-test

2.4.2 Group方案

  1. 在nacos图形界面控制台上面新建配置文件DataID

image.png

  1. bootstrap+application

在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST_GROUP
image.png

2.4.3 Namespace方案

  1. 新建dev/test的Namespace

image.png

  1. 回到服务管理-服务列表查看

image.png

  1. 按照域名配置填写

image.png

  1. YML
    1. bootstrap ```yaml

nacos注册中心

server: port: 3377

spring: application: name: nacos-order cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服务注册中心地址 config: server-addr: localhost:8848 #Nacos作为配置中心地址 file-extension: yaml #这里我们获取的yaml格式的配置 namespace: 5da1dccc-ee26-49e0-b8e5-7d9559b95ab0

    #group: DEV_GROUP
    group: TEST_GROUP

   2. application
```yaml
# Nacos注册配置,application.yml
spring:
  profiles:
    #active: test
    active: dev
    #active: info